patch 7.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)
This commit is contained in:
Bram Moolenaar
2016-08-14 20:27:34 +02:00
parent 58b853460a
commit 16350cb979
2 changed files with 14 additions and 8 deletions

View File

@ -5239,7 +5239,7 @@ static PangoEngineShape *default_shape_engine = NULL;
static void static void
ascii_glyph_table_init(void) ascii_glyph_table_init(void)
{ {
char_u ascii_chars[128]; char_u ascii_chars[2 * 128];
PangoAttrList *attr_list; PangoAttrList *attr_list;
GList *item_list; GList *item_list;
int i; int i;
@ -5252,12 +5252,16 @@ ascii_glyph_table_init(void)
gui.ascii_glyphs = NULL; gui.ascii_glyphs = NULL;
gui.ascii_font = NULL; gui.ascii_font = NULL;
/* For safety, fill in question marks for the control characters. */ /* For safety, fill in question marks for the control characters.
for (i = 0; i < 32; ++i) * Put a space between characters to avoid shaping. */
ascii_chars[i] = '?'; for (i = 0; i < 128; ++i)
for (; i < 127; ++i) {
ascii_chars[i] = i; if (i >= 32 && i < 127)
ascii_chars[i] = '?'; ascii_chars[2 * i] = i;
else
ascii_chars[2 * i] = '?';
ascii_chars[2 * i + 1] = ' ';
}
attr_list = pango_attr_list_new(); attr_list = pango_attr_list_new();
item_list = pango_itemize(gui.text_context, (const char *)ascii_chars, 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) 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; glyphs->log_clusters[i] = i;
} }

View File

@ -763,6 +763,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
2214,
/**/ /**/
2213, 2213,
/**/ /**/