Merge to XFA: Extern in .cpp file is a code smell, part 2.

(cherry picked from commit c3f4894a6862c74b9ab32b4ec38c531de6ecd83c)
Original Review URL: https://codereview.chromium.org/1298393003 .

Fixed IWYU in core/src/fpdftext/text_int.h exposed by new inclusion.

R=thestig@chromium.org

Review URL: https://codereview.chromium.org/1294933008 .
diff --git a/core/include/fpdfapi/fpdf_parser.h b/core/include/fpdfapi/fpdf_parser.h
index ab48a95..03ae4cf 100644
--- a/core/include/fpdfapi/fpdf_parser.h
+++ b/core/include/fpdfapi/fpdf_parser.h
@@ -51,6 +51,9 @@
 //   'R' - otherwise.
 extern const char PDF_CharType[256];
 
+// Indexed by 8-bit char code, contains unicode code points.
+extern const FX_WORD PDFDocEncoding[256];
+
 class CPDF_Document : public CFX_PrivateData, public CPDF_IndirectObjects {
  public:
   CPDF_Document();
@@ -921,4 +924,14 @@
   PDF_DATAAVAIL_TRAILER_APPEND
 };
 
+FX_BOOL PDF_DataDecode(const uint8_t* src_buf,
+                       FX_DWORD src_size,
+                       const CPDF_Dictionary* pDict,
+                       uint8_t*& dest_buf,
+                       FX_DWORD& dest_size,
+                       CFX_ByteString& ImageEncoding,
+                       CPDF_Dictionary*& pImageParms,
+                       FX_DWORD estimated_size,
+                       FX_BOOL bImageAcc);
+
 #endif  // CORE_INCLUDE_FPDFAPI_FPDF_PARSER_H_
diff --git a/core/include/fpdfapi/fpdf_render.h b/core/include/fpdfapi/fpdf_render.h
index b0302cd..58883a0 100644
--- a/core/include/fpdfapi/fpdf_render.h
+++ b/core/include/fpdfapi/fpdf_render.h
@@ -294,4 +294,6 @@
   int m_RenderStepLimit;
 };
 
+FX_BOOL IsAvailableMatrix(const CFX_AffineMatrix& matrix);
+
 #endif  // CORE_INCLUDE_FPDFAPI_FPDF_RENDER_H_
diff --git a/core/include/fxge/fx_font.h b/core/include/fxge/fx_font.h
index 30de472..2d19db6 100644
--- a/core/include/fxge/fx_font.h
+++ b/core/include/fxge/fx_font.h
@@ -517,4 +517,6 @@
   virtual ~IFX_GSUBTable() {}
 };
 
+CFX_ByteString GetNameFromTT(const uint8_t* name_table, FX_DWORD name);
+
 #endif  // CORE_INCLUDE_FXGE_FX_FONT_H_
diff --git a/core/src/fpdfapi/fpdf_cmaps/cmap_int.h b/core/src/fpdfapi/fpdf_cmaps/cmap_int.h
index 41743a8..7d51cee 100644
--- a/core/src/fpdfapi/fpdf_cmaps/cmap_int.h
+++ b/core/src/fpdfapi/fpdf_cmaps/cmap_int.h
@@ -22,4 +22,11 @@
   int m_UseOffset;
 };
 
+void FPDFAPI_FindEmbeddedCMap(const char* name,
+                              int charset,
+                              int coding,
+                              const FXCMAP_CMap*& pMap);
+FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, FX_DWORD charcode);
+FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid);
+
 #endif  // CORE_SRC_FPDFAPI_FPDF_CMAPS_CMAP_INT_H_
diff --git a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp b/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
index 1ff9876..d0be5ec 100644
--- a/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
+++ b/core/src/fpdfapi/fpdf_edit/fpdf_edit_doc.cpp
@@ -219,15 +219,13 @@
   FXSYS_strcpy(lfa.lfFaceName, face.c_str());
   return AddWindowsFont(&lfa, bVert, bTranslateName);
 }
