]> granicus.if.org Git - vim/commitdiff
Improve positioning of combining characters in GTK.
authorBram Moolenaar <Bram@vim.org>
Sun, 8 Aug 2010 12:40:37 +0000 (14:40 +0200)
committerBram Moolenaar <Bram@vim.org>
Sun, 8 Aug 2010 12:40:37 +0000 (14:40 +0200)
src/gui_gtk_x11.c

index 04b0ecb9d0b62b36940acde1b132553e4add0f27..2a4b520640477e447d8c91075ad4ec868bda3e2b 100644 (file)
@@ -5109,13 +5109,20 @@ not_ascii:
 
                    /* There is a previous glyph, so we deal with combining
                     * characters the canonical way.
-                    * Older versions of Pango used a positive x_offset,
-                    * then set the width of the previous glyph to zero.
-                    * Newer versions of Pango use a negative x_offset.
+                    * In some circumstances Pango uses a positive x_offset,
+                    * then use the width of the previous glyph for this one
+                    * and set the previous width to zero.
+                    * Otherwise we get a negative x_offset, Pango has already
+                    * positioned the combining char, keep the widths as they
+                    * are.
                     * For both adjust the x_offset to position the glyph in
-                    * the middle.  */
+                    * the middle. */
                    if (glyph->geometry.x_offset >= 0)
+                   {
+                       glyphs->glyphs[i].geometry.width =
+                                        glyphs->glyphs[i - 1].geometry.width;
                        glyphs->glyphs[i - 1].geometry.width = 0;
+                   }
                    width = cells * gui.char_width * PANGO_SCALE;
                    glyph->geometry.x_offset +=
                                            MAX(0, width - cluster_width) / 2;