# HG changeset patch # User Bram Moolenaar # Date 1557262806 -7200 # Node ID 9a7d98e1195493ad824ee9f574181d9f2912e5b0 # Parent 7838221c524a9423cbd4bfc395a4119c451206a5 patch 8.1.1294: MS-Windows: Some fonts return wrong average char width commit https://github.com/vim/vim/commit/93d77b2cbec08518ee426d0c44c50cf505732443 Author: Bram Moolenaar Date: Tue May 7 22:52:50 2019 +0200 patch 8.1.1294: MS-Windows: Some fonts return wrong average char width Problem: MS-Windows: Some fonts return wrong average char width. Solution: Compute the average ourselves. (Ken Takata, closes https://github.com/vim/vim/issues/4356) diff --git a/src/gui_w32.c b/src/gui_w32.c --- a/src/gui_w32.c +++ b/src/gui_w32.c @@ -1455,10 +1455,16 @@ GetFontSize(GuiFont font) HWND hwnd = GetDesktopWindow(); HDC hdc = GetWindowDC(hwnd); HFONT hfntOld = SelectFont(hdc, (HFONT)font); + SIZE size; TEXTMETRIC tm; GetTextMetrics(hdc, &tm); - gui.char_width = tm.tmAveCharWidth + tm.tmOverhang; + // 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; gui.char_height = tm.tmHeight + p_linespace; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1294, +/**/ 1293, /**/ 1292,