evas textblock: fix top/bottom valign tag reversed issue 69/126169/1
authorYoungbok Shin <youngb.shin@samsung.com>
Tue, 4 Apr 2017 09:36:41 +0000 (18:36 +0900)
committerYoungbok Shin <youngb.shin@samsung.com>
Thu, 20 Apr 2017 09:27:45 +0000 (18:27 +0900)
Summary:
valign tag is for handling vertical align according to line's height and
text's height. But, it worked in a line which has only one font and
one font size, too. And the result was abnormal depending its font.
The line's height is [ascent + descent]. But, Textblock uses max ascent and
items's height(could be used max ascent + max descent according to its position)
when Textblock calculates item's yoff.
So, If Textblock calculate yoff based on line's height,
it should use only ascent and descent instead of max ascent and max descent.
@fix

Test Plan: Will attached in comment section.

Reviewers: raster, herdsman, jpeg, woohyun

Reviewed By: raster

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D4760

Change-Id: I05a552f230dc821d8d749fc05139967c7c82e81a

src/lib/evas/canvas/evas_object_textblock.c

index d596718..81840cc 100644 (file)
@@ -13025,10 +13025,14 @@ evas_object_textblock_render(Evas_Object *eo_obj EINA_UNUSED,
                             Evas_Object_Textblock_Text_Item *titr = \
                               (Evas_Object_Textblock_Text_Item *)itr; \
                             int ascent = 0; \
+                            int descent = 0; \
                             if (titr->text_props.font_instance) \
-                              ascent = evas_common_font_instance_max_ascent_get(titr->text_props.font_instance); \
+                              { \
+                                 ascent = evas_common_font_instance_ascent_get(titr->text_props.font_instance); \
+                                 descent = evas_common_font_instance_descent_get(titr->text_props.font_instance); \
+                              } \
                             yoff = ascent + \
-                              (itr->format->valign * (ln->h - itr->h)); \
+                              (itr->format->valign * (ln->h - (ascent + descent))); \
                          } \
                        else yoff = itr->format->valign * (ln->h - itr->h); \
                     } \