Chromium Code Reviews| Index: core/fxge/apple/fx_mac_imp.cpp |
| diff --git a/core/fxge/apple/fx_mac_imp.cpp b/core/fxge/apple/fx_mac_imp.cpp |
| index 489ce816cc234e46a9dd11c0cf026fca30daab1a..4ddc7db8ad56bbe1bde3e4d0fd2fd8e4c70469f8 100644 |
| --- a/core/fxge/apple/fx_mac_imp.cpp |
| +++ b/core/fxge/apple/fx_mac_imp.cpp |
| @@ -8,10 +8,13 @@ |
| #include "core/fxge/include/fx_ge.h" |
| #if _FX_OS_ == _FX_MACOSX_ |
| -static const struct { |
| + |
| +namespace { |
| + |
| +const struct { |
| const FX_CHAR* m_pName; |
| const FX_CHAR* m_pSubstName; |
| -} Base14Substs[] = { |
| +} g_Base14Substs[] = { |
| {"Courier", "Courier New"}, |
| {"Courier-Bold", "Courier New Bold"}, |
| {"Courier-BoldOblique", "Courier New Bold Italic"}, |
| @@ -40,21 +43,18 @@ class CFX_MacFontInfo : public CFX_FolderFontInfo { |
| int& iExact) override; |
| }; |
| -#define JAPAN_GOTHIC "Hiragino Kaku Gothic Pro W6" |
| -#define JAPAN_MINCHO "Hiragino Mincho Pro W6" |
| -static void GetJapanesePreference(CFX_ByteString& face, |
| - int weight, |
| - int pitch_family) { |
| - if (face.Find("Gothic") >= 0) { |
| - face = JAPAN_GOTHIC; |
| +const char JAPAN_GOTHIC[] = "Hiragino Kaku Gothic Pro W6"; |
| +const char JAPAN_MINCHO[] = "Hiragino Mincho Pro W6"; |
| + |
| +void GetJapanesePreference(CFX_ByteString* face, int weight, int pitch_family) { |
| + if (face->Find("Gothic") >= 0) { |
| + *face = JAPAN_GOTHIC; |
| return; |
| } |
| - if (!(pitch_family & FXFONT_FF_ROMAN) && weight > 400) { |
| - face = JAPAN_GOTHIC; |
| - } else { |
| - face = JAPAN_MINCHO; |
| - } |
| + *face = ((pitch_family & FXFONT_FF_ROMAN) || weight <= 400) ? JAPAN_MINCHO |
| + : JAPAN_GOTHIC; |
| } |
| + |
| void* CFX_MacFontInfo::MapFont(int weight, |
| FX_BOOL bItalic, |
| int charset, |
| @@ -62,29 +62,28 @@ void* CFX_MacFontInfo::MapFont(int weight, |
| const FX_CHAR* cstr_face, |
| int& iExact) { |
| CFX_ByteString face = cstr_face; |
| - int iBaseFont; |
| - for (iBaseFont = 0; iBaseFont < 12; iBaseFont++) |
| - if (face == CFX_ByteStringC(Base14Substs[iBaseFont].m_pName)) { |
| - face = Base14Substs[iBaseFont].m_pSubstName; |
| + for (size_t i = 0; i < FX_ArraySize(g_Base14Substs); ++i) { |
| + if (face == CFX_ByteStringC(g_Base14Substs[i].m_pName)) { |
| + face = g_Base14Substs[i].m_pSubstName; |
| iExact = TRUE; |
| + return GetFont(face.c_str()); |
| break; |
|
Lei Zhang
2016/07/01 18:50:30
Whoops, forgot to remove the break. No worries. I
|
| } |
| - if (iBaseFont < 12) { |
| - return GetFont(face.c_str()); |
| } |
| + |
| auto it = m_FontList.find(face); |
| if (it != m_FontList.end()) |
| return it->second; |
| - if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) { |
| + if (charset == FXFONT_ANSI_CHARSET && (pitch_family & FXFONT_FF_FIXEDPITCH)) |
| return GetFont("Courier New"); |
| - } |
| - if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_SYMBOL_CHARSET) { |
| + |
| + if (charset == FXFONT_ANSI_CHARSET || charset == FXFONT_SYMBOL_CHARSET) |
| return nullptr; |
| - } |
| + |
| switch (charset) { |
| case FXFONT_SHIFTJIS_CHARSET: |
| - GetJapanesePreference(face, weight, pitch_family); |
| + GetJapanesePreference(&face, weight, pitch_family); |
| break; |
| case FXFONT_GB2312_CHARSET: |
| face = "STSong"; |
| @@ -99,6 +98,8 @@ void* CFX_MacFontInfo::MapFont(int weight, |
| return it != m_FontList.end() ? it->second : nullptr; |
| } |
| +} // namespace |
| + |
| std::unique_ptr<IFX_SystemFontInfo> IFX_SystemFontInfo::CreateDefault( |
| const char** pUnused) { |
| CFX_MacFontInfo* pInfo(new CFX_MacFontInfo); |
| @@ -112,8 +113,10 @@ void CFX_GEModule::InitPlatform() { |
| m_pPlatformData = new CApplePlatform; |
| m_pFontMgr->SetSystemFontInfo(IFX_SystemFontInfo::CreateDefault(nullptr)); |
| } |
| + |
| void CFX_GEModule::DestroyPlatform() { |
| - delete (CApplePlatform*)m_pPlatformData; |
| + delete reinterpret_cast<CApplePlatform*>(m_pPlatformData); |
| m_pPlatformData = nullptr; |
| } |
| -#endif |
| + |
| +#endif // _FX_OS_ == _FX_MACOSX_ |