0
0
mirror of https://github.com/vim/vim.git synced 2025-09-27 04:14:06 -04:00

Fix: with newer GTK versions accented characters were drawn too much to the

left.
This commit is contained in:
Bram Moolenaar
2010-08-07 15:46:45 +02:00
parent 311dc17d96
commit 706e84b3ea
2 changed files with 12 additions and 18 deletions

View File

@@ -45,9 +45,6 @@ Patch to make more characters work in dialogs. (Yankwei Jia, 2010 Aug 4)
Should readfile() ignore BOM when not in binary mode? Should readfile() ignore BOM when not in binary mode?
GTK: accented characters are drawn one character too much to the left. (Boyko
Bantchev, 2010 Aug 5)
Bug: searching for tags file uses 'suffixesadd', should not happen. (Dominique Bug: searching for tags file uses 'suffixesadd', should not happen. (Dominique
Pelle, 2010 June 28) Pelle, 2010 June 28)

View File

@@ -4809,6 +4809,10 @@ setup_zero_width_cluster(PangoItem *item, PangoGlyphInfo *glyph,
glyph->geometry.y_offset = logical_rect.height glyph->geometry.y_offset = logical_rect.height
- (gui.char_height - p_linespace) * PANGO_SCALE; - (gui.char_height - p_linespace) * PANGO_SCALE;
} }
else
/* If the accent width is smaller than the cluster width, position it
* in the middle. */
glyph->geometry.x_offset = -width + MAX(0, width - ink_rect.width) / 2;
} }
static void static void
@@ -4989,9 +4993,6 @@ not_ascii:
int cluster_width; int cluster_width;
int last_glyph_rbearing; int last_glyph_rbearing;
int cells = 0; /* cells occupied by current cluster */ int cells = 0; /* cells occupied by current cluster */
#if 0
int monospace13 = STRICMP(p_guifont, "monospace 13") == 0;
#endif
/* Safety check: pango crashes when invoked with invalid utf-8 /* Safety check: pango crashes when invoked with invalid utf-8
* characters. */ * characters. */
@@ -5107,21 +5108,17 @@ not_ascii:
int width; int width;
/* There is a previous glyph, so we deal with combining /* There is a previous glyph, so we deal with combining
* characters the canonical way. That is, setting the * characters the canonical way.
* width of the previous glyph to 0. */ * Older versions of Pango used a positive x_offset,
glyphs->glyphs[i - 1].geometry.width = 0; * then set the width of the previous glyph to zero.
* Newer versions of Pango use a negative x_offset.
* For both adjust the x_offset to position the glyph in
* the middle. */
if (glyph->geometry.x_offset >= 0)
glyphs->glyphs[i - 1].geometry.width = 0;
width = cells * gui.char_width * PANGO_SCALE; width = cells * gui.char_width * PANGO_SCALE;
glyph->geometry.x_offset += glyph->geometry.x_offset +=
MAX(0, width - cluster_width) / 2; MAX(0, width - cluster_width) / 2;
#if 0
/* Dirty hack: for "monospace 13" font there is a bug that
* draws composing chars in the wrong position. Add
* "width" to the offset to work around that. */
if (monospace13)
glyph->geometry.x_offset = width;
#endif
glyph->geometry.width = width;
} }
else /* i == 0 "cannot happen" */ else /* i == 0 "cannot happen" */
{ {