diff --git a/core/fpdfapi/font/cpdf_font.cpp b/core/fpdfapi/font/cpdf_font.cpp
index 4e2e7bd..baac1d3 100644
--- a/core/fpdfapi/font/cpdf_font.cpp
+++ b/core/fpdfapi/font/cpdf_font.cpp
@@ -306,10 +306,9 @@
 }
 
 // static
-std::unique_ptr<CPDF_Font> CPDF_Font::Create(
-    CPDF_Document* pDoc,
-    CPDF_Dictionary* pFontDict,
-    std::unique_ptr<FormFactoryIface> pFactory) {
+std::unique_ptr<CPDF_Font> CPDF_Font::Create(CPDF_Document* pDoc,
+                                             CPDF_Dictionary* pFontDict,
+                                             FormFactoryIface* pFactory) {
   ByteString type = pFontDict->GetStringFor("Subtype");
   std::unique_ptr<CPDF_Font> pFont;
   if (type == "TrueType") {
@@ -326,8 +325,7 @@
     if (!pFont)
       pFont = pdfium::MakeUnique<CPDF_TrueTypeFont>(pDoc, pFontDict);
   } else if (type == "Type3") {
-    pFont = pdfium::MakeUnique<CPDF_Type3Font>(pDoc, pFontDict,
-                                               std::move(pFactory));
+    pFont = pdfium::MakeUnique<CPDF_Type3Font>(pDoc, pFontDict, pFactory);
   } else if (type == "Type0") {
     pFont = pdfium::MakeUnique<CPDF_CIDFont>(pDoc, pFontDict);
   } else {
diff --git a/core/fpdfapi/font/cpdf_font.h b/core/fpdfapi/font/cpdf_font.h
index ecaedcf..1a1d361 100644
--- a/core/fpdfapi/font/cpdf_font.h
+++ b/core/fpdfapi/font/cpdf_font.h
@@ -56,10 +56,9 @@
   };
 
   // |pFactory| only required for Type3 fonts.
-  static std::unique_ptr<CPDF_Font> Create(
-      CPDF_Document* pDoc,
-      CPDF_Dictionary* pFontDict,
-      std::unique_ptr<FormFactoryIface> pFactory);
+  static std::unique_ptr<CPDF_Font> Create(CPDF_Document* pDoc,
+                                           CPDF_Dictionary* pFontDict,
+                                           FormFactoryIface* pFactory);
 
   static CPDF_Font* GetStockFont(CPDF_Document* pDoc, ByteStringView fontname);
   static const uint32_t kInvalidCharCode = static_cast<uint32_t>(-1);
diff --git a/core/fpdfapi/font/cpdf_type3font.cpp b/core/fpdfapi/font/cpdf_type3font.cpp
index e559a5b..9983f8a 100644
--- a/core/fpdfapi/font/cpdf_type3font.cpp
+++ b/core/fpdfapi/font/cpdf_type3font.cpp
@@ -25,9 +25,8 @@
 
 CPDF_Type3Font::CPDF_Type3Font(CPDF_Document* pDocument,
                                CPDF_Dictionary* pFontDict,
-                               std::unique_ptr<FormFactoryIface> pFormFactory)
-    : CPDF_SimpleFont(pDocument, pFontDict),
-      m_pFormFactory(std::move(pFormFactory)) {
+                               FormFactoryIface* pFormFactory)
+    : CPDF_SimpleFont(pDocument, pFontDict), m_pFormFactory(pFormFactory) {
   ASSERT(GetDocument());
   memset(m_CharWidthL, 0, sizeof(m_CharWidthL));
 }
diff --git a/core/fpdfapi/font/cpdf_type3font.h b/core/fpdfapi/font/cpdf_type3font.h
index fde66d0..68e0e92 100644
--- a/core/fpdfapi/font/cpdf_type3font.h
+++ b/core/fpdfapi/font/cpdf_type3font.h
@@ -13,6 +13,7 @@
 #include "core/fpdfapi/font/cpdf_simplefont.h"
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxcrt/fx_system.h"
+#include "core/fxcrt/unowned_ptr.h"
 
 class CPDF_Dictionary;
 class CPDF_Document;
@@ -23,7 +24,7 @@
  public:
   CPDF_Type3Font(CPDF_Document* pDocument,
                  CPDF_Dictionary* pFontDict,
-                 std::unique_ptr<FormFactoryIface> pFormFactory);
+                 FormFactoryIface* pFormFactory);
   ~CPDF_Type3Font() override;
 
   // CPDF_Font:
@@ -51,7 +52,7 @@
   // The depth char loading is in, to avoid recurive calling LoadChar().
   int m_CharLoadingDepth = 0;
   CFX_Matrix m_FontMatrix;
-  std::unique_ptr<FormFactoryIface> m_pFormFactory;
+  UnownedPtr<FormFactoryIface> const m_pFormFactory;
   RetainPtr<CPDF_Dictionary> m_pCharProcs;
   RetainPtr<CPDF_Dictionary> m_pPageResources;
   RetainPtr<CPDF_Dictionary> m_pFontResources;
diff --git a/core/fpdfapi/page/cpdf_docpagedata.cpp b/core/fpdfapi/page/cpdf_docpagedata.cpp
index 55aacf8..978de5c 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.cpp
+++ b/core/fpdfapi/page/cpdf_docpagedata.cpp
@@ -155,16 +155,6 @@
   return pFontDesc;
 }
 
