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:
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user