diff --git a/legacy/evas/src/bin/evas_test_main.c b/legacy/evas/src/bin/evas_test_main.c index e098305216..cdab2918be 100644 --- a/legacy/evas/src/bin/evas_test_main.c +++ b/legacy/evas/src/bin/evas_test_main.c @@ -2046,10 +2046,10 @@ setup(void) int iw, ih; evas_font_path_prepend(evas, FN); - // evas_image_cache_set(evas, 1024 * 1024); - // evas_font_cache_set(evas, 256 * 1024); - evas_image_cache_set(evas, 0); - evas_font_cache_set(evas, 0); + evas_image_cache_set(evas, 2048 * 1024); + evas_font_cache_set(evas, 1024 * 1024); +// evas_image_cache_set(evas, 0); +// evas_font_cache_set(evas, 0); ob = evas_object_image_add(evas); evas_object_image_file_set(ob, IM "backdrop.png", NULL); diff --git a/legacy/evas/src/lib/engines/common/evas_font_draw.c b/legacy/evas/src/lib/engines/common/evas_font_draw.c index c986ceac7e..582d0c2ab2 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_draw.c +++ b/legacy/evas/src/lib/engines/common/evas_font_draw.c @@ -104,6 +104,9 @@ evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr); if (gl == 0) break; index = FT_Get_Char_Index(fn->src->ft.face, gl); + /* hmmm kerning means i can't sanely do my own cached metric tables! */ + /* grrr - this means font face sharing is kinda... not an option if */ + /* you want performance */ if ((use_kerning) && (prev_index) && (index)) { FT_Vector delta; diff --git a/legacy/evas/src/lib/engines/common/evas_font_load.c b/legacy/evas/src/lib/engines/common/evas_font_load.c index 58dd187846..ebc36e3feb 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_load.c +++ b/legacy/evas/src/lib/engines/common/evas_font_load.c @@ -77,7 +77,14 @@ RGBA_Font_Source * evas_common_font_source_find(const char *name) { Evas_Object_List *l; - + +#if 1 + /* this effectively disables sharing out loaded outlines between */ + /* multiple sizes of the same font. because FT_Set_Char_Size() needs */ + /* to be called to update the fonts size output and caluclations */ + /* for a different face size, but this can be SLOOOW */ + return NULL; +#endif if (!name) return NULL; for (l = fonts_src; l; l = l->next) { @@ -113,6 +120,7 @@ void evas_common_font_size_use(RGBA_Font *fn) { if (fn->src->current_size == fn->real_size) return; + /* This call is evil and SLOW! */ FT_Set_Char_Size(fn->src->ft.face, 0, fn->real_size, 96, 96); fn->src->current_size = fn->real_size; } @@ -173,11 +181,11 @@ evas_common_font_load_init(RGBA_Font *fn) int error; fn->real_size = fn->size * 64; - error = FT_Set_Char_Size(fn->src->ft.face, 0, (fn->size * 64), 96, 96); + error = FT_Set_Char_Size(fn->src->ft.face, 0, fn->real_size, 96, 96); if (error) { - error = FT_Set_Pixel_Sizes(fn->src->ft.face, 0, fn->size); fn->real_size = fn->size; + error = FT_Set_Pixel_Sizes(fn->src->ft.face, 0, fn->real_size); } if (error) { @@ -202,12 +210,12 @@ evas_common_font_load_init(RGBA_Font *fn) } if (d == 0) break; } - error = FT_Set_Pixel_Sizes(fn->src->ft.face, chosen_width, chosen_size); + fn->real_size = chosen_size; + error = FT_Set_Pixel_Sizes(fn->src->ft.face, chosen_width, fn->real_size); if (error) { /* couldn't choose the size anyway... what now? */ } - fn->real_size = chosen_size; } fn->src->current_size = fn->real_size; diff --git a/legacy/evas/src/lib/engines/common/evas_font_main.c b/legacy/evas/src/lib/engines/common/evas_font_main.c index 9442935330..e835981369 100644 --- a/legacy/evas/src/lib/engines/common/evas_font_main.c +++ b/legacy/evas/src/lib/engines/common/evas_font_main.c @@ -34,6 +34,7 @@ evas_common_font_ascent_get(RGBA_Font *fn) int val; int ret; + evas_common_font_size_use(fn); val = (int)fn->src->ft.face->ascender; fn->src->ft.face->units_per_EM = 2048; /* nasy hack - need to have correct val */ ret = (val * fn->src->ft.face->size->metrics.y_scale) / (fn->src->ft.face->units_per_EM * fn->src->ft.face->units_per_EM);