diff options
author | Ali Alzyod <ali198724@gmail.com> | 2020-01-23 16:21:22 +0900 |
---|---|---|
committer | WooHyun Jung <wh0705.jung@samsung.com> | 2020-01-23 16:21:22 +0900 |
commit | 8143b81dd6b4e72a9018c9d900d69870dc898c6a (patch) | |
tree | bfe85155d4e0032b1a620accd807da12909d8b03 | |
parent | 3d2f99af9eca265e0b166a2b9f2686e6ba3e9f83 (diff) | |
download | efl-8143b81dd6b4e72a9018c9d900d69870dc898c6a.tar.gz |
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
-rw-r--r-- | src/lib/evas/common/evas_font_query.c | 13 |
1 files changed, 12 insertions, 1 deletions
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. */ |