-class FormFactory : public CPDF_Font::FormFactoryIface {
-  std::unique_ptr<CPDF_Font::FormIface> CreateForm(
-      CPDF_Document* pDocument,
-      CPDF_Dictionary* pPageResources,
-      CPDF_Stream* pFormStream) override {
-    return pdfium::MakeUnique<CPDF_Form>(pDocument, pPageResources,
-                                         pFormStream);
-  }
-};
-
 }  // namespace
 
 // static
@@ -241,8 +231,8 @@
       return pFontData->AddRef();
     }
   }
-  std::unique_ptr<CPDF_Font> pFont = CPDF_Font::Create(
-      GetDocument(), pFontDict, pdfium::MakeUnique<FormFactory>());
+  std::unique_ptr<CPDF_Font> pFont =
+      CPDF_Font::Create(GetDocument(), pFontDict, this);
   if (!pFont)
     return nullptr;
 
@@ -533,6 +523,13 @@
     m_FontFileMap.erase(it);
 }
 
+std::unique_ptr<CPDF_Font::FormIface> CPDF_DocPageData::CreateForm(
+    CPDF_Document* pDocument,
+    CPDF_Dictionary* pPageResources,
+    CPDF_Stream* pFormStream) {
+  return pdfium::MakeUnique<CPDF_Form>(pDocument, pPageResources, pFormStream);
+}
+
 CPDF_Font* CPDF_DocPageData::AddStandardFont(
     const char* font,
     const CPDF_FontEncoding* pEncoding) {
diff --git a/core/fpdfapi/page/cpdf_docpagedata.h b/core/fpdfapi/page/cpdf_docpagedata.h
index 1e334cb..d774501 100644
--- a/core/fpdfapi/page/cpdf_docpagedata.h
+++ b/core/fpdfapi/page/cpdf_docpagedata.h
@@ -8,8 +8,10 @@
 #define CORE_FPDFAPI_PAGE_CPDF_DOCPAGEDATA_H_
 
 #include <map>
+#include <memory>
 #include <set>
 
+#include "core/fpdfapi/font/cpdf_font.h"
 #include "core/fpdfapi/page/cpdf_colorspace.h"
 #include "core/fpdfapi/page/cpdf_countedobject.h"
 #include "core/fpdfapi/parser/cpdf_document.h"
@@ -20,7 +22,6 @@
 
 class CFX_Font;
 class CPDF_Dictionary;
-class CPDF_Font;
 class CPDF_FontEncoding;
 class CPDF_IccProfile;
 class CPDF_Image;
@@ -29,7 +30,8 @@
 class CPDF_Stream;
 class CPDF_StreamAcc;
 
-class CPDF_DocPageData : public CPDF_Document::PageDataIface {
+class CPDF_DocPageData : public CPDF_Document::PageDataIface,
+                         public CPDF_Font::FormFactoryIface {
  public:
   static CPDF_DocPageData* FromDocument(const CPDF_Document* pDoc);
 
@@ -42,6 +44,12 @@
       const CPDF_Stream* pFontStream) override;
   void MaybePurgeFontFileStreamAcc(const CPDF_Stream* pFontStream) override;
 
+  // CPDF_Font::FormFactoryIFace:
+  std::unique_ptr<CPDF_Font::FormIface> CreateForm(
+      CPDF_Document* pDocument,
+      CPDF_Dictionary* pPageResources,
+      CPDF_Stream* pFormStream) override;
+
   void Clear(bool bForceRelease);
   bool IsForceClear() const { return m_bForceClear; }
 
