summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-08-14 20:27:34 +0200
committerBram Moolenaar <Bram@vim.org>2016-08-14 20:27:34 +0200
commit16350cb97914bc86320185a9910b23c2b297d273 (patch)
tree20954cc9ad1f7407ede053a3db7ecd1618726ec9
parent58b853460add42098ab08017df9e030fb14fd34b (diff)
patch 7.4.2214v7.4.2214
Problem: A font that uses ligatures messes up the screen display. Solution: Put spaces between characters when building the glyph table. (based on a patch from Manuel Schiller)
-rw-r--r--src/gui_gtk_x11.c20
-rw-r--r--src/version.c2
2 files changed, 14 insertions, 8 deletions
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index a53fa12d2e..ee73db3390 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -5239,7 +5239,7 @@ static PangoEngineShape *default_shape_engine = NULL;
static void
ascii_glyph_table_init(void)
{
- char_u ascii_chars[128];
+ char_u ascii_chars[2 * 128];
PangoAttrList *attr_list;
GList *item_list;
int i;
@@ -5252,12 +5252,16 @@ ascii_glyph_table_init(void)
gui.ascii_glyphs = NULL;
gui.ascii_font = NULL;
- /* For safety, fill in question marks for the control characters. */
- for (i = 0; i < 32; ++i)
- ascii_chars[i] = '?';
- for (; i < 127; ++i)
- ascii_chars[i] = i;
- ascii_chars[i] = '?';
+ /* For safety, fill in question marks for the control characters.
+ * Put a space between characters to avoid shaping. */
+ for (i = 0; i < 128; ++i)
+ {
+ if (i >= 32 && i < 127)
+ ascii_chars[2 * i] = i;
+ else
+ ascii_chars[2 * i] = '?';
+ ascii_chars[2 * i + 1] = ' ';
+ }
attr_list = pango_attr_list_new();
item_list = pango_itemize(gui.text_context, (const char *)ascii_chars,
@@ -5946,7 +5950,7 @@ gui_gtk2_draw_string(int row, int col, char_u *s, int len, int flags)
for (i = 0; i < len; ++i)
{
- glyphs->glyphs[i] = gui.ascii_glyphs->glyphs[s[i]];
+ glyphs->glyphs[i] = gui.ascii_glyphs->glyphs[2 * s[i]];
glyphs->log_clusters[i] = i;
}
diff --git a/src/version.c b/src/version.c
index d618748c5b..e15fd97b39 100644
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2214,
+/**/
2213,
/**/
2212,