emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master bfeda89: * src/macfont.m (mac_font_shape): Make sur


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] master bfeda89: * src/macfont.m (mac_font_shape): Make sure that total_advance is increasing.
Date: Mon, 11 Jul 2016 04:37:28 +0000 (UTC)

branch: master
commit bfeda891a51178dd0032800ea4aef013c62bbe10
Author: YAMAMOTO Mitsuharu <address@hidden>
Commit: YAMAMOTO Mitsuharu <address@hidden>

    * src/macfont.m (mac_font_shape): Make sure that total_advance is 
increasing.
---
 src/macfont.m |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/macfont.m b/src/macfont.m
index 4e4daba..c799100 100644
--- a/src/macfont.m
+++ b/src/macfont.m
@@ -3767,6 +3767,7 @@ mac_font_shape (CTFontRef font, CFStringRef string,
             {
               struct mac_glyph_layout *gl;
               CGPoint position;
+             CGFloat max_x;
 
               if (!RIGHT_TO_LEFT_P)
                 gl = glbuf + range.location;
@@ -3788,12 +3789,13 @@ mac_font_shape (CTFontRef font, CFStringRef string,
               CTRunGetGlyphs (ctrun, range, &gl->glyph_id);
 
               CTRunGetPositions (ctrun, range, &position);
+             max_x = position.x + CTRunGetTypographicBounds (ctrun, range,
+                                                             NULL, NULL, NULL);
+             max_x = max (max_x, total_advance);
               gl->advance_delta = position.x - total_advance;
               gl->baseline_delta = position.y;
-              gl->advance = (gl->advance_delta
-                             + CTRunGetTypographicBounds (ctrun, range,
-                                                          NULL, NULL, NULL));
-              total_advance += gl->advance;
+              gl->advance = max_x - total_advance;
+              total_advance = max_x;
             }
 
           if (RIGHT_TO_LEFT_P)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]