raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=4d4401f3a60024a0762393c3984065b73927eb86
commit 4d4401f3a60024a0762393c3984065b73927eb86 Author: Youngbok Shin <[email protected]> Date: Mon Sep 25 18:35:23 2017 +0900 evas textblock: use primary font's size as minimum size of a line Summary: Textblock uses ascent, descent from primary font when there is no text. If a text is set which need other font, Textblock uses ascent, descent from actually loaded font. If loaded font has smaller size, text cursor and text looks jerky in elm_entry. At least, primary font's size should be respected as minimum size of a line for avoiding this issue. In addition, the patch will allow negative line gap values. @fix Test Plan: Put your hamburger(🍔) in Ecrire. And put an english character. (Put a text which will load smaller font. And put a text which will load primary font.) Reviewers: raster, cedric, herdsman, jpeg, woohyun Reviewed By: raster Differential Revision: https://phab.enlightenment.org/D5217 --- src/lib/evas/canvas/evas_object_textblock.c | 54 ++++++++++++----------------- 1 file changed, 23 insertions(+), 31 deletions(-) diff --git a/src/lib/evas/canvas/evas_object_textblock.c b/src/lib/evas/canvas/evas_object_textblock.c index c804522f21..d371ab00a9 100644 --- a/src/lib/evas/canvas/evas_object_textblock.c +++ b/src/lib/evas/canvas/evas_object_textblock.c @@ -2937,8 +2937,8 @@ _layout_format_ascent_descent_adjust(Evas_Object_Protected_Data *obj, } descent += fmt->linegap * obj->cur->scale; descent += ((ascent + descent) * fmt->linerelgap); - if (*maxascent < ascent) *maxascent = ascent; - if (*maxdescent < descent) *maxdescent = descent; + *maxascent = ascent; + *maxdescent = descent; if (fmt->linefill > 0.0) { int dh; @@ -2974,18 +2974,13 @@ _layout_item_max_ascent_descent_calc(Evas_Object_Protected_Data *obj, { Evas_Coord asc = 0; + *maxascent = ENFN->font_max_ascent_get(ENC, it->format->font.font); + if (fi) - { - asc = evas_common_font_instance_max_ascent_get(fi); - } - else - { - asc = ENFN->font_max_ascent_get(ENC, - it->format->font.font); - } + asc = evas_common_font_instance_max_ascent_get(fi); if (asc > *maxascent) - *maxascent = asc; + *maxascent = asc; } if ((position == TEXTBLOCK_POSITION_END) || @@ -2994,18 +2989,13 @@ _layout_item_max_ascent_descent_calc(Evas_Object_Protected_Data *obj, /* Calculate max descent. */ Evas_Coord desc = 0; + *maxdescent = ENFN->font_max_descent_get(ENC, it->format->font.font); + if (fi) - { - desc = evas_common_font_instance_max_descent_get(fi); - } - else - { - desc = ENFN->font_max_descent_get(ENC, - it->format->font.font); - } + desc = evas_common_font_instance_max_descent_get(fi); if (desc > *maxdescent) - *maxdescent = desc; + *maxdescent = desc; } } @@ -3042,23 +3032,25 @@ _layout_item_ascent_descent_adjust(Evas_Object_Protected_Data *obj, } } + if (fmt) + { + asc = ENFN->font_ascent_get(ENC, fmt->font.font); + desc = ENFN->font_descent_get(ENC, fmt->font.font); + + if (asc > *ascent) *ascent = asc; + if (desc > *descent) *descent = desc; + } + if (fi) { asc = evas_common_font_instance_ascent_get(fi); desc = evas_common_font_instance_descent_get(fi); + + if (asc > *ascent) *ascent = asc; + if (desc > *descent) *descent = desc; } - else - { - if (fmt) - { - asc = ENFN->font_ascent_get(ENC, fmt->font.font); - desc = ENFN->font_descent_get(ENC, fmt->font.font); - } - } - if (fmt) _layout_format_ascent_descent_adjust(obj, &asc, &desc, fmt); - if (asc > *ascent) *ascent = asc; - if (desc > *descent) *descent = desc; + if (fmt) _layout_format_ascent_descent_adjust(obj, ascent, descent, fmt); } /** --
