Encapsulate CPDF_FontEncoding.

Put UnicodeFromCharCode() and SetUnicode() to use. Also remove the
declaration for a non-existent method.

Change-Id: Ia524a05a043e355c9057576c43987f17d9f36413
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51970
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h
index 7c3d8c4..1bbd415 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.h
+++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -41,8 +41,6 @@
   CPDF_FontEncoding();
   explicit CPDF_FontEncoding(int PredefinedEncoding);
 
-  void LoadEncoding(CPDF_Object* pEncoding);
-
   bool IsIdentical(const CPDF_FontEncoding* pAnother) const;
 
   wchar_t UnicodeFromCharCode(uint8_t charcode) const {
@@ -56,7 +54,7 @@
 
   std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool) const;
 
- public:
+ private:
   wchar_t m_Unicodes[kEncodingTableSize];
 };
 
diff --git a/core/fpdfapi/font/cpdf_truetypefont.cpp b/core/fpdfapi/font/cpdf_truetypefont.cpp
index d84e857..ec3e05b 100644
--- a/core/fpdfapi/font/cpdf_truetypefont.cpp
+++ b/core/fpdfapi/font/cpdf_truetypefont.cpp
@@ -103,7 +103,7 @@
             m_pFontFile ? FXFT_Get_Char_Index(m_Font.GetFace(), charcode) : -1;
         continue;
       }
-      m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+      m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
       if (bMSSymbol) {
         for (size_t j = 0; j < FX_ArraySize(kPrefix); j++) {
           uint16_t unicode = kPrefix[j] * 256 + charcode;
@@ -112,13 +112,14 @@
           if (m_GlyphIndex[charcode])
             break;
         }
-      } else if (m_Encoding.m_Unicodes[charcode]) {
+      } else if (m_Encoding.UnicodeFromCharCode(charcode)) {
         if (bMSUnicode) {
           m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
-              m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+              m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode));
         } else if (bMacRoman) {
-          uint32_t maccode = FT_CharCodeFromUnicode(
-              FXFT_ENCODING_APPLE_ROMAN, m_Encoding.m_Unicodes[charcode]);
+          uint32_t maccode =
+              FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN,
+                                     m_Encoding.UnicodeFromCharCode(charcode));
           if (!maccode) {
             m_GlyphIndex[charcode] =
                 FXFT_Get_Name_Index(m_Font.GetFace(), name);
@@ -144,7 +145,7 @@
       if (!wsUnicode.IsEmpty()) {
         m_GlyphIndex[charcode] =
             FXFT_Get_Char_Index(m_Font.GetFace(), wsUnicode[0]);
-        m_Encoding.m_Unicodes[charcode] = wsUnicode[0];
+        m_Encoding.SetUnicode(charcode, wsUnicode[0]);
       }
     }
     return;
@@ -167,12 +168,13 @@
           const char* name =
               GetAdobeCharName(baseEncoding, m_CharNames, charcode);
           if (name)
-            m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+            m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
         }
       } else if (FT_UseTTCharmap(m_Font.GetFace(), 1, 0)) {
         for (int charcode = 0; charcode < 256; charcode++) {
-          m_Encoding.m_Unicodes[charcode] =
-              FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode);
+          m_Encoding.SetUnicode(
+              charcode,
+              FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode));
         }
       }
       return;
@@ -182,8 +184,8 @@
     bool bFound = false;
     for (int charcode = 0; charcode < 256; charcode++) {
       m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), charcode);
-      m_Encoding.m_Unicodes[charcode] =
-          FT_UnicodeFromCharCode(FXFT_ENCODING_APPLE_ROMAN, charcode);
+      m_Encoding.SetUnicode(charcode, FT_UnicodeFromCharCode(
+                                          FXFT_ENCODING_APPLE_ROMAN, charcode));
       if (m_GlyphIndex[charcode]) {
         bFound = true;
       }
@@ -196,16 +198,16 @@
     const uint16_t* pUnicodes = PDF_UnicodesForPredefinedCharSet(baseEncoding);
     for (uint32_t charcode = 0; charcode < 256; charcode++) {
       if (m_pFontFile) {
-        m_Encoding.m_Unicodes[charcode] = charcode;
+        m_Encoding.SetUnicode(charcode, charcode);
       } else {
         const char* name = GetAdobeCharName(0, m_CharNames, charcode);
         if (name)
-          m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+          m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
         else if (pUnicodes)
-          m_Encoding.m_Unicodes[charcode] = pUnicodes[charcode];
+          m_Encoding.SetUnicode(charcode, pUnicodes[charcode]);
       }
       m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
-          m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+          m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode));
       if (m_GlyphIndex[charcode])
         bFound = true;
     }
