diff options
author | Bram Moolenaar <Bram@vim.org> | 2016-08-14 20:27:34 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2016-08-14 20:27:34 +0200 |
commit | 16350cb97914bc86320185a9910b23c2b297d273 (patch) | |
tree | 20954cc9ad1f7407ede053a3db7ecd1618726ec9 /src/gui_gtk_x11.c | |
parent | 58b853460add42098ab08017df9e030fb14fd34b (diff) | |
download | vim-git-16350cb97914bc86320185a9910b23c2b297d273.tar.gz |
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)
Diffstat (limited to 'src/gui_gtk_x11.c')
-rw-r--r-- | src/gui_gtk_x11.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c index a53fa12d2..ee73db339 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; } |