0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 7.4.1705

Problem:    The 'guifont' option does not allow for a quality setting.
Solution:   Add the "q" item, supported on MS-Windows. (Yasuhiro Matsumoto)
This commit is contained in:
Bram Moolenaar
2016-04-03 22:08:05 +02:00
parent 3dda7db4e1
commit 7c1c6dbb68
5 changed files with 80 additions and 3 deletions

View File

@@ -2689,6 +2689,33 @@ charset_pairs[] =
{NULL, 0}
};
struct quality_pair
{
char *name;
DWORD quality;
};
static struct quality_pair
quality_pairs[] = {
#ifdef CLEARTYPE_QUALITY
{"CLEARTYPE", CLEARTYPE_QUALITY},
#endif
#ifdef ANTIALIASED_QUALITY
{"ANTIALIASED", ANTIALIASED_QUALITY},
#endif
#ifdef NOANTIALIASED_QUALITY
{"NOANTIALIASED", NOANTIALIASED_QUALITY},
#endif
#ifdef PROOF_QUALITY
{"PROOF", PROOF_QUALITY},
#endif
#ifdef PROOF_QUALITY
{"DRAFT", DRAFT_QUALITY},
#endif
{"DEFAULT", DEFAULT_QUALITY},
{NULL, 0}
};
/*
* Convert a charset ID to a name.
* Return NULL when not recognized.
@@ -2704,6 +2731,21 @@ charset_id2name(int id)
return cp->name;
}
/*
* Convert a quality ID to a name.
* Return NULL when not recognized.
*/
char *
quality_id2name(DWORD id)
{
struct quality_pair *qp;
for (qp = quality_pairs; qp->name != NULL; ++qp)
if (id == qp->quality)
break;
return qp->name;
}
static const LOGFONT s_lfDefault =
{
-12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
@@ -2985,6 +3027,26 @@ get_logfont(
}
break;
}
case 'q':
{
struct quality_pair *qp;
for (qp = quality_pairs; qp->name != NULL; ++qp)
if (STRNCMP(p, qp->name, strlen(qp->name)) == 0)
{
lf->lfQuality = qp->quality;
p += strlen(qp->name);
break;
}
if (qp->name == NULL && verbose)
{
vim_snprintf((char *)IObuff, IOSIZE,
_("E244: Illegal quality name \"%s\" in font name \"%s\""), p, name);
EMSG(IObuff);
break;
}
break;
}
default:
if (verbose)
{