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);
 }
 
 /**

-- 


Reply via email to