aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Platform.h9
-rw-r--r--win32/PlatWin.cxx3
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);