Make CPDF_Font member variables protected.

Change-Id: I5d452ea907f4d243645ddae3512776096a827522
Reviewed-on: https://pdfium-review.googlesource.com/4872
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nicolás Peña <npm@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 53186da..193ee4a 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -290,6 +290,7 @@
   return width;
 }
 
+// static
 CPDF_Font* CPDF_Font::GetStockFont(CPDF_Document* pDoc,
                                    const CFX_ByteStringC& name) {
   CFX_ByteString fontname(name);
@@ -469,3 +470,9 @@
 
   return glyph;
 }
+
+CFX_Font* CPDF_Font::GetFontFallback(int position) {
+  if (position < 0 || static_cast<size_t>(position) >= m_FontFallbacks.size())
+    return nullptr;
+  return m_FontFallbacks[position].get();
+}
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index de29db6..be1d913 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -78,9 +78,10 @@
   virtual int GetCharWidthF(uint32_t charcode) = 0;
   virtual FX_RECT GetCharBBox(uint32_t charcode) = 0;
 
-  CPDF_Document* m_pDocument;
-  CFX_Font m_Font;
-  std::vector<std::unique_ptr<CFX_Font>> m_FontFallbacks;
+  CPDF_Document* GetDocument() { return m_pDocument; }
+  CFX_Font* GetFont() { return &m_Font; }
+  const CFX_Font* GetFont() const { return &m_Font; }
+  CFX_Font* GetFontFallback(int position);
 
  protected:
   CPDF_Font();
@@ -100,6 +101,9 @@
                                const std::vector<CFX_ByteString>& charnames,
                                int charcode);
 
+  CPDF_Document* m_pDocument;
+  CFX_Font m_Font;
+  std::vector<std::unique_ptr<CFX_Font>> m_FontFallbacks;
   CFX_ByteString m_BaseFont;
   CFX_RetainPtr<CPDF_StreamAcc> m_pFontFile;
   CPDF_Dictionary* m_pFontDict;
diff --git a/core/fpdfapi/page/cpdf_textstate.cpp b/core/fpdfapi/page/cpdf_textstate.cpp
index ed90bd3..6dbad55 100644
--- a/core/fpdfapi/page/cpdf_textstate.cpp
+++ b/core/fpdfapi/page/cpdf_textstate.cpp
@@ -134,7 +134,7 @@
   if (pPageData && m_pFont && !pPageData->IsForceClear())
     pPageData->ReleaseFont(m_pFont->GetFontDict());
 
-  m_pDocument = pFont ? pFont->m_pDocument : nullptr;
+  m_pDocument = pFont ? pFont->GetDocument() : nullptr;
   m_pFont = pFont;
 }
 
