summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoungbok Shin <youngb.shin@samsung.com>2017-09-25 18:35:23 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-09-26 11:31:31 +0900
commit4d4401f3a60024a0762393c3984065b73927eb86 (patch)
tree1bfab6e3edb1e01db0e75c001d2d345528a9e958
parent17504106501cec1a0a85eb380c5dea7e0ca3729c (diff)
downloadefl-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.c54
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);
}
/**