diff options
author | Youngbok Shin <youngb.shin@samsung.com> | 2017-09-25 18:35:23 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2017-09-26 11:31:31 +0900 |
commit | 4d4401f3a60024a0762393c3984065b73927eb86 (patch) | |
tree | 1bfab6e3edb1e01db0e75c001d2d345528a9e958 | |
parent | 17504106501cec1a0a85eb380c5dea7e0ca3729c (diff) | |
download | efl-4d4401f3a60024a0762393c3984065b73927eb86.tar.gz |
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
-rw-r--r-- | src/lib/evas/canvas/evas_object_textblock.c | 54 |
1 files 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); } /** |