From 818a90b7aa7e0a4aa9ed860cb310fcc468bd4f13 Mon Sep 17 00:00:00 2001 From: Lim Chunwei Date: Fri, 19 Nov 2021 13:25:46 +0800 Subject: [PATCH] East Asian font adjustments (#94) * Disable input method in game * Improve imm32.lib linking * East Asian font size adjustments * Use pre-defined font sizes instead of offset * Use Malgun Gothic instead of Gulim for Korean --- SpaceCadetPinball/gdrv.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/SpaceCadetPinball/gdrv.cpp b/SpaceCadetPinball/gdrv.cpp index b714d9c..2cb49f4 100644 --- a/SpaceCadetPinball/gdrv.cpp +++ b/SpaceCadetPinball/gdrv.cpp @@ -436,12 +436,17 @@ void gdrv::grtext_draw_ttext_in_box(LPCWSTR text, int xOff, int yOff, int width, 22, 28 }; + static const int fontSizes_EastAsian[3] = + { + 22, + 27, + 32 + }; xOff = static_cast(xOff * fullscrn::ScaleX) + fullscrn::OffsetX; yOff = static_cast(yOff * fullscrn::ScaleY) + fullscrn::OffsetY; width = static_cast(width * fullscrn::ScaleX); height = static_cast(height * fullscrn::ScaleY); - auto fontSize = static_cast(round(fontSizes[fullscrn::GetResolution()] * fullscrn::ScaleY)); HDC dc = GetDC(hwnd); tagRECT rc{}; @@ -459,25 +464,29 @@ void gdrv::grtext_draw_ttext_in_box(LPCWSTR text, int xOff, int yOff, int width, sscanf_s(fontColor, "%d %d %d", &grtext_red, &grtext_green, &grtext_blue); } - const char* font; + const char* font = "Arial"; + const int* selectedFontSizes = fontSizes; switch (options::Options.Language) { case Languages::TraditionalChinese: font = "Microsoft JhengHei"; + selectedFontSizes = fontSizes_EastAsian; break; case Languages::SimplifiedChinese: font = "Microsoft YaHei"; + selectedFontSizes = fontSizes_EastAsian; break; case Languages::Japanese: font = "MS UI Gothic"; break; case Languages::Korean: - font = "Gulim"; + font = "Malgun Gothic"; + selectedFontSizes = fontSizes_EastAsian; break; - default: - font = "Arial"; } + auto fontSize = static_cast(round(selectedFontSizes[fullscrn::GetResolution()] * fullscrn::ScaleY)); + // Default font does not scale well auto hNewFont = CreateFont(fontSize, 0, 0, 0, FW_DONTCARE, FALSE, FALSE, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY,