diff --git a/xfa/fwl/theme/cfwl_fontmanager.cpp b/xfa/fwl/theme/cfwl_fontmanager.cpp
index ebf48e0..01fca70 100644
--- a/xfa/fwl/theme/cfwl_fontmanager.cpp
+++ b/xfa/fwl/theme/cfwl_fontmanager.cpp
@@ -34,40 +34,9 @@
 
 CFWL_FontManager::~CFWL_FontManager() = default;
 
-RetainPtr<CFGAS_GEFont> CFWL_FontManager::FindFont(WideStringView wsFontFamily,
-                                                   uint32_t dwFontStyles) {
-  for (const auto& pData : m_FontsArray) {
-    if (pData->Equal(wsFontFamily, dwFontStyles))
-      return pData->GetFont();
+RetainPtr<CFGAS_GEFont> CFWL_FontManager::GetFWLFont() {
+  if (!m_pFWLFont) {
+    m_pFWLFont = CFGAS_GEFont::LoadFont(L"Helvetica", 0, FX_CodePage::kDefANSI);
   }
-  auto pFontData = std::make_unique<FontData>();
-  if (!pFontData->LoadFont(wsFontFamily, dwFontStyles))
-    return nullptr;
-
-  m_FontsArray.push_back(std::move(pFontData));
-  return m_FontsArray.back()->GetFont();
-}
-
-CFWL_FontManager::FontData::FontData() = default;
-
-CFWL_FontManager::FontData::~FontData() = default;
-
-bool CFWL_FontManager::FontData::Equal(WideStringView wsFontFamily,
-                                       uint32_t dwFontStyles) {
-  return m_wsFamily == wsFontFamily && m_dwStyles == dwFontStyles;
-}
-
-bool CFWL_FontManager::FontData::LoadFont(WideStringView wsFontFamily,
-                                          uint32_t dwFontStyles) {
-  m_wsFamily = wsFontFamily;
-  m_dwStyles = dwFontStyles;
-
-  // TODO(tsepez): check usage of c_str() below.
-  m_pFont = CFGAS_GEFont::LoadFont(wsFontFamily.unterminated_c_str(),
-                                   dwFontStyles, FX_CodePage::kDefANSI);
-  return !!m_pFont;
-}
-
-RetainPtr<CFGAS_GEFont> CFWL_FontManager::FontData::GetFont() const {
-  return m_pFont;
+  return m_pFWLFont;
 }
diff --git a/xfa/fwl/theme/cfwl_fontmanager.h b/xfa/fwl/theme/cfwl_fontmanager.h
index 36162ce..c08be4e 100644
--- a/xfa/fwl/theme/cfwl_fontmanager.h
+++ b/xfa/fwl/theme/cfwl_fontmanager.h
@@ -7,13 +7,7 @@
 #ifndef XFA_FWL_THEME_CFWL_FONTMANAGER_H_
 #define XFA_FWL_THEME_CFWL_FONTMANAGER_H_
 
-#include <stdint.h>
-
-#include <memory>
-#include <vector>
-
 #include "core/fxcrt/retain_ptr.h"
-#include "core/fxcrt/widestring.h"
 
 class CFGAS_GEFont;
 
@@ -22,30 +16,13 @@
   static CFWL_FontManager* GetInstance();
   static void DestroyInstance();
 
-  RetainPtr<CFGAS_GEFont> FindFont(WideStringView wsFontFamily,
-                                   uint32_t dwFontStyles);
+  RetainPtr<CFGAS_GEFont> GetFWLFont();
 
  private:
-  class FontData final {
-   public:
-    FontData();
-    ~FontData();
-
-    bool Equal(WideStringView wsFontFamily, uint32_t dwFontStyles);
-    bool LoadFont(WideStringView wsFontFamily, uint32_t dwFontStyles);
-
-    RetainPtr<CFGAS_GEFont> GetFont() const;
-
-   private:
-    WideString m_wsFamily;
-    uint32_t m_dwStyles = 0;
-    RetainPtr<CFGAS_GEFont> m_pFont;
-  };
-
   CFWL_FontManager();
   ~CFWL_FontManager();
 
-  std::vector<std::unique_ptr<FontData>> m_FontsArray;
+  RetainPtr<CFGAS_GEFont> m_pFWLFont;
 };
 
 #endif  // XFA_FWL_THEME_CFWL_FONTMANAGER_H_
diff --git a/xfa/fwl/theme/cfwl_widgettp.cpp b/xfa/fwl/theme/cfwl_widgettp.cpp
index 7220296..34193fb 100644
--- a/xfa/fwl/theme/cfwl_widgettp.cpp
+++ b/xfa/fwl/theme/cfwl_widgettp.cpp
@@ -78,7 +78,7 @@
   if (m_pTextOut)
     return;
 
-  m_pFGASFont = CFWL_FontManager::GetInstance()->FindFont(L"Helvetica", 0);
+  m_pFGASFont = CFWL_FontManager::GetInstance()->GetFWLFont();
   m_pTextOut = std::make_unique<CFDE_TextOut>();
   m_pTextOut->SetFont(m_pFGASFont);
   m_pTextOut->SetFontSize(FWLTHEME_CAPACITY_FontSize);
