From: Enlightenment S. <no-...@en...> - 2011-03-29 13:52:36
|
Log: Evas font-engine: Use advance instead of width with whitespace size calc Advance is the real width of whitespace, not the width of the glyph which is just 0. Author: tasn Date: 2011-03-29 06:52:30 -0700 (Tue, 29 Mar 2011) New Revision: 58182 Trac: http://trac.enlightenment.org/e/changeset/58182 Modified: trunk/evas/src/lib/engines/common/evas_font_query.c Modified: trunk/evas/src/lib/engines/common/evas_font_query.c =================================================================== --- trunk/evas/src/lib/engines/common/evas_font_query.c 2011-03-29 13:52:22 UTC (rev 58181) +++ trunk/evas/src/lib/engines/common/evas_font_query.c 2011-03-29 13:52:30 UTC (rev 58182) @@ -74,6 +74,11 @@ if (!text_props->len) return 0; gli = text_props->info->glyph + text_props->start + text_props->len - 1; + /* If the last char is a whitespace, we use the advance as the size, + * so the right_inset is 0. */ + if (gli->width == 0) + return 0; + return EVAS_FONT_ROUND_26_6_TO_INT(gli->advance) - (gli->width + gli->x_bear #ifdef OT_SUPPORT @@ -109,7 +114,15 @@ } EVAS_FONT_WALK_TEXT_END(); - if (w) *w = prev_pen_x + keep_width; + /* If the last char is a whitespace, we use the advance as the size */ + if (keep_width > 0) + { + if (w) *w = prev_pen_x + keep_width; + } + else + { + if (w) *w = EVAS_FONT_WALK_PEN_X; + } if (h) *h = evas_common_font_max_ascent_get(fn) + evas_common_font_max_descent_get(fn); } |