evas: round glyph's advance before adding it to pen_x 85/126885/1
authorYoungbok Shin <youngb.shin@samsung.com>
Sun, 23 Apr 2017 06:22:42 +0000 (09:22 +0300)
committerYoungbok Shin <youngb.shin@samsung.com>
Tue, 25 Apr 2017 08:06:27 +0000 (17:06 +0900)
Summary:
Rounding the sum of glyph's advance could cause inconsistency of
each glyph's positions. When Evas enables Harfbuzz library,
Each glyph's position has to be handled by only nearby glyphs.
But, currently, totally unrelated glyph's advacne could change
other glyphs positions.

ex) 1. "connect."
    2. "Tap here to connect."

You can see different gap between "c" and "o" of word "connect".
It should be same even if there was a different text before the word "connect".
@fix

Test Plan: N/A

Reviewers: raster, herdsman, jpeg

Reviewed By: raster

Subscribers: cedric

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

Change-Id: I6124eeb7cbe48f355dd5628a84e87a03b4a2b261

src/lib/evas/common/evas_font_ot.c

index 3c4d4db4aa6576589dd79af4b9371b90f4862766..9faf3527ac72a808758830c54949b07f8203f7cb 100644 (file)
@@ -321,8 +321,8 @@ evas_common_font_ot_populate_text_props(const Eina_Unicode *text,
         gl_itr->index = infos->codepoint;
         adv = positions->x_advance;
 
-        pen_x += adv;
-        gl_itr->pen_after = EVAS_FONT_ROUND_26_6_TO_INT(pen_x);
+        pen_x += EVAS_FONT_ROUND_26_6_TO_INT(adv);
+        gl_itr->pen_after = pen_x;
 
         ot_itr++;
         gl_itr++;