evas: don't search other fonts only for INHERITED script unicodes 80/149480/1
authorYoungbok Shin <youngb.shin@samsung.com>
Mon, 11 Sep 2017 05:52:03 +0000 (08:52 +0300)
committerYoungbok Shin <youngb.shin@samsung.com>
Tue, 12 Sep 2017 09:23:31 +0000 (18:23 +0900)
Summary:
INHERITED script unicodes are only meaningful when it comes
after the previous unicode from same font.
Even if there is no glyph for the INHERTED script unicode from current font,
don't search other font for loading the unicdoe as first unicode
of next item. It will be meaningless.
@fix

Test Plan:
Check the following Emoji sequence with an emoji font
which does not have variation selector glyphs.
{ 0x1F3F3, 0xFE0F, 0x200D, 0x1F308 }

Reviewers: raster, cedric, herdsman, jpeg, woohyun

Reviewed By: herdsman

Differential Revision: https://phab.enlightenment.org/D5156

Change-Id: Id67be086ac4d471be04721835be5bae328d0fefd

src/lib/evas/common/evas_font_query.c

index d1eca54..7f38600 100644 (file)
@@ -77,6 +77,12 @@ evas_common_font_query_run_font_end_get(RGBA_Font *fn, RGBA_Font_Int **script_fi
               * the meanwhile. */
              if (*itr <= 0x1F)
                 continue;
+
+             /* Skip searching font for INHERITED script unicodes.
+              * It is meaningful when only it comes after other unicodes from same font. */
+             if (evas_common_language_char_script_get(*itr) == EVAS_SCRIPT_INHERITED)
+                continue;
+
              /* Break if either it's not in the font, or if it is in the
               * script's font. */
              if (!evas_common_get_char_index(fi, *itr))