woohyun pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=8143b81dd6b4e72a9018c9d900d69870dc898c6a
commit 8143b81dd6b4e72a9018c9d900d69870dc898c6a Author: Ali Alzyod <ali198...@gmail.com> Date: Thu Jan 23 16:21:22 2020 +0900 evas_object_textblock: treat variation sequence as single run Summary: Variation sequence treated as a single run, if we found one, we keep looking adding to the same run, but if it is not, then we need to start a new one. Before: {F3826735} After: {F3826736} Test Plan: ``` #include <stdio.h> #include <Elementary.h> /* gcc -o example test.c `pkg-config --cflags --libs elementary` */ EAPI_MAIN int elm_main(int argc EINA_UNUSED, char **argv EINA_UNUSED) { Evas_Object *win, *en; elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); win = elm_win_util_standard_add("emoji-example", "emoji-example"); elm_win_autodel_set(win, EINA_TRUE); en = elm_entry_add(win); elm_entry_scrollable_set(en, EINA_TRUE); evas_object_size_hint_weight_set(en, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_align_set(en, EVAS_HINT_FILL, EVAS_HINT_FILL); elm_object_text_set(en, "<font_size=25>☪☪️☪가</font_size>"); evas_object_show(en); elm_object_content_set(win, en); evas_object_resize(win, 400, 200); evas_object_show(win); elm_run(); return 0; } ELM_MAIN() ``` Reviewers: woohyun, bowonryu Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8542 Differential Revision: https://phab.enlightenment.org/D11096 --- src/lib/evas/common/evas_font_query.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/common/evas_font_query.c b/src/lib/evas/common/evas_font_query.c index bab7376621..640fc65b4c 100644 --- a/src/lib/evas/common/evas_font_query.c +++ b/src/lib/evas/common/evas_font_query.c @@ -68,6 +68,7 @@ get_top_font: /* Find the longest run of the same font starting from the start position * and update cur_fi accordingly. */ + Eina_Unicode variation_sequence = 0; itr = text; while (itr < run_end) { @@ -85,7 +86,17 @@ get_top_font: if (evas_common_language_char_script_get(*itr) == EVAS_SCRIPT_INHERITED) continue; - Eina_Unicode variation_sequence = VAR_SEQ_SAFE(itr+1); + if (!variation_sequence) + { + variation_sequence = VAR_SEQ_SAFE(itr+1); + } + else + { + /* Variation sequence treated as single run, if we found one, we keep looking adding to same + * run, but if it is not, then we need to start a new one */ + if (variation_sequence != VAR_SEQ_SAFE(itr+1)) + break; + } /* Break if either it's not in the font, or if it is in the * script's font. */ --