1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-04-10 07:38:06 -05:00

Finally fixed the point/pixel confusion in font handling. Thanks to

Roman Surma for pointing me at the relevant bits of documentation. All
font sizes should now be measured in points, and everything should be
consistent, and (with any luck) old Registry settings should adapt
gracefully too.

[originally from svn r992]
This commit is contained in:
Simon Tatham 2001-03-12 12:24:07 +00:00
parent d823077f18
commit 313b332a38
3 changed files with 18 additions and 4 deletions

View File

@ -264,6 +264,18 @@ void load_settings (char *section, int do_host, Config *cfg) {
gppi (sesskey, "FontIsBold", 0, &cfg->fontisbold);
gppi (sesskey, "FontCharSet", ANSI_CHARSET, &cfg->fontcharset);
gppi (sesskey, "FontHeight", 10, &cfg->fontheight);
if (cfg->fontheight < 0) {
int oldh, newh;
HDC hdc = GetDC(NULL);
int logpix = GetDeviceCaps(hdc, LOGPIXELSY);
ReleaseDC(NULL, hdc);
oldh = -cfg->fontheight;
newh = MulDiv(oldh, 72, logpix) + 1;
if (MulDiv(newh, logpix, 72) > oldh)
newh--;
cfg->fontheight = newh;
}
gppi (sesskey, "FontVTMode", VT_OEMANSI, (int *)&cfg->vtmode);
gppi (sesskey, "TryPalette", 0, &cfg->try_palette);
gppi (sesskey, "BoldAsColour", 1, &cfg->bold_colour);

View File

@ -467,9 +467,8 @@ static void fmtfont (char *buf) {
if (cfg.fontheight == 0)
strcat (buf, "default height");
else
sprintf (buf+strlen(buf), "%d-%s",
(cfg.fontheight < 0 ? -cfg.fontheight : cfg.fontheight),
(cfg.fontheight < 0 ? "pixel" : "point"));
sprintf (buf+strlen(buf), "%d-point",
(cfg.fontheight < 0 ? -cfg.fontheight : cfg.fontheight));
}
static void init_dlg_ctrls(HWND hwnd) {
@ -1549,7 +1548,7 @@ static int GenericMainDlgProc (HWND hwnd, UINT msg,
cfg.font[sizeof(cfg.font)-1] = '\0';
cfg.fontisbold = (lf.lfWeight == FW_BOLD);
cfg.fontcharset = lf.lfCharSet;
cfg.fontheight = lf.lfHeight;
cfg.fontheight = cf.iPointSize / 10;
fmtfont (fontstatic);
SetDlgItemText (hwnd, IDC_FONTSTATIC, fontstatic);
}

View File

@ -808,6 +808,9 @@ font_messup:
hdc = GetDC(hwnd);
font_height = cfg.fontheight;
if (font_height > 0) {
font_height = -MulDiv(font_height, GetDeviceCaps(hdc, LOGPIXELSY), 72);
}
font_width = pick_width;
#define f(i,c,w,u) \