diff options
-rw-r--r-- | src/Platform.h | 9 | ||||
-rw-r--r-- | win32/PlatWin.cxx | 3 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/Platform.h b/src/Platform.h index 353e97503..f65a4e1db 100644 --- a/src/Platform.h +++ b/src/Platform.h @@ -92,6 +92,8 @@ typedef void *IdlerID; * Font management. */ +constexpr const char *localeNameDefault = "en-us"; + struct FontParameters { const char *faceName; float size; @@ -100,6 +102,7 @@ struct FontParameters { int extraFontFlag; int technology; int characterSet; + const char *localeName; constexpr FontParameters( const char *faceName_, @@ -108,7 +111,8 @@ struct FontParameters { bool italic_=false, int extraFontFlag_=0, int technology_=0, - int characterSet_=0) noexcept : + int characterSet_=0, + const char *localeName_=localeNameDefault) noexcept : faceName(faceName_), size(size_), @@ -116,7 +120,8 @@ struct FontParameters { italic(italic_), extraFontFlag(extraFontFlag_), technology(technology_), - characterSet(characterSet_) + characterSet(characterSet_), + localeName(localeName_) { } diff --git a/win32/PlatWin.cxx b/win32/PlatWin.cxx index e23dbb120..f7520ad9a 100644 --- a/win32/PlatWin.cxx +++ b/win32/PlatWin.cxx @@ -301,12 +301,13 @@ struct FontDirectWrite : public FontWin { extraFontFlag(fp.extraFontFlag), characterSet(fp.characterSet) { const std::wstring wsFace = WStringFromUTF8(fp.faceName); + const std::wstring wsLocale = WStringFromUTF8(fp.localeName); const FLOAT fHeight = fp.size; const DWRITE_FONT_STYLE style = fp.italic ? DWRITE_FONT_STYLE_ITALIC : DWRITE_FONT_STYLE_NORMAL; HRESULT hr = pIDWriteFactory->CreateTextFormat(wsFace.c_str(), nullptr, static_cast<DWRITE_FONT_WEIGHT>(fp.weight), style, - DWRITE_FONT_STRETCH_NORMAL, fHeight, L"en-us", &pTextFormat); + DWRITE_FONT_STRETCH_NORMAL, fHeight, wsLocale.c_str(), &pTextFormat); if (SUCCEEDED(hr)) { pTextFormat->SetWordWrapping(DWRITE_WORD_WRAPPING_NO_WRAP); |