diff --git a/core/fpdfapi/font/cpdf_type1font.cpp b/core/fpdfapi/font/cpdf_type1font.cpp
index 231aee3..fa88c75 100644
--- a/core/fpdfapi/font/cpdf_type1font.cpp
+++ b/core/fpdfapi/font/cpdf_type1font.cpp
@@ -173,14 +173,14 @@
       if (!name)
         continue;
 
-      m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+      m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
       m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
-          m_Font.GetFace(), m_Encoding.m_Unicodes[charcode]);
+          m_Font.GetFace(), m_Encoding.UnicodeFromCharCode(charcode));
 #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
       CalcExtGID(charcode);
 #endif
       if (m_GlyphIndex[charcode] == 0 && strcmp(name, ".notdef") == 0) {
-        m_Encoding.m_Unicodes[charcode] = 0x20;
+        m_Encoding.SetUnicode(charcode, 0x20);
         m_GlyphIndex[charcode] = FXFT_Get_Char_Index(m_Font.GetFace(), 0x20);
 #if _FX_PLATFORM_ == _FX_PLATFORM_APPLE_
         CalcExtGID(charcode);
@@ -201,7 +201,7 @@
         const char* name =
             GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode);
         if (name) {
-          m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+          m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
           m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name);
           SetExtGID(name, charcode);
         } else {
@@ -220,7 +220,7 @@
           if (unicode == 0 && name_glyph[0] != 0)
             unicode = PDF_UnicodeFromAdobeName(name_glyph);
 
-          m_Encoding.m_Unicodes[charcode] = unicode;
+          m_Encoding.SetUnicode(charcode, unicode);
           SetExtGID(name_glyph, charcode);
         }
       }
@@ -235,7 +235,7 @@
       if (!name)
         continue;
 
-      m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+      m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
       const char* pStrUnicode = GlyphNameRemap(name);
       if (pStrUnicode && FXFT_Get_Name_Index(m_Font.GetFace(), name) == 0) {
         name = pStrUnicode;
@@ -248,10 +248,10 @@
       if (strcmp(name, ".notdef") != 0 && strcmp(name, "space") != 0) {
         m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
             m_Font.GetFace(),
-            bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode);
+            bUnicode ? m_Encoding.UnicodeFromCharCode(charcode) : charcode);
         CalcExtGID(charcode);
       } else {
-        m_Encoding.m_Unicodes[charcode] = 0x20;
+        m_Encoding.SetUnicode(charcode, 0x20);
         m_GlyphIndex[charcode] =
             bUnicode ? FXFT_Get_Char_Index(m_Font.GetFace(), 0x20) : 0xffff;
         CalcExtGID(charcode);
@@ -265,7 +265,7 @@
       const char* name =
           GetAdobeCharName(m_BaseEncoding, m_CharNames, charcode);
       if (name) {
-        m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+        m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
         m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name);
       } else {
         m_GlyphIndex[charcode] =
@@ -282,7 +282,7 @@
             if (name_glyph[0] != 0)
               unicode = PDF_UnicodeFromAdobeName(name_glyph);
           }
-          m_Encoding.m_Unicodes[charcode] = unicode;
+          m_Encoding.SetUnicode(charcode, unicode);
         }
       }
     }
@@ -301,7 +301,7 @@
     if (!name)
       continue;
 
-    m_Encoding.m_Unicodes[charcode] = PDF_UnicodeFromAdobeName(name);
+    m_Encoding.SetUnicode(charcode, PDF_UnicodeFromAdobeName(name));
     m_GlyphIndex[charcode] = FXFT_Get_Name_Index(m_Font.GetFace(), name);
     if (m_GlyphIndex[charcode] != 0)
       continue;
@@ -309,9 +309,9 @@
     if (strcmp(name, ".notdef") != 0 && strcmp(name, "space") != 0) {
       m_GlyphIndex[charcode] = FXFT_Get_Char_Index(
           m_Font.GetFace(),
-          bUnicode ? m_Encoding.m_Unicodes[charcode] : charcode);
+          bUnicode ? m_Encoding.UnicodeFromCharCode(charcode) : charcode);
     } else {
-      m_Encoding.m_Unicodes[charcode] = 0x20;
+      m_Encoding.SetUnicode(charcode, 0x20);
       m_GlyphIndex[charcode] = 0xffff;
     }
   }