From 49a1b2e5df95b3077c79e94d502e4441ca080cb7 Mon Sep 17 00:00:00 2001 From: spycrab Date: Sun, 6 May 2018 01:23:13 +0200 Subject: [PATCH] Qt/Win32: Use better method to obtain the default font --- Source/Core/DolphinQt2/Main.cpp | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/Source/Core/DolphinQt2/Main.cpp b/Source/Core/DolphinQt2/Main.cpp index 4dca310148..6b1dda6f78 100644 --- a/Source/Core/DolphinQt2/Main.cpp +++ b/Source/Core/DolphinQt2/Main.cpp @@ -5,6 +5,8 @@ #ifdef _WIN32 #include #include + +#include "Common/StringUtil.h" #endif #include @@ -94,14 +96,27 @@ int main(int argc, char* argv[]) QApplication app(argc, argv); #ifdef _WIN32 - // Force the default font to Segoe UI on Windows - QFont font = QApplication::font(); - font.setFamily(QStringLiteral("Segoe UI")); + // Get the default system font because Qt's way of obtaining it is outdated + NONCLIENTMETRICS metrics = {}; + auto& logfont = metrics.lfMenuFont; + metrics.cbSize = sizeof(NONCLIENTMETRICS); - // The default font size is a bit too small - font.setPointSize(QFontInfo(font).pointSize() * 1.2); + if (SystemParametersInfo(SPI_GETNONCLIENTMETRICS, sizeof(metrics), &metrics, 0)) + { + // Sadly Qt 5 doesn't support turning a native font handle into a QFont so this is the next best + // thing + QFont font = QApplication::font(); + font.setFamily(QString::fromStdString(UTF16ToUTF8(logfont.lfFaceName))); + font.setWeight(logfont.lfWeight); + font.setItalic(logfont.lfItalic); + font.setStrikeOut(logfont.lfStrikeOut); + font.setUnderline(logfont.lfUnderline); - QApplication::setFont(font); + // The default font size is a bit too small + font.setPointSize(QFontInfo(font).pointSize() * 1.2); + + QApplication::setFont(font); + } #endif auto parser = CommandLineParse::CreateParser(CommandLineParse::ParserOptions::IncludeGUIOptions);