0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -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

@@ -1,4 +1,4 @@
*options.txt* For Vim version 7.4. Last change: 2016 Mar 24 *options.txt* For Vim version 7.4. Last change: 2016 Apr 03
VIM REFERENCE MANUAL by Bram Moolenaar VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1070,7 +1070,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Note that environment variables are not expanded. If you want to use Note that environment variables are not expanded. If you want to use
$HOME you must expand it explicitly, e.g.: > $HOME you must expand it explicitly, e.g.: >
:let backupskip = escape(expand('$HOME'), '\') . '/tmp/*' :let &backupskip = escape(expand('$HOME'), '\') . '/tmp/*'
< Note that the default also makes sure that "crontab -e" works (when a < Note that the default also makes sure that "crontab -e" works (when a
backup would be made by renaming the original file crontab won't see backup would be made by renaming the original file crontab won't see
@@ -3634,6 +3634,10 @@ A jump table for the options with a short description can be found at |Q_op|.
HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS, HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC. SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
Normally you would use "cDEFAULT". Normally you would use "cDEFAULT".
qXX - quality XX. Valid charsets are: PROOF, DRAFT,
ANTIALIASED, UNANTIALIASED, CLEARTYPE, DEFAULT.
Normally you would use "qDEFAULT".
Some quality values isn't supported in legacy OSs.
Use a ':' to separate the options. Use a ':' to separate the options.
- A '_' can be used in the place of a space, so you don't need to use - A '_' can be used in the place of a space, so you don't need to use

View File

@@ -3291,6 +3291,7 @@ logfont2name(LOGFONT lf)
char *p; char *p;
char *res; char *res;
char *charset_name; char *charset_name;
char *quality_name;
char *font_name = lf.lfFaceName; char *font_name = lf.lfFaceName;
charset_name = charset_id2name((int)lf.lfCharSet); charset_name = charset_id2name((int)lf.lfCharSet);
@@ -3304,6 +3305,8 @@ logfont2name(LOGFONT lf)
(char_u **)&font_name, &len); (char_u **)&font_name, &len);
} }
#endif #endif
quality_name = quality_id2name((int)lf.lfQuality);
res = (char *)alloc((unsigned)(strlen(font_name) + 20 res = (char *)alloc((unsigned)(strlen(font_name) + 20
+ (charset_name == NULL ? 0 : strlen(charset_name) + 2))); + (charset_name == NULL ? 0 : strlen(charset_name) + 2)));
if (res != NULL) if (res != NULL)
@@ -3331,6 +3334,11 @@ logfont2name(LOGFONT lf)
STRCAT(p, ":c"); STRCAT(p, ":c");
STRCAT(p, charset_name); STRCAT(p, charset_name);
} }
if (quality_name != NULL)
{
STRCAT(p, ":q");
STRCAT(p, quality_name);
}
} }
#ifdef FEAT_MBYTE #ifdef FEAT_MBYTE

View File

@@ -2689,6 +2689,33 @@ charset_pairs[] =
{NULL, 0} {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. * Convert a charset ID to a name.
* Return NULL when not recognized. * Return NULL when not recognized.
@@ -2704,6 +2731,21 @@ charset_id2name(int id)
return cp->name; 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 = static const LOGFONT s_lfDefault =
{ {
-12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET, -12, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE, DEFAULT_CHARSET,
@@ -2985,6 +3027,26 @@ get_logfont(
} }
break; 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: default:
if (verbose) if (verbose)
{ {

View File

@@ -49,6 +49,7 @@ void serverForeground(char_u *name);
char_u *serverGetReply(HWND server, int *expr_res, int remove, int wait); char_u *serverGetReply(HWND server, int *expr_res, int remove, int wait);
void serverProcessPendingMessages(void); void serverProcessPendingMessages(void);
char *charset_id2name(int id); char *charset_id2name(int id);
char *quality_id2name __ARGS((DWORD id));
int get_logfont(LOGFONT *lf, char_u *name, HDC printer_dc, int verbose); int get_logfont(LOGFONT *lf, char_u *name, HDC printer_dc, int verbose);
void channel_init_winsock(void); void channel_init_winsock(void);
/* vim: set ft=c : */ /* vim: set ft=c : */

View File

@@ -748,6 +748,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 */
/**/
1705,
/**/ /**/
1704, 1704,
/**/ /**/