Clean up CPDF_FontEncoding.

- Merge ctors.
- Make GetEncoding() return a const pointer.
- Give a couple of instantiations static duration.

Change-Id: Ic7149071d00e692bbd715e5a23951123a0f24c63
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/59110
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
index 6743137..c804c05 100644
--- a/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
+++ b/core/fpdfapi/edit/cpdf_pagecontentgenerator.cpp
@@ -499,7 +499,7 @@
     pFont = CPDF_Font::GetStockFont(m_pDocument.Get(), "Helvetica");
 
   FontData data;
-  CPDF_FontEncoding* pEncoding = nullptr;
+  const CPDF_FontEncoding* pEncoding = nullptr;
   if (pFont->IsType1Font()) {
     data.type = "Type1";
     pEncoding = pFont->AsType1Font()->GetEncoding();
diff --git a/core/fpdfapi/font/cpdf_fontencoding.cpp b/core/fpdfapi/font/cpdf_fontencoding.cpp
index f1f7d06..a4e687e 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.cpp
+++ b/core/fpdfapi/font/cpdf_fontencoding.cpp
@@ -1655,10 +1655,6 @@
 
 }  // namespace
 
-CPDF_FontEncoding::CPDF_FontEncoding() {
-  memset(m_Unicodes, 0, sizeof(m_Unicodes));
-}
-
 int CPDF_FontEncoding::CharCodeFromUnicode(wchar_t unicode) const {
   for (size_t i = 0; i < FX_ArraySize(m_Unicodes); i++) {
     if (m_Unicodes[i] == unicode)
@@ -1669,11 +1665,11 @@
 
 CPDF_FontEncoding::CPDF_FontEncoding(int PredefinedEncoding) {
   const uint16_t* pSrc = PDF_UnicodesForPredefinedCharSet(PredefinedEncoding);
-  if (!pSrc) {
-    memset(m_Unicodes, 0, sizeof(m_Unicodes));
-  } else {
+  if (pSrc) {
     for (size_t i = 0; i < FX_ArraySize(m_Unicodes); i++)
       m_Unicodes[i] = pSrc[i];
+  } else {
+    memset(m_Unicodes, 0, sizeof(m_Unicodes));
   }
 }
 
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h
index 56904c9..1bfb0d5 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.h
+++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -35,7 +35,6 @@
  public:
   static constexpr size_t kEncodingTableSize = 256;
 
-  CPDF_FontEncoding();
   explicit CPDF_FontEncoding(int PredefinedEncoding);
 
   bool IsIdentical(const CPDF_FontEncoding* pAnother) const;
diff --git a/core/fpdfapi/font/cpdf_simplefont.h b/core/fpdfapi/font/cpdf_simplefont.h
index 8c909ab..11359c3 100644
--- a/core/fpdfapi/font/cpdf_simplefont.h
+++ b/core/fpdfapi/font/cpdf_simplefont.h
@@ -26,7 +26,7 @@
   WideString UnicodeFromCharCode(uint32_t charcode) const override;
   uint32_t CharCodeFromUnicode(wchar_t Unicode) const override;
 
-  CPDF_FontEncoding* GetEncoding() { return &m_Encoding; }
+  const CPDF_FontEncoding* GetEncoding() const { return &m_Encoding; }
 
   bool HasFontWidths() const override;
 
@@ -40,7 +40,7 @@
   void LoadCharMetrics(int charcode);
   void LoadPDFEncoding(bool bEmbedded, bool bTrueType);
 
-  CPDF_FontEncoding m_Encoding;
+  CPDF_FontEncoding m_Encoding{PDFFONT_ENCODING_BUILTIN};
   int m_BaseEncoding = PDFFONT_ENCODING_BUILTIN;
   bool m_bUseFontWidth;
   std::vector<ByteString> m_CharNames;
diff --git a/core/fpdfdoc/cba_fontmap.cpp b/core/fpdfdoc/cba_fontmap.cpp
index 141c832..e2f935c 100644
--- a/core/fpdfdoc/cba_fontmap.cpp
+++ b/core/fpdfdoc/cba_fontmap.cpp
@@ -496,7 +496,7 @@
   if (sFontName == "ZapfDingbats")
     return pPageData->AddStandardFont(sFontName.c_str(), nullptr);
 
-  CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
+  static const CPDF_FontEncoding fe(PDFFONT_ENCODING_WINANSI);
   return pPageData->AddStandardFont(sFontName.c_str(), &fe);
 }
 
diff --git a/core/fpdfdoc/cpdf_interactiveform.cpp b/core/fpdfdoc/cpdf_interactiveform.cpp
index 2883503..937e836 100644
--- a/core/fpdfdoc/cpdf_interactiveform.cpp
+++ b/core/fpdfdoc/cpdf_interactiveform.cpp
@@ -624,7 +624,7 @@
   if (csFontName == "ZapfDingbats")
     return pPageData->AddStandardFont(csFontName.c_str(), nullptr);
 
-  CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI);
+  static const CPDF_FontEncoding encoding(PDFFONT_ENCODING_WINANSI);
   return pPageData->AddStandardFont(csFontName.c_str(), &encoding);
 }