diff options
author | Ali Alzyod <ali198724@gmail.com> | 2020-08-18 19:15:12 +0900 |
---|---|---|
committer | WooHyun Jung <wh0705.jung@samsung.com> | 2020-08-18 19:15:12 +0900 |
commit | eed4068fa2a24693514a7713b779b7a84e803b85 (patch) | |
tree | c14166bfc30d7c641c526aa43f9e57b6bb1144e8 /src/lib/evas | |
parent | eb0f7183ddfdaa83b12e2cc0c7ee4b29f54b5a3e (diff) |
evas_textblock: myanmar script rendering with e vowel.
Summary: Resolve rendering e vowel (0x1031) with Myanmar(Burmese) with zero width non joiner (0x200C)
Test Plan: ninja test
Reviewers: woohyun, bowonryu
Reviewed By: bowonryu
Subscribers: cedric, #reviewers, #committers
Tags: #efl
Differential Revision: https://phab.enlightenment.org/D12102
Diffstat (limited to 'src/lib/evas')
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index 7a4a37134c..d50592cc5d 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c | |||
@@ -5436,6 +5436,27 @@ skip: | |||
5436 | 5436 | ||
5437 | script = evas_common_language_script_type_get(str, script_len); | 5437 | script = evas_common_language_script_type_get(str, script_len); |
5438 | 5438 | ||
5439 | /* FIXME Workaround for Burmese Vowel E Rendering, caused by bug in Harfbuzz | ||
5440 | breaking text run will fix the visual issue. | ||
5441 | */ | ||
5442 | if (script == EVAS_SCRIPT_MYANMAR && script_len > 1) | ||
5443 | { | ||
5444 | int i; | ||
5445 | for (i = 0 ; i < script_len - 1; i++) | ||
5446 | { | ||
5447 | if (str[i] == 0x200C) | ||
5448 | { | ||
5449 | if (str[i+1] == 0x1031) | ||
5450 | { | ||
5451 | cur_len += script_len; | ||
5452 | script_len = i + 1; | ||
5453 | cur_len -= script_len; | ||
5454 | break; | ||
5455 | } | ||
5456 | } | ||
5457 | } | ||
5458 | } | ||
5459 | |||
5439 | Evas_Object_Protected_Data *obj = efl_data_scope_get(c->obj, EFL_CANVAS_OBJECT_CLASS); | 5460 | Evas_Object_Protected_Data *obj = efl_data_scope_get(c->obj, EFL_CANVAS_OBJECT_CLASS); |
5440 | while (script_len > 0) | 5461 | while (script_len > 0) |
5441 | { | 5462 | { |