forked from enlightenment/efl
Revert "evas_textblock: pick textrun fonts"
This reverts commit 9b987c67e1
.
this breaks color emoji in terminology (evas textgrid).
This commit is contained in:
parent
04567a16db
commit
d9b9647a15
|
@ -17,7 +17,7 @@
|
||||||
* @return length of the run found.
|
* @return length of the run found.
|
||||||
*/
|
*/
|
||||||
EAPI int
|
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 EINA_UNUSED, 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, const Eina_Unicode *text, int run_len)
|
||||||
{
|
{
|
||||||
RGBA_Font_Int *fi = NULL;
|
RGBA_Font_Int *fi = NULL;
|
||||||
const Eina_Unicode *run_end = text + run_len;
|
const Eina_Unicode *run_end = text + run_len;
|
||||||
|
@ -26,7 +26,38 @@ evas_common_font_query_run_font_end_get(RGBA_Font *fn, RGBA_Font_Int **script_fi
|
||||||
/* If there's no current script_fi, find it first */
|
/* If there's no current script_fi, find it first */
|
||||||
if (!*script_fi)
|
if (!*script_fi)
|
||||||
{
|
{
|
||||||
fi = fn->fonts->data;
|
const Eina_Unicode *base_char = NULL;
|
||||||
|
/* 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;
|
||||||
|
|
||||||
*script_fi = fi;
|
*script_fi = fi;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4184,27 +4184,6 @@ EFL_START_TEST(evas_textblock_fit)
|
||||||
}
|
}
|
||||||
EFL_END_TEST;
|
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
|
#ifdef HAVE_HYPHEN
|
||||||
static void
|
static void
|
||||||
_hyphenation_width_stress(Evas_Object *tb, Evas_Textblock_Cursor *cur)
|
_hyphenation_width_stress(Evas_Object *tb, Evas_Textblock_Cursor *cur)
|
||||||
|
@ -5076,7 +5055,6 @@ void evas_test_textblock(TCase *tc)
|
||||||
tcase_add_test(tc, evas_textblock_delete);
|
tcase_add_test(tc, evas_textblock_delete);
|
||||||
tcase_add_test(tc, evas_textblock_obstacle);
|
tcase_add_test(tc, evas_textblock_obstacle);
|
||||||
tcase_add_test(tc, evas_textblock_fit);
|
tcase_add_test(tc, evas_textblock_fit);
|
||||||
tcase_add_test(tc, evas_textblock_textrun_font);
|
|
||||||
#ifdef HAVE_HYPHEN
|
#ifdef HAVE_HYPHEN
|
||||||
tcase_add_test(tc, evas_textblock_hyphenation);
|
tcase_add_test(tc, evas_textblock_hyphenation);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue