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>&#x262a;&#x262a;&#xfe0f;&#x262a;가</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. */

-- 


Reply via email to