Clean up fx_ge_linux.cpp. - Remove unused Japanese font entries. - Replace index numbers with a font family enum. - Rename the Japanese font entries array to have "Jp" instead of "Gp". - Use range-based for-loop to iterate through the Japanese fonts. Change-Id: I7e5dabc63f84aba2139d7acb2eb48e4343531656 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/53613 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxge/fx_ge_linux.cpp b/core/fxge/fx_ge_linux.cpp index f3d293a..d3af1b7 100644 --- a/core/fxge/fx_ge_linux.cpp +++ b/core/fxge/fx_ge_linux.cpp
@@ -18,17 +18,19 @@ #if _FX_PLATFORM_ == _FX_PLATFORM_LINUX_ namespace { -const size_t kLinuxGpNameSize = 6; +enum JpFontFamily : uint8_t { + kJpFontPGothic, + kJpFontGothic, + kJpFontPMincho, + kJpFontMincho, + kCount +}; -const char* const g_LinuxGpFontList[][kLinuxGpNameSize] = { - {"TakaoPGothic", "VL PGothic", "IPAPGothic", "VL Gothic", "Kochi Gothic", - "VL Gothic regular"}, - {"TakaoGothic", "VL Gothic", "IPAGothic", "Kochi Gothic", nullptr, - "VL Gothic regular"}, - {"TakaoPMincho", "IPAPMincho", "VL Gothic", "Kochi Mincho", nullptr, - "VL Gothic regular"}, - {"TakaoMincho", "IPAMincho", "VL Gothic", "Kochi Mincho", nullptr, - "VL Gothic regular"}, +const char* const g_LinuxJpFontList[][JpFontFamily::kCount] = { + {"TakaoPGothic", "VL PGothic", "IPAPGothic", "VL Gothic"}, + {"TakaoGothic", "VL Gothic", "IPAGothic", "Kochi Gothic"}, + {"TakaoPMincho", "IPAPMincho", "VL Gothic", "Kochi Mincho"}, + {"TakaoMincho", "IPAMincho", "VL Gothic", "Kochi Mincho"}, }; const char* const g_LinuxGbFontList[] = { @@ -43,40 +45,42 @@ "UnDotum", }; -size_t GetJapanesePreference(const char* facearr, - int weight, - int pitch_family) { +uint8_t GetJapanesePreference(const char* facearr, + int weight, + int pitch_family) { ByteString face = facearr; if (face.Contains("Gothic") || face.Contains("\x83\x53\x83\x56\x83\x62\x83\x4e")) { if (face.Contains("PGothic") || face.Contains("\x82\x6f\x83\x53\x83\x56\x83\x62\x83\x4e")) { - return 0; + return kJpFontPGothic; } - return 1; + return kJpFontGothic; } if (face.Contains("Mincho") || face.Contains("\x96\xbe\x92\xa9")) { if (face.Contains("PMincho") || face.Contains("\x82\x6f\x96\xbe\x92\xa9")) { - return 2; + return kJpFontPMincho; } - return 3; + return kJpFontMincho; } if (!FontFamilyIsRoman(pitch_family) && weight > 400) - return 0; + return kJpFontPGothic; - return 2; + return kJpFontPMincho; } class CFX_LinuxFontInfo final : public CFX_FolderFontInfo { public: - CFX_LinuxFontInfo() {} - ~CFX_LinuxFontInfo() override {} + CFX_LinuxFontInfo() = default; + ~CFX_LinuxFontInfo() override = default; + // CFX_LinuxFontInfo: void* MapFont(int weight, bool bItalic, int charset, int pitch_family, const char* family) override; + bool ParseFontCfg(const char** pUserPaths); }; @@ -92,10 +96,10 @@ bool bCJK = true; switch (charset) { case FX_CHARSET_ShiftJIS: { - size_t index = GetJapanesePreference(cstr_face, weight, pitch_family); - ASSERT(index < FX_ArraySize(g_LinuxGpFontList)); - for (size_t i = 0; i < kLinuxGpNameSize; i++) { - auto it = m_FontList.find(g_LinuxGpFontList[index][i]); + uint8_t index = GetJapanesePreference(cstr_face, weight, pitch_family); + ASSERT(index < FX_ArraySize(g_LinuxJpFontList)); + for (const char* name : g_LinuxJpFontList[index]) { + auto it = m_FontList.find(name); if (it != m_FontList.end()) return it->second.get(); }