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
This commit is contained in:
Youngbok Shin 2017-09-25 18:35:23 +09:00 committed by Carsten Haitzler (Rasterman)
parent 1750410650
commit 4d4401f3a6
1 changed files with 24 additions and 32 deletions

View File

@ -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);
}
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 (asc > *ascent) *ascent = asc;
if (desc > *descent) *descent = desc;
}
if (fmt) _layout_format_ascent_descent_adjust(obj, ascent, descent, fmt);
}
/**