* @return length of the run found.
*/
EAPI int
-evas_common_font_query_run_font_end_get(RGBA_Font *fn, RGBA_Font_Int **script_fi, RGBA_Font_Int **cur_fi, Evas_Script_Type script, const Eina_Unicode *text, int run_len)
+evas_common_font_query_run_font_end_get(RGBA_Font *fn, RGBA_Font_Int **script_fi, RGBA_Font_Int **cur_fi, Evas_Script_Type script EINA_UNUSED, const Eina_Unicode *text, int run_len)
{
RGBA_Font_Int *fi = NULL;
const Eina_Unicode *run_end = text + run_len;
/* If there's no current script_fi, find it first */
if (!*script_fi)
{
- const Eina_Unicode *base_char = NULL;
-
- /* TIZEN_ONLY(20180221): Don't pick a script font based on COMMON/UNKNOWN script text. */
- /* It just skip searching font if the given script is not explicit script.
- * In this case, it will pick the top font as its script font. */
- if (((script) == EVAS_SCRIPT_UNKNOWN) || ((script) <= EVAS_SCRIPT_INHERITED))
- goto get_top_font;
- /* END */
-
- /* Skip common chars */
- for (base_char = text ;
- (base_char < run_end) &&
- (evas_common_language_char_script_get(*base_char) != script) ;
- base_char++)
- ;
- /* If counter reach variation sequence it is safe to pick default font */
- if(VAR_SEQ_SAFE(base_char) || (base_char != run_end && VAR_SEQ_SAFE((base_char+1)))) goto get_top_font;
-
- if (base_char == run_end) base_char = text;
-
- /* Find the first renderable char */
- while (base_char < run_end)
- {
- /* 0x1F is the last ASCII contral char, just a hack in
- * the meanwhile. */
- if ((*base_char > 0x1F) &&
- evas_common_font_glyph_search(fn, &fi, *base_char, 0, EVAS_FONT_SEARCH_OPTION_NONE))
- break;
- base_char++;
- }
-
-
- /* If everything else fails, at least try to find a font for the
- * replacement char */
- if (base_char == run_end)
- evas_common_font_glyph_search(fn, &fi, REPLACEMENT_CHAR, 0, EVAS_FONT_SEARCH_OPTION_NONE);
-get_top_font:
-
- if (!fi)
- fi = fn->fonts->data;
+ fi = fn->fonts->data;
*script_fi = fi;
}
}
EFL_END_TEST;
+EFL_START_TEST(evas_textblock_textrun_font)
+{
+ START_TB_TEST();
+ int w1, h1, w2, h2;
+
+ evas_object_resize(tb, 300, 300);
+ evas_object_textblock_text_markup_set(tb, "가123A321");
+ evas_object_textblock_size_native_get(tb, &w1, &h1);
+ evas_object_textblock_text_markup_set(tb, "A321가123");
+ evas_object_textblock_size_native_get(tb, &w2, &h2);
+ ck_assert(w1==w2 && h1==h2);
+ evas_object_textblock_text_markup_set(tb, "123가A321");
+ evas_object_textblock_size_native_get(tb, &w2, &h2);
+ ck_assert(w1==w2 && h1==h2);
+ evas_object_textblock_text_markup_set(tb, "A가123321");
+ evas_object_textblock_size_native_get(tb, &w2, &h2);
+ ck_assert(w1==w2 && h1==h2);
+ END_TB_TEST();
+}
+EFL_END_TEST;
+
#ifdef HAVE_HYPHEN
static void
_hyphenation_width_stress(Evas_Object *tb, Evas_Textblock_Cursor *cur)
tcase_add_test(tc, evas_textblock_delete);
tcase_add_test(tc, evas_textblock_obstacle);
tcase_add_test(tc, evas_textblock_fit);
+ tcase_add_test(tc, evas_textblock_textrun_font);
#ifdef HAVE_HYPHEN
tcase_add_test(tc, evas_textblock_hyphenation);
#endif