Change CPDF_Font::UseTTCharmap() to use struct CharMapId

Replace 2 int parameters in UseTTCharmap() with CharMapId. Since callers
can now pass in readable CharMapId constants, just do that everywhere
and delete UseTTCharmapMSSymbol() and UseTTCharmapMacRoman().

Change-Id: Id551e6ee631cc7559efcb580828ab8df8379387c
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/135012
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp
index 4c45785..e4983a5 100644
--- a/core/fpdfapi/font/cpdf_cidfont.cpp
+++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -721,7 +721,8 @@
       charcode += 31;
       RetainPtr<CFX_Face> face = font_.GetFace();
       bool bMSUnicode = UseTTCharmapUnicode(face);
-      bool bMacRoman = !bMSUnicode && UseTTCharmapMacRoman(face);
+      bool bMacRoman =
+          !bMSUnicode && UseTTCharmap(face, CFX_Face::kMacRomanCmapId);
       FontEncoding base_encoding = FontEncoding::kStandard;
       if (bMSUnicode) {
         base_encoding = FontEncoding::kWinAnsi;
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index a3be363..c0de42a 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -458,11 +458,9 @@
 
 // static
 bool CPDF_Font::UseTTCharmap(const RetainPtr<CFX_Face>& face,
-                             int platform_id,
-                             int encoding_id) {
+                             const CFX_Face::CharMapId& cmap_id) {
   for (size_t i = 0; i < face->GetCharMapCount(); i++) {
-    if (face->GetCharMapPlatformIdByIndex(i) == platform_id &&
-        face->GetCharMapEncodingIdByIndex(i) == encoding_id) {
+    if (face->GetCharMapIdByIndex(i) == cmap_id) {
       face->SetCharMapByIndex(i);
       return true;
     }
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index 13fbc1e..e2a4ff3 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -143,16 +143,8 @@
   // Tries to select any Unicode character map.
   static bool UseTTCharmapUnicode(const RetainPtr<CFX_Face>& face);
 
-  // Commonly used wrappers for UseTTCharmap().
-  static bool UseTTCharmapMSSymbol(const RetainPtr<CFX_Face>& face) {
-    return UseTTCharmap(face, 3, 0);
-  }
-  static bool UseTTCharmapMacRoman(const RetainPtr<CFX_Face>& face) {
-    return UseTTCharmap(face, 1, 0);
-  }
   static bool UseTTCharmap(const RetainPtr<CFX_Face>& face,
-                           int platform_id,
-                           int encoding_id);
+                           const CFX_Face::CharMapId& cmap_id);
 
   static const char* GetAdobeCharName(FontEncoding base_encoding,
                                       const std::vector<ByteString>& charnames,
diff --git a/core/fpdfapi/font/cpdf_truetypefont.cpp b/core/fpdfapi/font/cpdf_truetypefont.cpp
index edf921d..8341430 100644
--- a/core/fpdfapi/font/cpdf_truetypefont.cpp
+++ b/core/fpdfapi/font/cpdf_truetypefont.cpp
@@ -118,7 +118,7 @@
     }
     return;
   }
-  if (UseTTCharmapMSSymbol(face)) {
+  if (UseTTCharmap(face, CFX_Face::kWindowsSymbolCmapId)) {
     for (uint32_t charcode = 0; charcode < 256; charcode++) {
       glyph_index_[charcode] = GetGlyphIndexForMSSymbol(face, charcode);
     }
@@ -131,7 +131,7 @@
             encoding_.SetUnicode(charcode, UnicodeFromAdobeName(name));
           }
         }
-      } else if (UseTTCharmapMacRoman(face)) {
+      } else if (UseTTCharmap(face, CFX_Face::kMacRomanCmapId)) {
         for (uint32_t charcode = 0; charcode < 256; charcode++) {
           encoding_.SetUnicode(charcode,
                                UnicodeFromAppleRomanCharCode(charcode));
@@ -140,7 +140,7 @@
       return;
     }
   }
-  if (UseTTCharmapMacRoman(face)) {
+  if (UseTTCharmap(face, CFX_Face::kMacRomanCmapId)) {
     for (uint32_t charcode = 0; charcode < 256; charcode++) {
       glyph_index_[charcode] = face->GetCharIndex(charcode);
       encoding_.SetUnicode(charcode, UnicodeFromAppleRomanCharCode(charcode));
@@ -191,17 +191,17 @@
   }
 
   if (FontStyleIsNonSymbolic(flags_)) {
-    if (UseTTCharmapMacRoman(font_.GetFace())) {
+    if (UseTTCharmap(font_.GetFace(), CFX_Face::kMacRomanCmapId)) {
       return CharmapType::kMacRoman;
     }
-    if (UseTTCharmapMSSymbol(font_.GetFace())) {
+    if (UseTTCharmap(font_.GetFace(), CFX_Face::kWindowsSymbolCmapId)) {
       return CharmapType::kMSSymbol;
     }
   } else {
-    if (UseTTCharmapMSSymbol(font_.GetFace())) {
+    if (UseTTCharmap(font_.GetFace(), CFX_Face::kWindowsSymbolCmapId)) {
       return CharmapType::kMSSymbol;
     }
-    if (UseTTCharmapMacRoman(font_.GetFace())) {
+    if (UseTTCharmap(font_.GetFace(), CFX_Face::kMacRomanCmapId)) {
       return CharmapType::kMacRoman;
     }
   }
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp
index 7b6f581..d4a7b9e 100644
--- a/core/fpdfapi/font/cpdf_type1font.cpp
+++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -154,7 +154,7 @@
   }
 #endif
   if (!IsEmbedded() && !IsSymbolicFont() && font_.IsTTFont()) {
-    if (UseTTCharmapMSSymbol(face)) {
+    if (UseTTCharmap(face, CFX_Face::kWindowsSymbolCmapId)) {
       bool bGotOne = false;
       for (uint32_t charcode = 0; charcode < kInternalTableSize; charcode++) {
         static constexpr std::array<uint8_t, 4> prefix = {
diff --git a/core/fxge/cfx_face.h b/core/fxge/cfx_face.h
index d135a86..8313c29 100644
--- a/core/fxge/cfx_face.h
+++ b/core/fxge/cfx_face.h
@@ -48,6 +48,7 @@
   };
 
   // Aliases for some commonly used cmaps.
+  static constexpr CharMapId kMacRomanCmapId{1, 0};
   static constexpr CharMapId kWindowsSymbolCmapId{3, 0};
   static constexpr CharMapId kWindowsUnicodeCmapId{3, 1};