0
0
mirror of https://github.com/vim/vim.git synced 2025-09-29 04:34:16 -04:00

patch 8.2.4194: MS-Windows: code for calculating font size is duplicated

Problem:    MS-Windows: code for calculating font size is duplicated.
Solution:   Move the code to a function. (Ken Takata, closes #9603)
This commit is contained in:
K.Takata
2022-01-23 16:25:17 +00:00
committed by Bram Moolenaar
parent f4e88f2152
commit abe628e1bd
2 changed files with 20 additions and 15 deletions

View File

@@ -1510,6 +1510,20 @@ update_scrollbar_size(void)
gui.scrollbar_height = pGetSystemMetricsForDpi(SM_CYHSCROLL, s_dpi);
}
/*
* Get the average character size of a font.
*/
static void
GetAverageFontSize(HDC hdc, SIZE *size)
{
// GetTextMetrics() may not return the right value in tmAveCharWidth
// for some fonts. Do our own average computation.
GetTextExtentPoint(hdc,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
52, size);
size->cx = (size->cx / 26 + 1) / 2;
}
/*
* Get the character size of a font.
*/
@@ -1523,13 +1537,9 @@ GetFontSize(GuiFont font)
TEXTMETRIC tm;
GetTextMetrics(hdc, &tm);
// GetTextMetrics() may not return the right value in tmAveCharWidth
// for some fonts. Do our own average computation.
GetTextExtentPoint(hdc,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
52, &size);
gui.char_width = (size.cx / 26 + 1) / 2 + tm.tmOverhang;
GetAverageFontSize(hdc, &size);
gui.char_width = size.cx + tm.tmOverhang;
gui.char_height = tm.tmHeight + p_linespace;
SelectFont(hdc, hfntOld);
@@ -7563,17 +7573,10 @@ get_dialog_font_metrics(void)
hdc = GetDC(s_hwnd);
SelectObject(hdc, hfontTools);
/*
* GetTextMetrics() doesn't return the right value in
* tmAveCharWidth, so we have to figure out the dialog base units
* ourselves.
*/
GetTextExtentPoint(hdc,
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
52, &size);
GetAverageFontSize(hdc, &size);
ReleaseDC(s_hwnd, hdc);
s_dlgfntwidth = (WORD)((size.cx / 26 + 1) / 2);
s_dlgfntwidth = (WORD)size.cx;
s_dlgfntheight = (WORD)size.cy;
}

View File

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