From c74f2121d322d04738874c09e533e27e3266a6a9 Mon Sep 17 00:00:00 2001 From: ge0rdi Date: Mon, 22 May 2023 19:41:08 +0200 Subject: [PATCH] Properly round font size Use MulDiv for proper rounding to nearest integer. Fixes #1547. --- Src/Lib/ResourceHelper.cpp | 2 +- Src/Lib/SettingsUIHelper.cpp | 2 +- Src/StartMenu/StartMenuDLL/StartButton.cpp | 2 +- Src/Update/Update.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Src/Lib/ResourceHelper.cpp b/Src/Lib/ResourceHelper.cpp index 525facfbd..62a32fb8b 100644 --- a/Src/Lib/ResourceHelper.cpp +++ b/Src/Lib/ResourceHelper.cpp @@ -920,7 +920,7 @@ HFONT CreateFontSetting( const wchar_t *fontStr, int dpi ) weight=FW_BOLD, bItalic=true; str=GetToken(str,token,_countof(token),L", \t"); int size=-_wtol(token); - return CreateFont(size*dpi/72,0,0,0,weight,bItalic?1:0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,name); + return CreateFont(MulDiv(size,dpi,72),0,0,0,weight,bItalic?1:0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,name); } static UINT WINAPI GetDpiForWindow(HWND hwnd) diff --git a/Src/Lib/SettingsUIHelper.cpp b/Src/Lib/SettingsUIHelper.cpp index effb3f16a..9372677c5 100644 --- a/Src/Lib/SettingsUIHelper.cpp +++ b/Src/Lib/SettingsUIHelper.cpp @@ -2701,7 +2701,7 @@ LRESULT CTreeSettingsDlg::OnBrowse( WORD wNotifyCode, WORD wID, HWND hWndCtl, BO else if (_wcsicmp(token,L"bold_italic")==0) font.lfWeight=FW_BOLD, font.lfItalic=1; str=GetToken(str,token,_countof(token),L", \t"); - font.lfHeight=-(_wtol(token)*dpi+36)/72; + font.lfHeight=-MulDiv(_wtol(token),dpi,72); CHOOSEFONT choose={sizeof(choose),m_hWnd,NULL,&font}; choose.Flags=CF_NOSCRIPTSEL; diff --git a/Src/StartMenu/StartMenuDLL/StartButton.cpp b/Src/StartMenu/StartMenuDLL/StartButton.cpp index 0ea3dc601..39d07d419 100644 --- a/Src/StartMenu/StartMenuDLL/StartButton.cpp +++ b/Src/StartMenu/StartMenuDLL/StartButton.cpp @@ -144,7 +144,7 @@ LRESULT CStartButton::OnCreate( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& b m_Icon=(HICON)LoadImage(g_Instance,MAKEINTRESOURCE(IDI_APPICON),IMAGE_ICON,START_ICON_SIZE,START_ICON_SIZE,LR_DEFAULTCOLOR); } int dpi=CItemManager::GetDPI(false); - m_Font=CreateFont(10*dpi/72,0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,L"Tahoma"); + m_Font=CreateFont(MulDiv(10,dpi,72),0,0,0,FW_BOLD,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH,L"Tahoma"); int val=1; DwmSetWindowAttribute(m_hWnd,DWMWA_EXCLUDED_FROM_PEEK,&val,sizeof(val)); val=DWMFLIP3D_EXCLUDEABOVE; diff --git a/Src/Update/Update.cpp b/Src/Update/Update.cpp index c7f40e451..d7324a8d4 100644 --- a/Src/Update/Update.cpp +++ b/Src/Update/Update.cpp @@ -149,7 +149,7 @@ LRESULT CUpdateDlg::OnInitDialog( UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& HDC hdc=::GetDC(NULL); int dpi=GetDeviceCaps(hdc,LOGPIXELSY); ::ReleaseDC(NULL,hdc); - m_Font=CreateFont(-9*dpi/72,0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH,L"Consolas"); + m_Font=CreateFont(-MulDiv(9,dpi,72),0,0,0,FW_NORMAL,0,0,0,DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,FIXED_PITCH,L"Consolas"); if (m_Font) GetDlgItem(IDC_EDITTEXT).SetFont(m_Font); m_Tooltip.Create(TOOLTIPS_CLASS,m_hWnd,NULL,NULL,WS_POPUP|TTS_NOPREFIX);