-extern CFX_ByteString _FPDF_GetNameFromTT(const uint8_t* name_table,
-                                          FX_DWORD name);
 CFX_ByteString _FPDF_GetPSNameFromTT(HDC hDC) {
   CFX_ByteString result;
   DWORD size = ::GetFontData(hDC, 'eman', 0, NULL, 0);
   if (size != GDI_ERROR) {
     LPBYTE buffer = FX_Alloc(BYTE, size);
     ::GetFontData(hDC, 'eman', 0, buffer, size);
-    result = _FPDF_GetNameFromTT(buffer, 6);
+    result = GetNameFromTT(buffer, 6);
     FX_Free(buffer);
   }
   return result;
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
index 7f593c7..d64c77f 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp
@@ -1049,7 +1049,6 @@
   }
   return TRUE;
 }
-extern FX_WCHAR FT_UnicodeFromCharCode(int encoding, FX_DWORD charcode);
 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_
 #include "../../fxge/apple/apple_int.h"
 #endif
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp
index a0b65af..308dac9 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font_charset.cpp
@@ -5,12 +5,10 @@
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
 #include "../../../include/fpdfapi/fpdf_page.h"
+#include "../../../include/fpdfapi/fpdf_parser.h"
 #include "../../../include/fpdfapi/fpdf_resource.h"
 #include "../../../include/fxge/fx_freetype.h"
 
-// TODO(tsepez): These belong in headers, too.
-extern const FX_WORD PDFDocEncoding[256];
-
 static const struct _UnicodeAlt {
   FX_WORD m_Unicode;
   const FX_CHAR* m_Alter;
@@ -1774,14 +1772,6 @@
 FX_DWORD PDF_PredefinedCharCodeFromUnicode(int encoding, FX_WCHAR unicode) {
   return PDF_FindCode(PDF_UnicodesForPredefinedCharSet(encoding), unicode);
 }
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern int FXFT_unicode_from_adobe_name(const char* name);
-extern void FXFT_adobe_name_from_unicode(char* glyph_name, FX_WCHAR unicode);
-#ifdef __cplusplus
-}
-#endif
 FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name) {
   return (FX_WCHAR)(FXFT_unicode_from_adobe_name(name) & 0x7FFFFFFF);
 }
diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp
index 2fc1255..c934124 100644
--- a/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp
+++ b/core/src/fpdfapi/fpdf_font/fpdf_font_cid.cpp
@@ -430,12 +430,7 @@
     {"UniKS-UCS2", CIDSET_KOREA1, CIDCODING_UCS2, CPDF_CMap::TwoBytes},
     {"UniKS-UTF16", CIDSET_KOREA1, CIDCODING_UTF16, CPDF_CMap::TwoBytes},
     {NULL, 0, 0}};
