diff --git a/core/fpdfapi/font/cpdf_fontencoding.cpp b/core/fpdfapi/font/cpdf_fontencoding.cpp
index 8bddb94..adc1225 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.cpp
+++ b/core/fpdfapi/font/cpdf_fontencoding.cpp
@@ -1676,12 +1676,12 @@
   }
 }
 
-bool CPDF_FontEncoding::IsIdentical(CPDF_FontEncoding* pAnother) const {
+bool CPDF_FontEncoding::IsIdentical(const CPDF_FontEncoding* pAnother) const {
   return memcmp(m_Unicodes, pAnother->m_Unicodes, sizeof(m_Unicodes)) == 0;
 }
 
 std::unique_ptr<CPDF_Object> CPDF_FontEncoding::Realize(
-    WeakPtr<ByteStringPool> pPool) {
+    WeakPtr<ByteStringPool> pPool) const {
   int predefined = 0;
   for (int cs = PDFFONT_ENCODING_WINANSI; cs < PDFFONT_ENCODING_ZAPFDINGBATS;
        cs++) {
diff --git a/core/fpdfapi/font/cpdf_fontencoding.h b/core/fpdfapi/font/cpdf_fontencoding.h
index e9a2ee2..7c3d8c4 100644
--- a/core/fpdfapi/font/cpdf_fontencoding.h
+++ b/core/fpdfapi/font/cpdf_fontencoding.h
@@ -43,7 +43,7 @@
 
   void LoadEncoding(CPDF_Object* pEncoding);
 
-  bool IsIdentical(CPDF_FontEncoding* pAnother) const;
+  bool IsIdentical(const CPDF_FontEncoding* pAnother) const;
 
   wchar_t UnicodeFromCharCode(uint8_t charcode) const {
     return m_Unicodes[charcode];
@@ -54,7 +54,7 @@
     m_Unicodes[charcode] = unicode;
   }
 
-  std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool);
+  std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool) const;
 
  public:
   wchar_t m_Unicodes[kEncodingTableSize];
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
index b5f8419..4c2ee21 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.cpp
+++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -146,8 +146,9 @@
   return pFontData->AddRef();
 }
 
-CPDF_Font* CPDF_DocPageData::GetStandardFont(const ByteString& fontName,
-                                             CPDF_FontEncoding* pEncoding) {
+CPDF_Font* CPDF_DocPageData::GetStandardFont(
+    const ByteString& fontName,
+    const CPDF_FontEncoding* pEncoding) {
   if (fontName.IsEmpty())
     return nullptr;
 
diff --git a/core/fpdfapi/page/cpdf_docpagedata.h b/core/fpdfapi/page/cpdf_docpagedata.h
index 6aa1da5..a684896 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.h
+++ b/core/fpdfapi/page/cpdf_docpagedata.h
@@ -36,7 +36,7 @@
 
   CPDF_Font* GetFont(CPDF_Dictionary* pFontDict);
   CPDF_Font* GetStandardFont(const ByteString& fontName,
-                             CPDF_FontEncoding* pEncoding);
+                             const CPDF_FontEncoding* pEncoding);
   void ReleaseFont(const CPDF_Dictionary* pFontDict);
 
   // Loads a colorspace.
diff --git a/core/fpdfapi/parser/cpdf_document.cpp b/core/fpdfapi/parser/cpdf_document.cpp
index 92dd9ae..30cfa6b 100644
--- a/core/fpdfapi/parser/cpdf_document.cpp
+++ b/core/fpdfapi/parser/cpdf_document.cpp
@@ -626,7 +626,7 @@
 }
 
 CPDF_Font* CPDF_Document::AddStandardFont(const char* font,
-                                          CPDF_FontEncoding* pEncoding) {
+                                          const CPDF_FontEncoding* pEncoding) {
   ByteString name(font);
   if (CFX_FontMapper::GetStandardFontName(&name) < 0)
     return nullptr;
diff --git a/core/fpdfapi/parser/cpdf_document.h b/core/fpdfapi/parser/cpdf_document.h
index 1ab44e1..9b7b7dd 100644
--- a/core/fpdfapi/parser/cpdf_document.h
+++ b/core/fpdfapi/parser/cpdf_document.h
@@ -120,7 +120,8 @@
   void IncrementParsedPageCount() { ++m_ParsedPageCount; }
   uint32_t GetParsedPageCountForTesting() { return m_ParsedPageCount; }
 
-  CPDF_Font* AddStandardFont(const char* font, CPDF_FontEncoding* pEncoding);
+  CPDF_Font* AddStandardFont(const char* font,
+                             const CPDF_FontEncoding* pEncoding);
   CPDF_Font* AddFont(CFX_Font* pFont, int charset);
 
 #if _FX_PLATFORM_ == _FX_PLATFORM_WINDOWS_
