diff --git a/BUILD.gn b/BUILD.gn
index 9ce6e81..b54f67d 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -805,8 +805,13 @@
     sources += [
       "core/fxcrt/cfx_char.cpp",
       "core/fxcrt/cfx_char.h",
+      "core/fxcrt/cfx_datetime.cpp",
+      "core/fxcrt/cfx_datetime.h",
+      "core/fxcrt/cfx_decimal.cpp",
+      "core/fxcrt/cfx_decimal.h",
       "core/fxcrt/fx_arabic.cpp",
       "core/fxcrt/fx_arabic.h",
+      "core/fxcrt/ifx_locale.h",
     ]
   }
 }
@@ -1229,6 +1234,8 @@
       "xfa/fde/xml/fde_xml.h",
       "xfa/fde/xml/fde_xml_imp.cpp",
       "xfa/fde/xml/fde_xml_imp.h",
+      "xfa/fgas/crt/cfgas_formatstring.cpp",
+      "xfa/fgas/crt/cfgas_formatstring.h",
       "xfa/fgas/crt/fgas_codepage.cpp",
       "xfa/fgas/crt/fgas_codepage.h",
       "xfa/fgas/crt/fgas_language.h",
@@ -1252,13 +1259,6 @@
       "xfa/fgas/layout/fgas_rtfbreak.h",
       "xfa/fgas/layout/fgas_textbreak.cpp",
       "xfa/fgas/layout/fgas_textbreak.h",
-      "xfa/fgas/localization/cfx_datetime.cpp",
-      "xfa/fgas/localization/cfx_datetime.h",
-      "xfa/fgas/localization/cfx_decimal.cpp",
-      "xfa/fgas/localization/cfx_decimal.h",
-      "xfa/fgas/localization/cfx_formatstring.cpp",
-      "xfa/fgas/localization/cfx_formatstring.h",
-      "xfa/fgas/localization/ifx_locale.h",
       "xfa/fwl/cfwl_app.cpp",
       "xfa/fwl/cfwl_app.h",
       "xfa/fwl/cfwl_barcode.cpp",
diff --git a/xfa/fgas/localization/cfx_datetime.cpp b/core/fxcrt/cfx_datetime.cpp
similarity index 98%
rename from xfa/fgas/localization/cfx_datetime.cpp
rename to core/fxcrt/cfx_datetime.cpp
index eb804ee..dcf25d5 100644
--- a/xfa/fgas/localization/cfx_datetime.cpp
+++ b/core/fxcrt/cfx_datetime.cpp
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
+#include "core/fxcrt/cfx_datetime.h"
 #include "core/fxcrt/fx_system.h"
-#include "xfa/fgas/localization/cfx_datetime.h"
 
 #if _FX_OS_ == _FX_LINUX_DESKTOP_ || _FX_OS_ == _FX_ANDROID_ || \
     _FX_OS_ == _FX_MACOSX_ || _FX_OS_ == _FX_IOS_
diff --git a/xfa/fgas/localization/cfx_datetime.h b/core/fxcrt/cfx_datetime.h
similarity index 93%
rename from xfa/fgas/localization/cfx_datetime.h
rename to core/fxcrt/cfx_datetime.h
index d7bfa8d..2de75c4 100644
--- a/xfa/fgas/localization/cfx_datetime.h
+++ b/core/fxcrt/cfx_datetime.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FGAS_LOCALIZATION_CFX_DATETIME_H_
-#define XFA_FGAS_LOCALIZATION_CFX_DATETIME_H_
+#ifndef CORE_FXCRT_CFX_DATETIME_H_
+#define CORE_FXCRT_CFX_DATETIME_H_
 
 #include "core/fxcrt/fx_system.h"
 
@@ -100,4 +100,4 @@
 #pragma pack(pop)
 #endif
 
