Revert "Make CFX_FontMgr member variables private."
[pdfium.git] / core / src / fxge / ge / fx_ge_font.cpp
index fed80e6..a6ababf 100644 (file)
@@ -7,17 +7,7 @@
 #include "../../../include/fxge/fx_ge.h"
 #include "../../../include/fxge/fx_freetype.h"
 #include "text_int.h"
-
 #define EM_ADJUST(em, a) (em == 0 ? (a) : (a)*1000 / em)
-
-namespace {
-
-FXFT_Face FT_LoadFont(const uint8_t* pData, int size) {
-  return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0);
-}
-
-}  // namespace
-
 CFX_Font::CFX_Font() {
   m_pSubstFont = NULL;
   m_Face = NULL;
@@ -100,12 +90,28 @@ int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) {
                         FXFT_Get_Glyph_HoriAdvance(m_Face));
   return width;
 }
-
+static FXFT_Face FT_LoadFont(uint8_t* pData, int size) {
+  FXFT_Library library;
+  if (CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary == NULL) {
+    FXFT_Init_FreeType(&CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary);
+  }
+  library = CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary;
+  FXFT_Face face = NULL;
+  int error = FXFT_New_Memory_Face(library, pData, size, 0, &face);
+  if (error) {
+    return NULL;
+  }
+  error = FXFT_Set_Pixel_Sizes(face, 64, 64);
+  if (error) {
+    return NULL;
+  }
+  return face;
+}
 FX_BOOL CFX_Font::LoadEmbedded(const uint8_t* data, FX_DWORD size) {
   m_pFontDataAllocation = FX_Alloc(uint8_t, size);
   FXSYS_memcpy(m_pFontDataAllocation, data, size);
-  m_Face = FT_LoadFont(m_pFontDataAllocation, size);
-  m_pFontData = m_pFontDataAllocation;
+  m_Face = FT_LoadFont((uint8_t*)m_pFontDataAllocation, size);
+  m_pFontData = (uint8_t*)m_pFontDataAllocation;
   m_bEmbedded = TRUE;
   m_dwSize = size;
   return m_Face != NULL;