Chromium Code Reviews| Index: core/fxge/ge/fx_ge_linux.cpp |
| diff --git a/core/fxge/ge/fx_ge_linux.cpp b/core/fxge/ge/fx_ge_linux.cpp |
| index 6406d825708272c2cb1302565478f59fd0f90264..d5a1d956cd60233e7c60479ebddac989a209c24b 100644 |
| --- a/core/fxge/ge/fx_ge_linux.cpp |
| +++ b/core/fxge/ge/fx_ge_linux.cpp |
| @@ -8,12 +8,16 @@ |
| #include "core/fxge/agg/fx_agg_driver.h" |
| #endif |
| +#include <memory> |
| + |
| #include "core/fxge/ge/cfx_folderfontinfo.h" |
| #include "core/fxge/ge/fx_text_int.h" |
| #include "core/fxge/include/fx_ge.h" |
| #include "core/fxge/include/ifx_systemfontinfo.h" |
| #if _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ |
| +namespace { |
| + |
| class CFX_LinuxFontInfo : public CFX_FolderFontInfo { |
| public: |
| void* MapFont(int weight, |
| @@ -24,10 +28,12 @@ class CFX_LinuxFontInfo : public CFX_FolderFontInfo { |
| int& iExact) override; |
| FX_BOOL ParseFontCfg(const char** pUserPaths); |
| }; |
| -#define LINUX_GPNAMESIZE 6 |
| -static const struct { |
| - const FX_CHAR* NameArr[LINUX_GPNAMESIZE]; |
| -} LinuxGpFontList[] = { |
| + |
| +const size_t kLinuxGpNameSize = 6; |
| + |
| +const struct { |
| + const FX_CHAR* NameArr[kLinuxGpNameSize]; |
|
Tom Sepez
2016/08/04 19:20:18
drive-by: wouldn't a 2D array of char* be simpler
Lei Zhang
2016/08/04 19:22:25
Probably. Who wants to send the next CL? :)
|
| +} g_LinuxGpFontList[] = { |
| {{"TakaoPGothic", "VL PGothic", "IPAPGothic", "VL Gothic", "Kochi Gothic", |
| "VL Gothic regular"}}, |
| {{"TakaoGothic", "VL Gothic", "IPAGothic", "Kochi Gothic", nullptr, |
| @@ -37,18 +43,22 @@ static const struct { |
| {{"TakaoMincho", "IPAMincho", "VL Gothic", "Kochi Mincho", nullptr, |
| "VL Gothic regular"}}, |
| }; |
| -static const FX_CHAR* const g_LinuxGbFontList[] = { |
| + |
| +const FX_CHAR* const g_LinuxGbFontList[] = { |
| "AR PL UMing CN Light", "WenQuanYi Micro Hei", "AR PL UKai CN", |
| }; |
| -static const FX_CHAR* const g_LinuxB5FontList[] = { |
| + |
| +const FX_CHAR* const g_LinuxB5FontList[] = { |
| "AR PL UMing TW Light", "WenQuanYi Micro Hei", "AR PL UKai TW", |
| }; |
| -static const FX_CHAR* const g_LinuxHGFontList[] = { |
| + |
| +const FX_CHAR* const g_LinuxHGFontList[] = { |
| "UnDotum", |
| }; |
| -static int32_t GetJapanesePreference(const FX_CHAR* facearr, |
| - int weight, |
| - int picth_family) { |
| + |
| +size_t GetJapanesePreference(const FX_CHAR* facearr, |
| + int weight, |
| + int pitch_family) { |
| CFX_ByteString face = facearr; |
| if (face.Find("Gothic") >= 0 || |
| face.Find("\x83\x53\x83\x56\x83\x62\x83\x4e") >= 0) { |
| @@ -65,11 +75,14 @@ static int32_t GetJapanesePreference(const FX_CHAR* facearr, |
| } |
| return 3; |
| } |
| - if (!(picth_family & FXFONT_FF_ROMAN) && weight > 400) { |
| + if (!(pitch_family & FXFONT_FF_ROMAN) && weight > 400) { |
| return 0; |
| } |
| return 2; |
| } |
| + |
| +} // namespace |
| + |
| void* CFX_LinuxFontInfo::MapFont(int weight, |
| FX_BOOL bItalic, |
| int charset, |
| @@ -84,17 +97,16 @@ void* CFX_LinuxFontInfo::MapFont(int weight, |
| FX_BOOL bCJK = TRUE; |
| switch (charset) { |
| case FXFONT_SHIFTJIS_CHARSET: { |
| - int32_t index = GetJapanesePreference(cstr_face, weight, pitch_family); |
| - if (index < 0) { |
| - break; |
| - } |
| - for (int32_t i = 0; i < LINUX_GPNAMESIZE; i++) { |
| - auto it = m_FontList.find(LinuxGpFontList[index].NameArr[i]); |
| + size_t index = GetJapanesePreference(cstr_face, weight, pitch_family); |
| + ASSERT(index < FX_ArraySize(g_LinuxGpFontList)); |
|
npm_g
2016/08/04 17:53:16
Maybe also include the condition index >= 0
Lei Zhang
2016/08/04 17:59:26
size_t is unsigned, always >= 0.
|
| + for (size_t i = 0; i < kLinuxGpNameSize; i++) { |
| + auto it = m_FontList.find(g_LinuxGpFontList[index].NameArr[i]); |
| if (it != m_FontList.end()) { |
| return it->second; |
| } |
| } |
| - } break; |
| + break; |
| + } |
| case FXFONT_GB2312_CHARSET: { |
| for (size_t i = 0; i < FX_ArraySize(g_LinuxGbFontList); ++i) { |
| auto it = m_FontList.find(g_LinuxGbFontList[i]); |
| @@ -102,7 +114,8 @@ void* CFX_LinuxFontInfo::MapFont(int weight, |
| return it->second; |
| } |
| } |
| - } break; |
| + break; |
| + } |
| case FXFONT_CHINESEBIG5_CHARSET: { |
| for (size_t i = 0; i < FX_ArraySize(g_LinuxB5FontList); ++i) { |
| auto it = m_FontList.find(g_LinuxB5FontList[i]); |
| @@ -110,7 +123,8 @@ void* CFX_LinuxFontInfo::MapFont(int weight, |
| return it->second; |
| } |
| } |
| - } break; |
| + break; |
| + } |
| case FXFONT_HANGEUL_CHARSET: { |
| for (size_t i = 0; i < FX_ArraySize(g_LinuxHGFontList); ++i) { |
| auto it = m_FontList.find(g_LinuxHGFontList[i]); |
| @@ -118,7 +132,8 @@ void* CFX_LinuxFontInfo::MapFont(int weight, |
| return it->second; |
| } |
| } |
| - } break; |
| + break; |
| + } |
| default: |
| bCJK = FALSE; |
| break; |
| @@ -151,5 +166,6 @@ void CFX_GEModule::InitPlatform() { |
| m_pFontMgr->SetSystemFontInfo( |
| IFX_SystemFontInfo::CreateDefault(m_pUserFontPaths)); |
| } |
| + |
| void CFX_GEModule::DestroyPlatform() {} |
| #endif // _FXM_PLATFORM_ == _FXM_PLATFORM_LINUX_ |