-extern void FPDFAPI_FindEmbeddedCMap(const char* name,
-                                     int charset,
-                                     int coding,
-                                     const FXCMAP_CMap*& pMap);
-extern FX_WORD FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap,
-                                       FX_DWORD charcode);
+
 FX_BOOL CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr,
                                   const FX_CHAR* pName,
                                   FX_BOOL bPromptCJK) {
@@ -812,7 +807,6 @@
 FX_BOOL CPDF_CIDFont::IsVertWriting() const {
   return m_pCMap ? m_pCMap->IsVertWriting() : FALSE;
 }
-extern FX_DWORD FPDFAPI_CharCodeFromCID(const FXCMAP_CMap* pMap, FX_WORD cid);
 static FX_DWORD _EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap,
                                              int charset,
                                              FX_WCHAR unicode) {
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
index 85ba130..402a19e 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
@@ -4,11 +4,44 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include <limits.h>
 #include "../../../include/fpdfapi/fpdf_parser.h"
 #include "../../../include/fpdfapi/fpdf_module.h"
 #include "../../../include/fxcodec/fx_codec.h"
-#include <limits.h>
+
 #define _STREAM_MAX_SIZE_ 20 * 1024 * 1024
+
+const FX_WORD PDFDocEncoding[256] = {
+    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
+    0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011,
+    0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x02d8, 0x02c7, 0x02c6,
+    0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc, 0x0020, 0x0021, 0x0022, 0x0023,
+    0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
+    0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
+    0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
+    0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
+    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
+    0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
+    0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
+    0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
+    0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
+    0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
+    0x007e, 0x0000, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192,
+    0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,
+    0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160, 0x0178,
+    0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, 0x0000, 0x20ac, 0x00a1,
+    0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa,
+    0x00ab, 0x00ac, 0x0000, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3,
+    0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc,
+    0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5,
+    0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
+    0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
+    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0,
+    0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
+    0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2,
+    0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb,
+    0x00fc, 0x00fd, 0x00fe, 0x00ff};
+
 FX_DWORD _A85Decode(const uint8_t* src_buf,
                     FX_DWORD src_size,
                     uint8_t*& dest_buf,
@@ -394,36 +427,6 @@
   dest_size = last_size;
   return TRUE;
 }
-extern const FX_WORD PDFDocEncoding[256] = {
-    0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008,
-    0x0009, 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0011,
-    0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x02d8, 0x02c7, 0x02c6,
-    0x02d9, 0x02dd, 0x02db, 0x02da, 0x02dc, 0x0020, 0x0021, 0x0022, 0x0023,
-    0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x002a, 0x002b, 0x002c,
-    0x002d, 0x002e, 0x002f, 0x0030, 0x0031, 0x0032, 0x0033, 0x0034, 0x0035,
-    0x0036, 0x0037, 0x0038, 0x0039, 0x003a, 0x003b, 0x003c, 0x003d, 0x003e,
-    0x003f, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044, 0x0045, 0x0046, 0x0047,
-    0x0048, 0x0049, 0x004a, 0x004b, 0x004c, 0x004d, 0x004e, 0x004f, 0x0050,
-    0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057, 0x0058, 0x0059,
-    0x005a, 0x005b, 0x005c, 0x005d, 0x005e, 0x005f, 0x0060, 0x0061, 0x0062,
-    0x0063, 0x0064, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069, 0x006a, 0x006b,
-    0x006c, 0x006d, 0x006e, 0x006f, 0x0070, 0x0071, 0x0072, 0x0073, 0x0074,
-    0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x007a, 0x007b, 0x007c, 0x007d,
-    0x007e, 0x0000, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x0192,
-    0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,
-    0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x0141, 0x0152, 0x0160, 0x0178,
-    0x017d, 0x0131, 0x0142, 0x0153, 0x0161, 0x017e, 0x0000, 0x20ac, 0x00a1,
-    0x00a2, 0x00a3, 0x00a4, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9, 0x00aa,
-    0x00ab, 0x00ac, 0x0000, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b2, 0x00b3,
-    0x00b4, 0x00b5, 0x00b6, 0x00b7, 0x00b8, 0x00b9, 0x00ba, 0x00bb, 0x00bc,
-    0x00bd, 0x00be, 0x00bf, 0x00c0, 0x00c1, 0x00c2, 0x00c3, 0x00c4, 0x00c5,
-    0x00c6, 0x00c7, 0x00c8, 0x00c9, 0x00ca, 0x00cb, 0x00cc, 0x00cd, 0x00ce,
-    0x00cf, 0x00d0, 0x00d1, 0x00d2, 0x00d3, 0x00d4, 0x00d5, 0x00d6, 0x00d7,
-    0x00d8, 0x00d9, 0x00da, 0x00db, 0x00dc, 0x00dd, 0x00de, 0x00df, 0x00e0,
-    0x00e1, 0x00e2, 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
-    0x00ea, 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f2,
-    0x00f3, 0x00f4, 0x00f5, 0x00f6, 0x00f7, 0x00f8, 0x00f9, 0x00fa, 0x00fb,
-    0x00fc, 0x00fd, 0x00fe, 0x00ff};
 CFX_WideString PDF_DecodeText(const uint8_t* src_data,
                               FX_DWORD src_len,
                               CFX_CharMap* pCharMap) {
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp
index 0d7bdd8..02ff1f3 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_document.cpp
@@ -86,7 +86,6 @@
 void CPDF_Document::LoadPages() {
   m_PageList.SetSize(_GetPageCount());
 }
-extern void FPDF_TTFaceMapper_ReleaseDoc(CPDF_Document*);
 CPDF_Document::~CPDF_Document() {
   if (m_pDocPage) {
     CPDF_ModuleMgr::Get()->GetPageModule()->ReleaseDoc(this);
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
index eed6201..23742bc 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp
@@ -1014,15 +1014,6 @@
   pObj->InitStream((IFX_FileRead*)pFS, pCloneDict);
   return pObj;
 }
-extern FX_BOOL PDF_DataDecode(const uint8_t* src_buf,
-                              FX_DWORD src_size,
-                              const CPDF_Dictionary* pDict,
-                              uint8_t*& dest_buf,
-                              FX_DWORD& dest_size,
-                              CFX_ByteString& ImageEncoding,
-                              CPDF_Dictionary*& pImageParms,
-                              FX_DWORD estimated_size,
-                              FX_BOOL bImageAcc);
 CPDF_StreamAcc::CPDF_StreamAcc() {
   m_bNewBuf = FALSE;
   m_pData = NULL;
diff --git a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp b/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
index 5038833..eff7b06 100644
--- a/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
+++ b/core/src/fpdfapi/fpdf_render/fpdf_render_text.cpp
@@ -9,7 +9,7 @@
 #include "../../../include/fpdfapi/fpdf_pageobj.h"
 #include "../fpdf_page/pageint.h"
 #include "render_int.h"
-extern FX_BOOL IsAvailableMatrix(const CFX_AffineMatrix& matrix);
+
 CPDF_Type3Cache::~CPDF_Type3Cache() {
   for (const auto& pair : m_SizeMap) {
     delete pair.second;
diff --git a/core/src/fpdfdoc/doc_ap.cpp b/core/src/fpdfdoc/doc_ap.cpp
index f9bb3a7..2367d0e 100644
--- a/core/src/fpdfdoc/doc_ap.cpp
+++ b/core/src/fpdfdoc/doc_ap.cpp
@@ -4,10 +4,12 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "../../include/fpdfdoc/fpdf_ap.h"
 #include "../../include/fpdfdoc/fpdf_doc.h"
 #include "../../include/fpdfdoc/fpdf_vt.h"
+#include "doc_utils.h"
 #include "pdf_vt.h"
-#include "../../include/fpdfdoc/fpdf_ap.h"
+
 FX_BOOL FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict) {
   if (!pAnnotDict ||
       pAnnotDict->GetConstString("Subtype") != FX_BSTRC("Widget")) {
@@ -76,9 +78,6 @@
       m_pSysFont(NULL),
       m_sSysFontAlias() {}
 CPVT_FontMap::~CPVT_FontMap() {}
-extern CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict,
-                                         CPDF_Document* pDocument,
-                                         CFX_ByteString& csNameTag);
 void CPVT_FontMap::GetAnnotSysPDFFont(CPDF_Document* pDoc,
                                       CPDF_Dictionary* pResDict,
                                       CPDF_Font*& pSysFont,
diff --git a/core/src/fpdftext/fpdf_text.cpp b/core/src/fpdftext/fpdf_text.cpp
index f9e1e02..0659024 100644
--- a/core/src/fpdftext/fpdf_text.cpp
+++ b/core/src/fpdftext/fpdf_text.cpp
@@ -791,10 +791,6 @@
     lines.Add(str);
   }
 }
-extern void _PDF_GetTextStream_Unicode(CFX_WideTextBuf& buffer,
-                                       CPDF_PageObjects* pPage,
-                                       FX_BOOL bUseLF,
-                                       CFX_PtrArray* pObjArray);
 void PDF_GetTextStream_Unicode(CFX_WideTextBuf& buffer,
                                CPDF_Document* pDoc,
                                CPDF_Dictionary* pPage,
@@ -806,5 +802,5 @@
   options.m_bTextOnly = TRUE;
   options.m_bSeparateForm = FALSE;
   page.ParseContent(&options);
-  _PDF_GetTextStream_Unicode(buffer, &page, TRUE, NULL);
+  GetTextStream_Unicode(buffer, &page, TRUE, NULL);
 }
diff --git a/core/src/fpdftext/fpdf_text_search.cpp b/core/src/fpdftext/fpdf_text_search.cpp
index 95839b5..6640018 100644
--- a/core/src/fpdftext/fpdf_text_search.cpp
+++ b/core/src/fpdftext/fpdf_text_search.cpp
@@ -6,6 +6,8 @@
 
 #include "../../include/fpdfapi/fpdf_pageobj.h"
 #include "../../include/fpdfapi/fpdf_page.h"
+#include "text_int.h"
+
 class CPDF_TextStream {
  public:
   CPDF_TextStream(CFX_WideTextBuf& buffer,
@@ -293,10 +295,10 @@
   }
   return FALSE;
 }
-void _PDF_GetTextStream_Unicode(CFX_WideTextBuf& buffer,
-                                CPDF_PageObjects* pPage,
-                                FX_BOOL bUseLF,
-                                CFX_PtrArray* pObjArray) {
+void GetTextStream_Unicode(CFX_WideTextBuf& buffer,
+                           CPDF_PageObjects* pPage,
+                           FX_BOOL bUseLF,
+                           CFX_PtrArray* pObjArray) {
   CPDF_TextStream textstream(buffer, bUseLF, pObjArray);
   FX_POSITION pos = pPage->GetFirstObjectPosition();
   while (pos) {
diff --git a/core/src/fpdftext/text_int.h b/core/src/fpdftext/text_int.h
index 24b89f1..7d69492 100644
--- a/core/src/fpdftext/text_int.h
+++ b/core/src/fpdftext/text_int.h
@@ -7,9 +7,16 @@
 #ifndef CORE_SRC_FPDFTEXT_TEXT_INT_H_
 #define CORE_SRC_FPDFTEXT_TEXT_INT_H_
 
+#include "../../include/fpdftext/fpdf_text.h"
+#include "../../include/fxcrt/fx_arb.h"
+#include "../../include/fxcrt/fx_basic.h"
+
+class CFX_BidiChar;
+class CPDF_DocProgressiveSearch;
+class CPDF_FormObject;
 class CPDF_LinkExtract;
 class CPDF_TextPageFind;
-class CPDF_DocProgressiveSearch;
+
 #define FPDFTEXT_CHAR_ERROR -1
 #define FPDFTEXT_CHAR_NORMAL 0
 #define FPDFTEXT_CHAR_GENERATED 1
@@ -19,6 +26,7 @@
 #define FPDFTEXT_MC_PASS 0
 #define FPDFTEXT_MC_DONE 1
 #define FPDFTEXT_MC_DELAY 2
+
 typedef struct _PAGECHAR_INFO {
   int m_CharCode;
   FX_WCHAR m_Unicode;
@@ -231,5 +239,9 @@
 FX_STRSIZE FX_Unicode_GetNormalization(FX_WCHAR wch, FX_WCHAR* pDst);
 void NormalizeString(CFX_WideString& str);
 void NormalizeCompositeChar(FX_WCHAR wChar, CFX_WideString& sDest);
+void GetTextStream_Unicode(CFX_WideTextBuf& buffer,
+                           CPDF_PageObjects* pPage,
+                           FX_BOOL bUseLF,
+                           CFX_PtrArray* pObjArray);
 
 #endif  // CORE_SRC_FPDFTEXT_TEXT_INT_H_
diff --git a/core/src/fxge/dib/dib_int.h b/core/src/fxge/dib/dib_int.h
index d40e3a4..69f2823 100644
--- a/core/src/fxge/dib/dib_int.h
+++ b/core/src/fxge/dib/dib_int.h
@@ -7,6 +7,8 @@
 #ifndef CORE_SRC_FXGE_DIB_DIB_INT_H_
 #define CORE_SRC_FXGE_DIB_DIB_INT_H_
 
+extern const int SDP_Table[513];
+
 class CPDF_FixedMatrix {
  public:
   CPDF_FixedMatrix(const CFX_AffineMatrix& src, int bits) {
@@ -89,4 +91,10 @@
   int m_State;
 };
 
+FX_RECT FXDIB_SwapClipBox(FX_RECT& clip,
+                          int width,
+                          int height,
+                          FX_BOOL bFlipX,
+                          FX_BOOL bFlipY);
+
 #endif  // CORE_SRC_FXGE_DIB_DIB_INT_H_
diff --git a/core/src/fxge/dib/fx_dib_engine.cpp b/core/src/fxge/dib/fx_dib_engine.cpp
index b2da83a..33c0333 100644
--- a/core/src/fxge/dib/fx_dib_engine.cpp
+++ b/core/src/fxge/dib/fx_dib_engine.cpp
@@ -4,11 +4,12 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include <limits.h>
+
 #include "../../../include/fxge/fx_dib.h"
 #include "../../../include/fxge/fx_ge.h"
 #include "dib_int.h"
-#include <limits.h>
-extern int SDP_Table[513];
+
 void CWeightTable::Calc(int dest_len,
                         int dest_min,
                         int dest_max,
diff --git a/core/src/fxge/dib/fx_dib_main.cpp b/core/src/fxge/dib/fx_dib_main.cpp
index f3e3a23..d89fec7 100644
--- a/core/src/fxge/dib/fx_dib_main.cpp
+++ b/core/src/fxge/dib/fx_dib_main.cpp
@@ -1578,11 +1578,6 @@
 CFX_ImageRenderer::~CFX_ImageRenderer() {
   delete m_pTransformer;
 }
-extern FX_RECT _FXDIB_SwapClipBox(FX_RECT& clip,
-                                  int width,
-                                  int height,
-                                  FX_BOOL bFlipX,
-                                  FX_BOOL bFlipY);
 FX_BOOL CFX_ImageRenderer::Start(CFX_DIBitmap* pDevice,
                                  const CFX_ClipRgn* pClipRgn,
                                  const CFX_DIBSource* pSource,
@@ -1623,8 +1618,8 @@
       int dest_height = image_rect.Height();
       FX_RECT bitmap_clip = m_ClipBox;
       bitmap_clip.Offset(-image_rect.left, -image_rect.top);
-      bitmap_clip = _FXDIB_SwapClipBox(bitmap_clip, dest_width, dest_height,
-                                       m_Matrix.c > 0, m_Matrix.b < 0);
+      bitmap_clip = FXDIB_SwapClipBox(bitmap_clip, dest_width, dest_height,
+                                      m_Matrix.c > 0, m_Matrix.b < 0);
       m_Composer.Compose(pDevice, pClipRgn, bitmap_alpha, mask_color, m_ClipBox,
                          TRUE, m_Matrix.c > 0, m_Matrix.b < 0, m_bRgbByteOrder,
                          alpha_flag, pIccTransform, m_BlendType);
diff --git a/core/src/fxge/dib/fx_dib_transform.cpp b/core/src/fxge/dib/fx_dib_transform.cpp
index cbf3bdc..7a33f1d 100644
--- a/core/src/fxge/dib/fx_dib_transform.cpp
+++ b/core/src/fxge/dib/fx_dib_transform.cpp
@@ -6,7 +6,8 @@
 
 #include "../../../include/fxge/fx_dib.h"
 #include "dib_int.h"
-int SDP_Table[513] = {
+
+const int SDP_Table[513] = {
     256, 256, 256, 256, 256, 256, 256, 256, 256, 255, 255, 255, 255, 255, 255,
     254, 254, 254, 254, 253, 253, 253, 252, 252, 252, 251, 251, 251, 250, 250,
     249, 249, 249, 248, 248, 247, 247, 246, 246, 245, 244, 244, 243, 243, 242,
@@ -168,11 +169,11 @@
   return pTransBitmap;
 }
 #define FIX16_005 0.05f
-FX_RECT _FXDIB_SwapClipBox(FX_RECT& clip,
-                           int width,
-                           int height,
-                           FX_BOOL bFlipX,
-                           FX_BOOL bFlipY) {
+FX_RECT FXDIB_SwapClipBox(FX_RECT& clip,
+                          int width,
+                          int height,
+                          FX_BOOL bFlipX,
+                          FX_BOOL bFlipY) {
   FX_RECT rect;
   if (bFlipY) {
     rect.left = height - clip.top;
@@ -256,8 +257,8 @@
     int dest_width = result_rect.Width();
     int dest_height = result_rect.Height();
     result_clip.Offset(-result_rect.left, -result_rect.top);
-    result_clip = _FXDIB_SwapClipBox(result_clip, dest_width, dest_height,
-                                     pDestMatrix->c > 0, pDestMatrix->b < 0);
+    result_clip = FXDIB_SwapClipBox(result_clip, dest_width, dest_height,
+                                    pDestMatrix->c > 0, pDestMatrix->b < 0);
     m_Stretcher.Start(&m_Storer, pSrc, dest_height, dest_width, result_clip,
                       flags);
     m_Status = 1;
diff --git a/core/src/fxge/ge/fx_ge_font.cpp b/core/src/fxge/ge/fx_ge_font.cpp
index c3e8871..c7c4ed2 100644
--- a/core/src/fxge/ge/fx_ge_font.cpp
+++ b/core/src/fxge/ge/fx_ge_font.cpp
@@ -9,6 +9,7 @@
 #include "text_int.h"
 
 #define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em)
+
 extern void _FPDFAPI_GetInternalFontData(int id1,
                                          const uint8_t*& data,
                                          FX_DWORD& size);
diff --git a/core/src/fxge/ge/fx_ge_fontmap.cpp b/core/src/fxge/ge/fx_ge_fontmap.cpp
index cc4dc07..af6c43f 100644
--- a/core/src/fxge/ge/fx_ge_fontmap.cpp
+++ b/core/src/fxge/ge/fx_ge_fontmap.cpp
@@ -423,11 +423,6 @@
     {g_FoxitSymbolFontData, 16729},
     {g_FoxitDingbatsFontData, 29513},
 };
-void _FPDFAPI_GetInternalFontData(int id,
-                                  const uint8_t*& data,
-                                  FX_DWORD& size) {
-  CFX_GEModule::Get()->GetFontMgr()->GetStandardFont(data, size, id);
-}
 FX_BOOL CFX_FontMgr::GetStandardFont(const uint8_t*& pFontData,
                                      FX_DWORD& size,
                                      int index) {
@@ -495,8 +490,7 @@
   norm.MakeLower();
   return norm;
 }
-CFX_ByteString _FPDF_GetNameFromTT(const uint8_t* name_table,
-                                   FX_DWORD name_id) {
+CFX_ByteString GetNameFromTT(const uint8_t* name_table, FX_DWORD name_id) {
   const uint8_t* ptr = name_table + 2;
   int name_count = GET_TT_SHORT(ptr);
   int string_offset = GET_TT_SHORT(ptr + 2);
@@ -564,7 +558,7 @@
   if (size) {
     uint8_t* buffer = FX_Alloc(uint8_t, size);
     m_pFontInfo->GetFontData(hFont, 0x6e616d65, buffer, size);
-    result = _FPDF_GetNameFromTT(buffer, 6);
+    result = GetNameFromTT(buffer, 6);
     FX_Free(buffer);
   }
   return result;
@@ -1348,10 +1342,6 @@
   }
   m_Face = NULL;
 }
-extern FX_BOOL _LoadFile(FXFT_Library library,
-                         FXFT_Face* Face,
-                         IFX_FileRead* pFile,
-                         FXFT_Stream* stream);
 #if _FX_OS_ == _FX_ANDROID_
 IFX_SystemFontInfo* IFX_SystemFontInfo::CreateDefault() {
   return NULL;
@@ -1465,8 +1455,8 @@
   }
   CFX_ByteString names =
       _FPDF_LoadTableFromTT(pFile, tables, nTables, 0x6e616d65);
-  CFX_ByteString facename = _FPDF_GetNameFromTT(names, 1);
-  CFX_ByteString style = _FPDF_GetNameFromTT(names, 2);
+  CFX_ByteString facename = GetNameFromTT(names, 1);
+  CFX_ByteString style = GetNameFromTT(names, 2);
   if (style != "Regular") {
     facename += " " + style;
   }
diff --git a/core/src/fxge/ge/text_int.h b/core/src/fxge/ge/text_int.h
index b0193c4..2a81f55 100644
--- a/core/src/fxge/ge/text_int.h
+++ b/core/src/fxge/ge/text_int.h
@@ -7,6 +7,8 @@
 #ifndef CORE_SRC_FXGE_GE_TEXT_INT_H_
 #define CORE_SRC_FXGE_GE_TEXT_INT_H_
 
+#include "../../../include/fxge/fx_freetype.h"
+
 struct _CFX_UniqueKeyGen {
   void Generate(int count, ...);
   FX_CHAR m_Key[128];
diff --git a/fpdfsdk/include/fsdk_define.h b/fpdfsdk/include/fsdk_define.h
index d13f379..43283c1 100644
--- a/fpdfsdk/include/fsdk_define.h
+++ b/fpdfsdk/include/fsdk_define.h
@@ -106,5 +106,6 @@
 
 void CheckUnSupportError(CPDF_Document* pDoc, FX_DWORD err_code);
 void CheckUnSupportAnnot(CPDF_Document* pDoc, CPDF_Annot* pPDFAnnot);
+void ProcessParseError(FX_DWORD err_code);
 
 #endif  // FPDFSDK_INCLUDE_FSDK_DEFINE_H_
diff --git a/fpdfsdk/include/fxedit/fx_edit.h b/fpdfsdk/include/fxedit/fx_edit.h
index 4f8b2fb..23acbfa 100644
--- a/fpdfsdk/include/fxedit/fx_edit.h
+++ b/fpdfsdk/include/fxedit/fx_edit.h
@@ -568,4 +568,9 @@
   virtual ~IFX_List() {}
 };
 
+CFX_ByteString GetPDFWordString(IFX_Edit_FontMap* pFontMap,
+                                int32_t nFontIndex,
+                                FX_WORD Word,
+                                FX_WORD SubWord);
+
 #endif  // FPDFSDK_INCLUDE_FXEDIT_FX_EDIT_H_
diff --git a/fpdfsdk/src/fpdf_dataavail.cpp b/fpdfsdk/src/fpdf_dataavail.cpp
index 663e166..58bd384 100644
--- a/fpdfsdk/src/fpdf_dataavail.cpp
+++ b/fpdfsdk/src/fpdf_dataavail.cpp
@@ -10,7 +10,6 @@
 #include "../include/fpdfxfa/fpdfxfa_doc.h"
 #include "../include/fpdfxfa/fpdfxfa_app.h"
 
-extern void ProcessParseError(FX_DWORD err_code);
 class CFPDF_FileAvailWrap : public IFX_FileAvail {
  public:
   CFPDF_FileAvailWrap() { m_pfileAvail = NULL; }
diff --git a/fpdfsdk/src/fxedit/fxet_pageobjs.cpp b/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
index 1fb669b..9c18943 100644
--- a/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
+++ b/fpdfsdk/src/fxedit/fxet_pageobjs.cpp
@@ -11,11 +11,6 @@
 #define FX_EDIT_UNDERLINEHALFWIDTH 0.5f
 #define FX_EDIT_CROSSOUTHALFWIDTH 0.5f
 
-extern CFX_ByteString GetPDFWordString(IFX_Edit_FontMap* pFontMap,
-                                       int32_t nFontIndex,
-                                       FX_WORD Word,
-                                       FX_WORD SubWord);
-
 CPDF_Rect GetUnderLineRect(const CPVT_Word& word) {
   return CPDF_Rect(word.ptWord.x, word.ptWord.y + word.fDescent * 0.5f,
                    word.ptWord.x + word.fWidth,