-#endif  // XFA_FGAS_LOCALIZATION_CFX_DATETIME_H_
+#endif  // CORE_FXCRT_CFX_DATETIME_H_
diff --git a/xfa/fgas/localization/cfx_decimal.cpp b/core/fxcrt/cfx_decimal.cpp
similarity index 99%
rename from xfa/fgas/localization/cfx_decimal.cpp
rename to core/fxcrt/cfx_decimal.cpp
index b3296f3..1baa689 100644
--- a/xfa/fgas/localization/cfx_decimal.cpp
+++ b/core/fxcrt/cfx_decimal.cpp
@@ -4,7 +4,7 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fgas/localization/cfx_decimal.h"
+#include "core/fxcrt/cfx_decimal.h"
 
 #include <algorithm>
 #include <utility>
diff --git a/xfa/fgas/localization/cfx_decimal.h b/core/fxcrt/cfx_decimal.h
similarity index 87%
rename from xfa/fgas/localization/cfx_decimal.h
rename to core/fxcrt/cfx_decimal.h
index 36b898d..5442804 100644
--- a/xfa/fgas/localization/cfx_decimal.h
+++ b/core/fxcrt/cfx_decimal.h
@@ -4,8 +4,8 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FGAS_LOCALIZATION_CFX_DECIMAL_H_
-#define XFA_FGAS_LOCALIZATION_CFX_DECIMAL_H_
+#ifndef CORE_FXCRT_CFX_DECIMAL_H_
+#define CORE_FXCRT_CFX_DECIMAL_H_
 
 #include "core/fxcrt/fx_string.h"
 
@@ -39,4 +39,4 @@
   uint32_t m_uFlags;
 };
 
-#endif  // XFA_FGAS_LOCALIZATION_CFX_DECIMAL_H_
+#endif  // CORE_FXCRT_CFX_DECIMAL_H_
diff --git a/xfa/fgas/localization/ifx_locale.h b/core/fxcrt/ifx_locale.h
similarity index 91%
rename from xfa/fgas/localization/ifx_locale.h
rename to core/fxcrt/ifx_locale.h
index b9079d0..5039aec 100644
--- a/xfa/fgas/localization/ifx_locale.h
+++ b/core/fxcrt/ifx_locale.h
@@ -4,11 +4,11 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FGAS_LOCALIZATION_IFX_LOCALE_H_
-#define XFA_FGAS_LOCALIZATION_IFX_LOCALE_H_
+#ifndef CORE_FXCRT_IFX_LOCALE_H_
+#define CORE_FXCRT_IFX_LOCALE_H_
 
+#include "core/fxcrt/cfx_datetime.h"
 #include "core/fxcrt/fx_string.h"
-#include "xfa/fgas/localization/cfx_datetime.h"
 
 enum FX_LOCALENUMSYMBOL {
   FX_LOCALENUMSYMBOL_Decimal,
@@ -73,4 +73,4 @@
   virtual CFX_WideString GetNumPattern(FX_LOCALENUMSUBCATEGORY eType) const = 0;
 };
 
-#endif  // XFA_FGAS_LOCALIZATION_IFX_LOCALE_H_
+#endif  // CORE_FXCRT_IFX_LOCALE_H_
diff --git a/xfa/fgas/localization/cfx_formatstring.cpp b/xfa/fgas/crt/cfgas_formatstring.cpp
similarity index 96%
rename from xfa/fgas/localization/cfx_formatstring.cpp
rename to xfa/fgas/crt/cfgas_formatstring.cpp
index 01e1096..57882da 100644
--- a/xfa/fgas/localization/cfx_formatstring.cpp
+++ b/xfa/fgas/crt/cfgas_formatstring.cpp
@@ -4,14 +4,14 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#include "xfa/fgas/localization/cfx_formatstring.h"
+#include "xfa/fgas/crt/cfgas_formatstring.h"
 
 #include <algorithm>
 #include <vector>
 
+#include "core/fxcrt/cfx_decimal.h"
 #include "core/fxcrt/fx_ext.h"
 #include "core/fxcrt/fx_xml.h"
-#include "xfa/fgas/localization/cfx_decimal.h"
 
 #define FX_LOCALECATEGORY_DateHash 0xbde9abde
 #define FX_LOCALECATEGORY_TimeHash 0x2d71b00f
@@ -1077,12 +1077,12 @@
   return true;
 }
 
