]> code.delx.au - gnu-emacs/commitdiff
* src/macfont.m (mac_font_shape): Make sure that total_advance is increasing.
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Mon, 11 Jul 2016 04:35:57 +0000 (13:35 +0900)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Mon, 11 Jul 2016 04:35:57 +0000 (13:35 +0900)
src/macfont.m

index 4e4daba0707be9471ac10c379a9a8246de4fa210..c799100c8550823ac84311d5eae0f2f0c9474bec 100644 (file)
@@ -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)