diff --git a/core/fxge/cfx_fontmgr.cpp b/core/fxge/cfx_fontmgr.cpp
index 2961e18..f5ae895 100644
--- a/core/fxge/cfx_fontmgr.cpp
+++ b/core/fxge/cfx_fontmgr.cpp
@@ -119,7 +119,7 @@
 
   CTTFontDesc* pFontDesc = it->second.get();
   *pFontData = pFontDesc->FontData();
-  return pFontDesc->GetFace(0);
+  return pdfium::WrapRetain(pFontDesc->GetFace(0));
 }
 
 RetainPtr<CFX_Face> CFX_FontMgr::AddCachedFace(
@@ -140,11 +140,9 @@
     return nullptr;
 
   auto pFontDesc = pdfium::MakeUnique<CTTFontDesc>(std::move(pData));
-  pFontDesc->SetFace(0, std::move(face));
-
-  CTTFontDesc* pResult = pFontDesc.get();
+  pFontDesc->SetFace(0, face.Get());
   m_FaceMap[KeyNameFromFace(face_name, weight, bItalic)] = std::move(pFontDesc);
-  return pResult->GetFace(0);
+  return face;
 }
 
 RetainPtr<CFX_Face> CFX_FontMgr::GetCachedTTCFace(int ttc_size,
@@ -158,12 +156,14 @@
   CTTFontDesc* pFontDesc = it->second.get();
   *pFontData = pFontDesc->FontData();
   int face_index = GetTTCIndex(pFontDesc->FontData(), ttc_size, font_offset);
-  if (!pFontDesc->GetFace(face_index)) {
-    pFontDesc->SetFace(face_index, GetFixedFace({pFontDesc->FontData(),
-                                                 static_cast<size_t>(ttc_size)},
-                                                face_index));
-  }
-  return pFontDesc->GetFace(face_index);
+  RetainPtr<CFX_Face> pFace(pFontDesc->GetFace(face_index));
+  if (pFace)
+    return pFace;
+
+  pFace = GetFixedFace({pFontDesc->FontData(), static_cast<size_t>(ttc_size)},
+                       face_index);
+  pFontDesc->SetFace(face_index, pFace.Get());
+  return pFace;
 }
 
 RetainPtr<CFX_Face> CFX_FontMgr::AddCachedTTCFace(
@@ -176,7 +176,7 @@
   RetainPtr<CFX_Face> face =
       GetFixedFace({pData.get(), static_cast<size_t>(ttc_size)}, face_index);
   auto pFontDesc = pdfium::MakeUnique<CTTFontDesc>(std::move(pData));
-  pFontDesc->SetFace(face_index, face);
+  pFontDesc->SetFace(face_index, face.Get());
   m_FaceMap[KeyNameFromSize(ttc_size, checksum)] = std::move(pFontDesc);
   return face;
 }
diff --git a/core/fxge/cttfontdesc.cpp b/core/fxge/cttfontdesc.cpp
index 9d504bb..27bc770 100644
--- a/core/fxge/cttfontdesc.cpp
+++ b/core/fxge/cttfontdesc.cpp
@@ -8,18 +8,20 @@
 
 #include <utility>
 
+#include "core/fxge/cfx_face.h"
+
 CTTFontDesc::CTTFontDesc(std::unique_ptr<uint8_t, FxFreeDeleter> pData)
     : m_pFontData(std::move(pData)) {
 }
 
 CTTFontDesc::~CTTFontDesc() = default;
 
-void CTTFontDesc::SetFace(size_t index, const RetainPtr<CFX_Face>& face) {
+void CTTFontDesc::SetFace(size_t index, CFX_Face* face) {
   ASSERT(index < FX_ArraySize(m_TTCFaces));
-  m_TTCFaces[index].Reset(face.Get());
+  m_TTCFaces[index].Reset(face);
 }
 
-RetainPtr<CFX_Face> CTTFontDesc::GetFace(size_t index) const {
+CFX_Face* CTTFontDesc::GetFace(size_t index) const {
   ASSERT(index < FX_ArraySize(m_TTCFaces));
-  return pdfium::WrapRetain(m_TTCFaces[index].Get());
+  return m_TTCFaces[index].Get();
 }
diff --git a/core/fxge/cttfontdesc.h b/core/fxge/cttfontdesc.h
index c6b79f3..31a0520 100644
--- a/core/fxge/cttfontdesc.h
+++ b/core/fxge/cttfontdesc.h
@@ -11,7 +11,9 @@
 
 #include "core/fxcrt/fx_memory.h"
 #include "core/fxcrt/fx_system.h"
-#include "core/fxge/cfx_face.h"
+#include "core/fxcrt/observed_ptr.h"
+
+class CFX_Face;
 
 class CTTFontDesc {
  public:
@@ -19,8 +21,8 @@
   ~CTTFontDesc();
 
   uint8_t* FontData() const { return m_pFontData.get(); }
-  void SetFace(size_t index, const RetainPtr<CFX_Face>& face);
-  RetainPtr<CFX_Face> GetFace(size_t index) const;
+  void SetFace(size_t index, CFX_Face* face);
+  CFX_Face* GetFace(size_t index) const;
 
  private:
   std::unique_ptr<uint8_t, FxFreeDeleter> const m_pFontData;
