Add System Font Name registry option

This commit is contained in:
Gábor Dobra 2022-01-18 00:34:58 +01:00
parent bec1e04dfa
commit 16fe9b0482
3 changed files with 12 additions and 6 deletions

View File

@ -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);

View File

@ -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<Languages>(get_int(nullptr, "Language", static_cast<int>(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<int>(Options.Language));
set_int(nullptr, "Target UPS", Options.TargetUps);
}

View File

@ -61,6 +61,7 @@ struct optionsStruct
bool AlternativeRender;
int TargetUps;
bool SystemFont;
char SystemFontName[LF_FACESIZE];
Languages Language;
};