-CFX_FormatString::CFX_FormatString(CXFA_LocaleMgr* pLocaleMgr)
+CFGAS_FormatString::CFGAS_FormatString(CXFA_LocaleMgr* pLocaleMgr)
     : m_pLocaleMgr(pLocaleMgr) {}
 
-CFX_FormatString::~CFX_FormatString() {}
+CFGAS_FormatString::~CFGAS_FormatString() {}
 
-void CFX_FormatString::SplitFormatString(
+void CFGAS_FormatString::SplitFormatString(
     const CFX_WideString& wsFormatString,
     std::vector<CFX_WideString>& wsPatterns) {
   int32_t iStrLen = wsFormatString.GetLength();
@@ -1105,7 +1105,7 @@
   }
 }
 
-FX_LOCALECATEGORY CFX_FormatString::GetCategory(
+FX_LOCALECATEGORY CFGAS_FormatString::GetCategory(
     const CFX_WideString& wsPattern) {
   FX_LOCALECATEGORY eCategory = FX_LOCALECATEGORY_Unknown;
   int32_t ccf = 0;
@@ -1163,7 +1163,7 @@
   return eCategory;
 }
 
-CFX_WideString CFX_FormatString::GetLocaleName(
+CFX_WideString CFGAS_FormatString::GetLocaleName(
     const CFX_WideString& wsPattern) {
   int32_t ccf = 0;
   int32_t iLenf = wsPattern.GetLength();
@@ -1184,9 +1184,9 @@
   return CFX_WideString();
 }
 
-IFX_Locale* CFX_FormatString::GetTextFormat(const CFX_WideString& wsPattern,
-                                            const CFX_WideStringC& wsCategory,
-                                            CFX_WideString& wsPurgePattern) {
+IFX_Locale* CFGAS_FormatString::GetTextFormat(const CFX_WideString& wsPattern,
+                                              const CFX_WideStringC& wsCategory,
+                                              CFX_WideString& wsPurgePattern) {
   IFX_Locale* pLocale = nullptr;
   int32_t ccf = 0;
   int32_t iLenf = wsPattern.GetLength();
@@ -1239,10 +1239,11 @@
 #define FX_NUMSTYLE_Percent 0x01
 #define FX_NUMSTYLE_Exponent 0x02
 #define FX_NUMSTYLE_DotVorv 0x04
-IFX_Locale* CFX_FormatString::GetNumericFormat(const CFX_WideString& wsPattern,
-                                               int32_t& iDotIndex,
-                                               uint32_t& dwStyle,
-                                               CFX_WideString& wsPurgePattern) {
+IFX_Locale* CFGAS_FormatString::GetNumericFormat(
+    const CFX_WideString& wsPattern,
+    int32_t& iDotIndex,
+    uint32_t& dwStyle,
+    CFX_WideString& wsPurgePattern) {
   dwStyle = 0;
   IFX_Locale* pLocale = nullptr;
   int32_t ccf = 0;
@@ -1343,9 +1344,9 @@
   return pLocale;
 }
 
-bool CFX_FormatString::ParseText(const CFX_WideString& wsSrcText,
-                                 const CFX_WideString& wsPattern,
-                                 CFX_WideString& wsValue) {
+bool CFGAS_FormatString::ParseText(const CFX_WideString& wsSrcText,
+                                   const CFX_WideString& wsPattern,
+                                   CFX_WideString& wsValue) {
   wsValue.clear();
   if (wsSrcText.IsEmpty() || wsPattern.IsEmpty()) {
     return false;
@@ -1416,9 +1417,9 @@
   return iPattern == iLenPattern && iText == iLenText;
 }
 
-bool CFX_FormatString::ParseNum(const CFX_WideString& wsSrcNum,
-                                const CFX_WideString& wsPattern,
-                                CFX_WideString& wsValue) {
+bool CFGAS_FormatString::ParseNum(const CFX_WideString& wsSrcNum,
+                                  const CFX_WideString& wsPattern,
+                                  CFX_WideString& wsValue) {
   wsValue.clear();
   if (wsSrcNum.IsEmpty() || wsPattern.IsEmpty())
     return false;
@@ -1897,7 +1898,7 @@
   return true;
 }
 
-FX_DATETIMETYPE CFX_FormatString::GetDateTimeFormat(
+FX_DATETIMETYPE CFGAS_FormatString::GetDateTimeFormat(
     const CFX_WideString& wsPattern,
     IFX_Locale*& pLocale,
     CFX_WideString& wsDatePattern,
@@ -2036,10 +2037,10 @@
   return (FX_DATETIMETYPE)iFindCategory;
 }
 
-bool CFX_FormatString::ParseDateTime(const CFX_WideString& wsSrcDateTime,
-                                     const CFX_WideString& wsPattern,
-                                     FX_DATETIMETYPE eDateTimeType,
-                                     CFX_DateTime* dtValue) {
+bool CFGAS_FormatString::ParseDateTime(const CFX_WideString& wsSrcDateTime,
+                                       const CFX_WideString& wsPattern,
+                                       FX_DATETIMETYPE eDateTimeType,
+                                       CFX_DateTime* dtValue) {
   dtValue->Reset();
 
   if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty()) {
@@ -2083,8 +2084,8 @@
   }
   return true;
 }
-bool CFX_FormatString::ParseZero(const CFX_WideString& wsSrcText,
-                                 const CFX_WideString& wsPattern) {
+bool CFGAS_FormatString::ParseZero(const CFX_WideString& wsSrcText,
+                                   const CFX_WideString& wsPattern) {
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"zero", wsTextFormat);
   int32_t iText = 0, iPattern = 0;
@@ -2113,8 +2114,8 @@
   }
   return iPattern == iLenPattern && iText == iLenText;
 }
-bool CFX_FormatString::ParseNull(const CFX_WideString& wsSrcText,
-                                 const CFX_WideString& wsPattern) {
+bool CFGAS_FormatString::ParseNull(const CFX_WideString& wsSrcText,
+                                   const CFX_WideString& wsPattern) {
   CFX_WideString wsTextFormat;
   GetTextFormat(wsPattern, L"null", wsTextFormat);
   int32_t iText = 0, iPattern = 0;
@@ -2143,9 +2144,9 @@
   }
   return iPattern == iLenPattern && iText == iLenText;
 }
-bool CFX_FormatString::FormatText(const CFX_WideString& wsSrcText,
-                                  const CFX_WideString& wsPattern,
-                                  CFX_WideString& wsOutput) {
+bool CFGAS_FormatString::FormatText(const CFX_WideString& wsSrcText,
+                                    const CFX_WideString& wsPattern,
+                                    CFX_WideString& wsOutput) {
   if (wsPattern.IsEmpty()) {
     return false;
   }
@@ -2204,9 +2205,9 @@
   return iText == iLenText;
 }
 
-bool CFX_FormatString::FormatStrNum(const CFX_WideStringC& wsInputNum,
-                                    const CFX_WideString& wsPattern,
-                                    CFX_WideString& wsOutput) {
+bool CFGAS_FormatString::FormatStrNum(const CFX_WideStringC& wsInputNum,
+                                      const CFX_WideString& wsPattern,
+                                      CFX_WideString& wsOutput) {
   if (wsInputNum.IsEmpty() || wsPattern.IsEmpty()) {
     return false;
   }
@@ -2626,19 +2627,19 @@
   return true;
 }
 
-bool CFX_FormatString::FormatNum(const CFX_WideString& wsSrcNum,
-                                 const CFX_WideString& wsPattern,
-                                 CFX_WideString& wsOutput) {
+bool CFGAS_FormatString::FormatNum(const CFX_WideString& wsSrcNum,
+                                   const CFX_WideString& wsPattern,
+                                   CFX_WideString& wsOutput) {
   if (wsSrcNum.IsEmpty() || wsPattern.IsEmpty()) {
     return false;
   }
   return FormatStrNum(wsSrcNum.AsStringC(), wsPattern, wsOutput);
 }
 
-bool CFX_FormatString::FormatDateTime(const CFX_WideString& wsSrcDateTime,
-                                      const CFX_WideString& wsPattern,
-                                      CFX_WideString& wsOutput,
-                                      FX_DATETIMETYPE eDateTimeType) {
+bool CFGAS_FormatString::FormatDateTime(const CFX_WideString& wsSrcDateTime,
+                                        const CFX_WideString& wsPattern,
+                                        CFX_WideString& wsOutput,
+                                        FX_DATETIMETYPE eDateTimeType) {
   if (wsSrcDateTime.IsEmpty() || wsPattern.IsEmpty()) {
     return false;
   }
@@ -2689,8 +2690,8 @@
   return false;
 }
 
-bool CFX_FormatString::FormatZero(const CFX_WideString& wsPattern,
-                                  CFX_WideString& wsOutput) {
+bool CFGAS_FormatString::FormatZero(const CFX_WideString& wsPattern,
+                                    CFX_WideString& wsOutput) {
   if (wsPattern.IsEmpty()) {
     return false;
   }
@@ -2711,8 +2712,8 @@
   }
   return true;
 }
-bool CFX_FormatString::FormatNull(const CFX_WideString& wsPattern,
-                                  CFX_WideString& wsOutput) {
+bool CFGAS_FormatString::FormatNull(const CFX_WideString& wsPattern,
+                                    CFX_WideString& wsOutput) {
   if (wsPattern.IsEmpty()) {
     return false;
   }
@@ -2734,6 +2735,7 @@
   return true;
 }
 
-IFX_Locale* CFX_FormatString::GetPatternLocale(const CFX_WideString& wsLocale) {
+IFX_Locale* CFGAS_FormatString::GetPatternLocale(
+    const CFX_WideString& wsLocale) {
   return m_pLocaleMgr->GetLocaleByName(wsLocale);
 }
diff --git a/xfa/fgas/localization/cfx_formatstring.h b/xfa/fgas/crt/cfgas_formatstring.h
similarity index 90%
rename from xfa/fgas/localization/cfx_formatstring.h
rename to xfa/fgas/crt/cfgas_formatstring.h
index 80e036f..d2d35a3 100644
--- a/xfa/fgas/localization/cfx_formatstring.h
+++ b/xfa/fgas/crt/cfgas_formatstring.h
@@ -4,12 +4,12 @@
 
 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
 
-#ifndef XFA_FGAS_LOCALIZATION_CFX_FORMATSTRING_H_
-#define XFA_FGAS_LOCALIZATION_CFX_FORMATSTRING_H_
+#ifndef XFA_FGAS_CRT_CFGAS_FORMATSTRING_H_
+#define XFA_FGAS_CRT_CFGAS_FORMATSTRING_H_
 
 #include <vector>
 
-#include "xfa/fgas/localization/ifx_locale.h"
+#include "core/fxcrt/ifx_locale.h"
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 
 bool FX_DateFromCanonical(const CFX_WideString& wsDate, CFX_DateTime* datetime);
@@ -17,10 +17,10 @@
                           CFX_DateTime* datetime,
                           IFX_Locale* pLocale);
 
-class CFX_FormatString {
+class CFGAS_FormatString {
  public:
-  explicit CFX_FormatString(CXFA_LocaleMgr* pLocaleMgr);
-  ~CFX_FormatString();
+  explicit CFGAS_FormatString(CXFA_LocaleMgr* pLocaleMgr);
+  ~CFGAS_FormatString();
 
   void SplitFormatString(const CFX_WideString& wsFormatString,
                          std::vector<CFX_WideString>& wsPatterns);
@@ -73,4 +73,4 @@
   CXFA_LocaleMgr* m_pLocaleMgr;
 };
 
-#endif  // XFA_FGAS_LOCALIZATION_CFX_FORMATSTRING_H_
+#endif  // XFA_FGAS_CRT_CFGAS_FORMATSTRING_H_
diff --git a/xfa/fwl/cfwl_monthcalendar.h b/xfa/fwl/cfwl_monthcalendar.h
index 4835320..70c0401 100644
--- a/xfa/fwl/cfwl_monthcalendar.h
+++ b/xfa/fwl/cfwl_monthcalendar.h
@@ -10,7 +10,7 @@
 #include <memory>
 #include <vector>
 
-#include "xfa/fgas/localization/cfx_datetime.h"
+#include "core/fxcrt/cfx_datetime.h"
 #include "xfa/fwl/cfwl_event.h"
 #include "xfa/fwl/cfwl_widget.h"
 #include "xfa/fwl/cfwl_widgetproperties.h"
diff --git a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
index bbda9ee..b95a6d3 100644
--- a/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
+++ b/xfa/fxfa/fm2js/xfa_fm2jscontext.cpp
@@ -10,13 +10,13 @@
 
 #include <algorithm>
 
+#include "core/fxcrt/cfx_decimal.h"
 #include "core/fxcrt/fx_ext.h"
 #include "fxjs/cfxjse_arguments.h"
 #include "fxjs/cfxjse_class.h"
 #include "fxjs/cfxjse_value.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
-#include "xfa/fgas/localization/cfx_decimal.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/fm2js/xfa_program.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
diff --git a/xfa/fxfa/parser/cxfa_localemgr.cpp b/xfa/fxfa/parser/cxfa_localemgr.cpp
index ddcee39..ec29c56 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.cpp
+++ b/xfa/fxfa/parser/cxfa_localemgr.cpp
@@ -14,7 +14,6 @@
 #include "core/fxcodec/fx_codec.h"
 #include "core/fxcrt/fx_xml.h"
 #include "core/fxge/cfx_gemodule.h"
-#include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_node.h"
 #include "xfa/fxfa/parser/cxfa_nodelocale.h"
 #include "xfa/fxfa/parser/cxfa_xmllocale.h"
diff --git a/xfa/fxfa/parser/cxfa_localemgr.h b/xfa/fxfa/parser/cxfa_localemgr.h
index 4151317..307cc62 100644
--- a/xfa/fxfa/parser/cxfa_localemgr.h
+++ b/xfa/fxfa/parser/cxfa_localemgr.h
@@ -10,8 +10,8 @@
 #include <memory>
 #include <vector>
 
-#include "xfa/fgas/localization/cfx_datetime.h"
-#include "xfa/fgas/localization/ifx_locale.h"
+#include "core/fxcrt/cfx_datetime.h"
+#include "core/fxcrt/ifx_locale.h"
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 
 class CXFA_Node;
diff --git a/xfa/fxfa/parser/cxfa_localevalue.cpp b/xfa/fxfa/parser/cxfa_localevalue.cpp
index e66e553..6778092 100644
--- a/xfa/fxfa/parser/cxfa_localevalue.cpp
+++ b/xfa/fxfa/parser/cxfa_localevalue.cpp
@@ -11,7 +11,7 @@
 #include "core/fxcrt/fx_ext.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
-#include "xfa/fgas/localization/cfx_formatstring.h"
+#include "xfa/fgas/crt/cfgas_formatstring.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
 #include "xfa/fxfa/parser/cxfa_localemgr.h"
 #include "xfa/fxfa/parser/xfa_utils.h"
@@ -90,7 +90,7 @@
   if (pLocale)
     m_pLocaleMgr->SetDefLocale(pLocale);
 
-  auto pFormat = pdfium::MakeUnique<CFX_FormatString>(m_pLocaleMgr);
+  auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr);
   std::vector<CFX_WideString> wsPatterns;
   pFormat->SplitFormatString(wsPattern, wsPatterns);
 
@@ -464,7 +464,7 @@
                                       const CFX_WideString& wsFormat,
                                       IFX_Locale* pLocale,
                                       XFA_VALUEPICTURE eValueType) const {
-  auto pFormat = pdfium::MakeUnique<CFX_FormatString>(m_pLocaleMgr);
+  auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr);
   std::vector<CFX_WideString> wsPatterns;
   pFormat->SplitFormatString(wsFormat, wsPatterns);
   wsResult.clear();
@@ -486,7 +486,7 @@
 
   wsResult.clear();
   bool bRet = false;
-  auto pFormat = pdfium::MakeUnique<CFX_FormatString>(m_pLocaleMgr);
+  auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr);
   FX_LOCALECATEGORY eCategory = pFormat->GetCategory(wsFormat);
   eCategory = XFA_ValugeCategory(eCategory, m_dwType);
   switch (eCategory) {
@@ -795,7 +795,7 @@
   if (pLocale)
     m_pLocaleMgr->SetDefLocale(pLocale);
 
-  auto pFormat = pdfium::MakeUnique<CFX_FormatString>(m_pLocaleMgr);
+  auto pFormat = pdfium::MakeUnique<CFGAS_FormatString>(m_pLocaleMgr);
   std::vector<CFX_WideString> wsPatterns;
   pFormat->SplitFormatString(wsPattern, wsPatterns);
   bool bRet = false;
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index cd65f6a..75a125b 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -12,13 +12,13 @@
 #include <utility>
 #include <vector>
 
+#include "core/fxcrt/cfx_decimal.h"
 #include "core/fxcrt/fx_ext.h"
 #include "fxjs/cfxjse_value.h"
 #include "third_party/base/ptr_util.h"
 #include "third_party/base/stl_util.h"
 #include "xfa/fde/xml/fde_xml_imp.h"
 #include "xfa/fgas/crt/fgas_codepage.h"
-#include "xfa/fgas/localization/cfx_decimal.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/cxfa_eventparam.h"
 #include "xfa/fxfa/cxfa_ffwidget.h"
diff --git a/xfa/fxfa/parser/cxfa_nodelocale.h b/xfa/fxfa/parser/cxfa_nodelocale.h
index dbecdca..2465650 100644
--- a/xfa/fxfa/parser/cxfa_nodelocale.h
+++ b/xfa/fxfa/parser/cxfa_nodelocale.h
@@ -9,7 +9,7 @@
 
 #include <memory>
 
-#include "xfa/fgas/localization/ifx_locale.h"
+#include "core/fxcrt/ifx_locale.h"
 #include "xfa/fxfa/fxfa_basic.h"
 
 class CXFA_Node;
diff --git a/xfa/fxfa/parser/cxfa_timezoneprovider.h b/xfa/fxfa/parser/cxfa_timezoneprovider.h
index eace151..753fbb7 100644
--- a/xfa/fxfa/parser/cxfa_timezoneprovider.h
+++ b/xfa/fxfa/parser/cxfa_timezoneprovider.h
@@ -7,7 +7,7 @@
 #ifndef XFA_FXFA_PARSER_CXFA_TIMEZONEPROVIDER_H_
 #define XFA_FXFA_PARSER_CXFA_TIMEZONEPROVIDER_H_
 
-#include "xfa/fgas/localization/cfx_datetime.h"
+#include "core/fxcrt/cfx_datetime.h"
 
 class CXFA_TimeZoneProvider {
  public:
diff --git a/xfa/fxfa/parser/cxfa_widgetdata.cpp b/xfa/fxfa/parser/cxfa_widgetdata.cpp
index d6fb3a9..0065296 100644
--- a/xfa/fxfa/parser/cxfa_widgetdata.cpp
+++ b/xfa/fxfa/parser/cxfa_widgetdata.cpp
@@ -6,9 +6,9 @@
 
 #include "xfa/fxfa/parser/cxfa_widgetdata.h"
 
+#include "core/fxcrt/cfx_decimal.h"
 #include "core/fxcrt/fx_ext.h"
 #include "third_party/base/stl_util.h"
-#include "xfa/fgas/localization/cfx_decimal.h"
 #include "xfa/fxbarcode/BC_Library.h"
 #include "xfa/fxfa/app/xfa_ffnotify.h"
 #include "xfa/fxfa/parser/cxfa_document.h"
diff --git a/xfa/fxfa/parser/cxfa_xmllocale.h b/xfa/fxfa/parser/cxfa_xmllocale.h
index 374dab0..a583856 100644
--- a/xfa/fxfa/parser/cxfa_xmllocale.h
+++ b/xfa/fxfa/parser/cxfa_xmllocale.h
@@ -9,7 +9,7 @@
 
 #include <memory>
 
-#include "xfa/fgas/localization/ifx_locale.h"
+#include "core/fxcrt/ifx_locale.h"
 
 class CXML_Element;
 
