From 16fe9b0482dc94e18d0d7fac25a20406902f1e39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A1bor=20Dobra?= Date: Tue, 18 Jan 2022 00:34:58 +0100 Subject: [PATCH] Add System Font Name registry option --- SpaceCadetPinball/gdrv.cpp | 15 +++++++++------ SpaceCadetPinball/options.cpp | 2 ++ SpaceCadetPinball/options.h | 1 + 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/SpaceCadetPinball/gdrv.cpp b/SpaceCadetPinball/gdrv.cpp index 072aef2..5766e93 100644 --- a/SpaceCadetPinball/gdrv.cpp +++ b/SpaceCadetPinball/gdrv.cpp @@ -473,7 +473,9 @@ void gdrv::choose_font() static const int fontSizes_WinMenu[3] = { 17, 21, 27 }; const char* system_font_filename = nullptr; - fontCharset = DEFAULT_CHARSET; + // Only System font requires non-default charset, + // and custom charsets may break other fonts (like WinMenu). + int systemFontCharset = DEFAULT_CHARSET; switch (options::Options.Language) { @@ -495,28 +497,28 @@ void gdrv::choose_font() break; case Languages::Greek: system_font_filename = "vgasysg.fon"; - fontCharset = GREEK_CHARSET; + systemFontCharset = GREEK_CHARSET; break; case Languages::Russian: system_font_filename = "vgasysr.fon"; - fontCharset = RUSSIAN_CHARSET; + systemFontCharset = RUSSIAN_CHARSET; break; case Languages::Turkish: system_font_filename = "vgasyst.fon"; - fontCharset = TURKISH_CHARSET; + systemFontCharset = TURKISH_CHARSET; break; case Languages::Danish: case Languages::Dutch: case Languages::Norwegian: case Languages::Swedish: system_font_filename = "vgasys.fon"; - fontCharset = DEFAULT_CHARSET; + systemFontCharset = DEFAULT_CHARSET; break; case Languages::Czech: case Languages::Hungarian: case Languages::Polish: system_font_filename = "vgasyse.fon"; - fontCharset = EASTEUROPE_CHARSET; + systemFontCharset = EASTEUROPE_CHARSET; break; default: system_font_filename = "vgasys.fon"; @@ -539,6 +541,7 @@ void gdrv::choose_font() { fontFamily = "System"; fontSizes = fontSizes_System; + fontCharset = systemFontCharset; std::string windir(MAX_PATH, '\0'); DWORD result = GetEnvironmentVariableA("WINDIR", &windir[0], MAX_PATH); diff --git a/SpaceCadetPinball/options.cpp b/SpaceCadetPinball/options.cpp index d5d5740..100bb51 100644 --- a/SpaceCadetPinball/options.cpp +++ b/SpaceCadetPinball/options.cpp @@ -140,6 +140,7 @@ void options::ReadOptions() Options.TargetUps = max(60, Options.TargetUps); Options.TargetUps = min(Options.TargetUps, 360); Options.SystemFont = get_int(nullptr, "System Font", false); + get_string(nullptr, "System Font Name", Options.SystemFontName, "", LF_FACESIZE); auto defaultLanguage = Languages::English; auto language = static_cast(get_int(nullptr, "Language", static_cast(defaultLanguage))); @@ -239,6 +240,7 @@ void options::uninit() set_int(nullptr, "Uniform scaling", Options.UniformScaling); set_int(nullptr, "Alternative Render", Options.AlternativeRender); set_int(nullptr, "System Font", Options.SystemFont); + set_string(nullptr, "System Font Name", Options.SystemFontName); set_int(nullptr, "Language", static_cast(Options.Language)); set_int(nullptr, "Target UPS", Options.TargetUps); } diff --git a/SpaceCadetPinball/options.h b/SpaceCadetPinball/options.h index e1b05c2..4d5b808 100644 --- a/SpaceCadetPinball/options.h +++ b/SpaceCadetPinball/options.h @@ -61,6 +61,7 @@ struct optionsStruct bool AlternativeRender; int TargetUps; bool SystemFont; + char SystemFontName[LF_FACESIZE]; Languages Language; };