diff options
Diffstat (limited to 'core/fxge/cfx_fontmapper.cpp')
-rw-r--r-- | core/fxge/cfx_fontmapper.cpp | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/core/fxge/cfx_fontmapper.cpp b/core/fxge/cfx_fontmapper.cpp index c7a7015680..461094d81e 100644 --- a/core/fxge/cfx_fontmapper.cpp +++ b/core/fxge/cfx_fontmapper.cpp @@ -149,6 +149,14 @@ const AltFontFamily g_AltFontFamilies[] = { {"ForteMT", "Forte"}, }; +#if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ +const char kNarrowFamily[] = "LiberationSansNarrow"; +#elif _FX_PLATFORM_ == _FX_PLATFORM_ANDROID_ +const char kNarrowFamily[] = "RobotoCondensed"; +#else +const char kNarrowFamily[] = "ArialNarrow"; +#endif // _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ + ByteString TT_NormalizeName(const char* family) { ByteString norm(family); norm.Remove(' '); @@ -415,14 +423,16 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const ByteString& name, ByteString style; bool bHasComma = false; bool bHasHyphen = false; - auto pos = SubstName.Find(",", 0); - if (pos.has_value()) { - family = SubstName.Left(pos.value()); - PDF_GetStandardFontName(&family); - style = SubstName.Right(SubstName.GetLength() - (pos.value() + 1)); - bHasComma = true; - } else { - family = SubstName; + { + Optional<size_t> pos = SubstName.Find(",", 0); + if (pos.has_value()) { + family = SubstName.Left(pos.value()); + PDF_GetStandardFontName(&family); + style = SubstName.Right(SubstName.GetLength() - (pos.value() + 1)); + bHasComma = true; + } else { + family = SubstName; + } } for (; iBaseFont < 12; iBaseFont++) { if (family == ByteStringView(g_Base14FontNames[iBaseFont])) @@ -443,7 +453,7 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const ByteString& name, } else { iBaseFont = kNumStandardFonts; if (!bHasComma) { - pos = family.ReverseFind('-'); + Optional<size_t> pos = family.ReverseFind('-'); if (pos.has_value()) { style = family.Right(family.GetLength() - (pos.value() + 1)); family = family.Left(pos.value()); @@ -540,19 +550,12 @@ FXFT_Face CFX_FontMapper::FindSubstFont(const ByteString& name, bItalic = italic_angle != 0; weight = old_weight; } -#if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ - const char* narrow_family = "LiberationSansNarrow"; -#elif _FX_PLATFORM_ == _FX_PLATFORM_ANDROID_ - const char* narrow_family = "RobotoCondensed"; -#else - const char* narrow_family = "ArialNarrow"; -#endif // _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ - auto pos = SubstName.Find("Narrow"); + Optional<size_t> pos = SubstName.Find("Narrow"); if (pos.has_value() && pos.value() != 0) - family = narrow_family; + family = kNarrowFamily; pos = SubstName.Find("Condensed"); if (pos.has_value() && pos.value() != 0) - family = narrow_family; + family = kNarrowFamily; } else { pSubstFont->m_bSubstCJK = true; if (nStyle) |