diff --git a/core/fpdfapi/render/cpdf_renderstatus.cpp b/core/fpdfapi/render/cpdf_renderstatus.cpp
index d41561c..0b30474 100644
--- a/core/fpdfapi/render/cpdf_renderstatus.cpp
+++ b/core/fpdfapi/render/cpdf_renderstatus.cpp
@@ -66,7 +66,7 @@
 namespace {
 
 void ReleaseCachedType3(CPDF_Type3Font* pFont) {
-  CPDF_Document* pDoc = pFont->m_pDocument;
+  CPDF_Document* pDoc = pFont->GetDocument();
   if (!pDoc)
     return;
 
@@ -1799,7 +1799,7 @@
 
 CFX_RetainPtr<CPDF_Type3Cache> CPDF_RenderStatus::GetCachedType3(
     CPDF_Type3Font* pFont) {
-  CPDF_Document* pDoc = pFont->m_pDocument;
+  CPDF_Document* pDoc = pFont->GetDocument();
   if (!pDoc)
     return nullptr;
 
@@ -2000,10 +2000,9 @@
   CharPosList.Load(textobj->m_CharCodes, textobj->m_CharPos, pFont, font_size);
   for (uint32_t i = 0; i < CharPosList.m_nChars; i++) {
     FXTEXT_CHARPOS& charpos = CharPosList.m_pCharPos[i];
-    auto* font =
-        charpos.m_FallbackFontPosition == -1
-            ? &pFont->m_Font
-            : pFont->m_FontFallbacks[charpos.m_FallbackFontPosition].get();
+    auto* font = charpos.m_FallbackFontPosition == -1
+                     ? pFont->GetFont()
+                     : pFont->GetFontFallback(charpos.m_FallbackFontPosition);
     const CFX_PathData* pPath =
         font->LoadGlyphPath(charpos.m_GlyphIndex, charpos.m_FontCharWidth);
     if (!pPath)
diff --git a/core/fpdfapi/render/cpdf_textrenderer.cpp b/core/fpdfapi/render/cpdf_textrenderer.cpp
index c45c1ef..83e6147 100644
--- a/core/fpdfapi/render/cpdf_textrenderer.cpp
+++ b/core/fpdfapi/render/cpdf_textrenderer.cpp
@@ -15,6 +15,14 @@
 #include "core/fxge/cfx_pathdata.h"
 #include "core/fxge/cfx_renderdevice.h"
 
+namespace {
+
+CFX_Font* GetFont(CPDF_Font* pFont, int32_t position) {
+  return position == -1 ? pFont->GetFont() : pFont->GetFontFallback(position);
+}
+
+}  // namespace
+
 // static
 bool CPDF_TextRenderer::DrawTextPath(CFX_RenderDevice* pDevice,
                                      const std::vector<uint32_t>& charCodes,
@@ -40,9 +48,8 @@
     int32_t curFontPosition = CharPosList.m_pCharPos[i].m_FallbackFontPosition;
     if (fontPosition == curFontPosition)
       continue;
-    auto* font = fontPosition == -1
-                     ? &pFont->m_Font
-                     : pFont->m_FontFallbacks[fontPosition].get();
+
+    CFX_Font* font = GetFont(pFont, fontPosition);
     if (!pDevice->DrawTextPath(i - startIndex,
                                CharPosList.m_pCharPos + startIndex, font,
                                font_size, pText2User, pUser2Device, pGraphState,
@@ -52,8 +59,7 @@
     fontPosition = curFontPosition;
     startIndex = i;
   }
-  auto* font = fontPosition == -1 ? &pFont->m_Font
-                                  : pFont->m_FontFallbacks[fontPosition].get();
+  CFX_Font* font = GetFont(pFont, fontPosition);
   if (!pDevice->DrawTextPath(CharPosList.m_nChars - startIndex,
                              CharPosList.m_pCharPos + startIndex, font,
                              font_size, pText2User, pUser2Device, pGraphState,
@@ -145,9 +151,8 @@
     int32_t curFontPosition = CharPosList.m_pCharPos[i].m_FallbackFontPosition;
     if (fontPosition == curFontPosition)
       continue;
-    auto* font = fontPosition == -1
-                     ? &pFont->m_Font
-                     : pFont->m_FontFallbacks[fontPosition].get();
+
+    CFX_Font* font = GetFont(pFont, fontPosition);
     if (!pDevice->DrawNormalText(
             i - startIndex, CharPosList.m_pCharPos + startIndex, font,
             font_size, pText2Device, fill_argb, FXGE_flags)) {
@@ -156,8 +161,7 @@
     fontPosition = curFontPosition;
     startIndex = i;
   }
-  auto* font = fontPosition == -1 ? &pFont->m_Font
-                                  : pFont->m_FontFallbacks[fontPosition].get();
+  CFX_Font* font = GetFont(pFont, fontPosition);
   if (!pDevice->DrawNormalText(CharPosList.m_nChars - startIndex,
                                CharPosList.m_pCharPos + startIndex, font,
                                font_size, pText2Device, fill_argb,