diff --git a/core/fxcrt/fx_basic.h b/core/fxcrt/fx_basic.h
index 1bc4bbd..e974e30 100644
--- a/core/fxcrt/fx_basic.h
+++ b/core/fxcrt/fx_basic.h
@@ -40,9 +40,6 @@
   void InsertBlock(FX_STRSIZE pos, const void* pBuf, FX_STRSIZE size);
   void Delete(int start_index, int count);
 
-  // Takes ownership of |pBuf|.
-  void AttachData(uint8_t* pBuf, FX_STRSIZE size);
-
   // Releases ownership of |m_pBuffer| and returns it.
   uint8_t* DetachBuffer();
 
diff --git a/core/fxcrt/fx_basic_buffer.cpp b/core/fxcrt/fx_basic_buffer.cpp
index e6d0552..fcd156b 100644
--- a/core/fxcrt/fx_basic_buffer.cpp
+++ b/core/fxcrt/fx_basic_buffer.cpp
@@ -42,12 +42,6 @@
   return m_pBuffer.release();
 }
 
-void CFX_BinaryBuf::AttachData(uint8_t* buffer, FX_STRSIZE size) {
-  m_pBuffer.reset(buffer);
-  m_DataSize = size;
-  m_AllocSize = size;
-}
-
 void CFX_BinaryBuf::EstimateSize(FX_STRSIZE size, FX_STRSIZE step) {
   m_AllocStep = step;
   if (m_AllocSize < size)
diff --git a/core/fxge/fx_font.h b/core/fxge/fx_font.h
index 96396af..224720f 100644
--- a/core/fxge/fx_font.h
+++ b/core/fxge/fx_font.h
@@ -170,9 +170,7 @@
   static const uint8_t s_WeightPow_SHIFTJIS[kWeightPowArraySize];
 
 #ifdef PDF_ENABLE_XFA
-
  protected:
-  CFX_BinaryBuf m_OtfFontData;
   bool m_bShallowCopy;
   FXFT_StreamRec* m_pOwnedStream;
 #endif  // PDF_ENABLE_XFA
@@ -181,13 +179,9 @@
   friend class CFX_FaceCache;
   CFX_PathData* LoadGlyphPathImpl(uint32_t glyph_index,
                                   int dest_width = 0) const;
-
- private:
   CFX_FaceCache* GetFaceCache() const;
-
   void ReleasePlatformResource();
   void DeleteFace();
-
   void ClearFaceCache();
 
   FXFT_Face m_Face;
diff --git a/core/fxge/ge/cfx_font.cpp b/core/fxge/ge/cfx_font.cpp
index 7be300f..24dcb87 100644
--- a/core/fxge/ge/cfx_font.cpp
+++ b/core/fxge/ge/cfx_font.cpp
@@ -265,10 +265,6 @@
     m_pSubstFont->m_Family = pFont->m_pSubstFont->m_Family;
     m_pSubstFont->m_ItalicAngle = pFont->m_pSubstFont->m_ItalicAngle;
   }
-  if (pFont->m_OtfFontData.GetSize()) {
-    m_OtfFontData.AttachData(pFont->m_OtfFontData.GetBuffer(),
-                             pFont->m_OtfFontData.GetSize());
-  }
   m_Face = pFont->m_Face;
   m_bEmbedded = pFont->m_bEmbedded;
   m_bVertical = pFont->m_bVertical;
@@ -292,10 +288,8 @@
 
 CFX_Font::~CFX_Font() {
 #ifdef PDF_ENABLE_XFA
-  if (m_bShallowCopy) {
-    m_OtfFontData.DetachBuffer();
+  if (m_bShallowCopy)
     return;
-  }
 #endif  // PDF_ENABLE_XFA
   if (m_Face) {
 #ifndef PDF_ENABLE_XFA
