diff --git a/legacy/evas/src/lib/engines/common/evas_font_ot.c b/legacy/evas/src/lib/engines/common/evas_font_ot.c index 3a77afec8d..e5306b69c5 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_ot.c +++ b/legacy/evas/src/lib/engines/common/evas_font_ot.c @@ -162,7 +162,17 @@ evas_common_font_ot_populate_text_props(void *_fn, const Eina_Unicode *text, fi->src->current_size = fi->size; } /* Load the font needed for this script */ - evas_common_font_glyph_search(fn, &fi, *text); + { + /* Skip common chars */ + const Eina_Unicode *tmp; + for (tmp = text ; + *tmp && + evas_common_language_char_script_get(*tmp) == EVAS_SCRIPT_COMMON ; + tmp++) + ; + if (!*tmp && (tmp > text)) tmp--; + evas_common_font_glyph_search(fn, &fi, *tmp); + } if (len < 0) { diff --git a/legacy/evas/src/lib/engines/common/evas_font_ot_walk.x b/legacy/evas/src/lib/engines/common/evas_font_ot_walk.x index 496f830cdd..5daec807f1 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_ot_walk.x +++ b/legacy/evas/src/lib/engines/common/evas_font_ot_walk.x @@ -24,7 +24,18 @@ prev_index = 0; \ /* Load the glyph according to the first letter of the script, preety * bad, but will have to do */ \ - evas_common_font_glyph_search(fn, &fi, *text); \ + { \ + /* Skip common chars */ \ + const Eina_Unicode *tmp; \ + for (tmp = text ; \ + *tmp && \ + evas_common_language_char_script_get(*tmp) == \ + EVAS_SCRIPT_COMMON ; \ + tmp++) \ + ; \ + if (!*tmp && (tmp > text)) tmp--; \ + evas_common_font_glyph_search(fn, &fi, *tmp); \ + } \ for (char_index = 0 ; char_index < intl_props->ot_data->len ; char_index++) \ { \ FT_UInt index; \ @@ -47,9 +58,19 @@ { \ int _char_index_d, _i; \ int visible; \ - /* Load the glyph according to the first letter of the script, preety - * bad, but will have to do */ \ - evas_common_font_glyph_search(fn, &fi, *text); \ + /* Load the font needed for this script */ \ + { \ + /* Skip common chars */ \ + const Eina_Unicode *tmp; \ + for (tmp = text ; \ + *tmp && \ + evas_common_language_char_script_get(*tmp) == \ + EVAS_SCRIPT_COMMON ; \ + tmp++) \ + ; \ + if (!*tmp && (tmp > text)) tmp--; \ + evas_common_font_glyph_search(fn, &fi, *tmp); \ + } \ prev_index = 0; \ _i = intl_props->ot_data->len; \ if (intl_props->bidi.dir == EVAS_BIDI_DIRECTION_RTL) \