Chromium Code Reviews| Index: core/src/fxge/ge/fx_ge_font.cpp |
| diff --git a/core/src/fxge/ge/fx_ge_font.cpp b/core/src/fxge/ge/fx_ge_font.cpp |
| index 468033eb01dbb8fbc509831e6b820890ae5333fe..7517cf1bed7550f0866834eef7451240f5dce13e 100644 |
| --- a/core/src/fxge/ge/fx_ge_font.cpp |
| +++ b/core/src/fxge/ge/fx_ge_font.cpp |
| @@ -39,6 +39,10 @@ CFX_UnicodeEncodingEx* _FXFM_CreateFontEncoding(CFX_Font* pFont, |
| return new CFX_UnicodeEncodingEx(pFont, nEncodingID); |
| } |
| +FXFT_Face FT_LoadFont(const uint8_t* pData, int size) { |
| + return CFX_GEModule::Get()->GetFontMgr()->GetFixedFace(pData, size, 0); |
| +} |
| + |
| } // namespace |
| CFX_Font::CFX_Font() { |
| @@ -181,23 +185,27 @@ FX_BOOL _LoadFile(FXFT_Library library, |
| } |
| return TRUE; |
| } |
| + |
| FX_BOOL CFX_Font::LoadFile(IFX_FileRead* pFile, |
| int nFaceIndex, |
| int* pFaceCount) { |
| m_bEmbedded = FALSE; |
| - FXFT_Library library; |
| - if (CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary == NULL) |
|
Tom Sepez
2015/10/21 20:03:55
Do we still need this?
Lei Zhang
2015/10/21 23:29:02
Yes, we pass |library| to _LoadFile(). I tried era
|
| - FXFT_Init_FreeType(&CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary); |
| - library = CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary; |
| - FXFT_Stream stream = NULL; |
| + |
| + CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); |
| + pFontMgr->InitFTLibrary(); |
| + FXFT_Library library = pFontMgr->GetFTLibrary(); |
| + |
| + FXFT_Stream stream = nullptr; |
| if (!_LoadFile(library, &m_Face, pFile, &stream, nFaceIndex)) |
| return FALSE; |
| + |
| if (pFaceCount) |
| *pFaceCount = (int)m_Face->num_faces; |
| m_pOwnedStream = stream; |
| FXFT_Set_Pixel_Sizes(m_Face, 0, 64); |
| return TRUE; |
| } |
| + |
| int CFX_Font::GetGlyphWidth(FX_DWORD glyph_index) { |
| if (!m_Face) { |
| return 0; |
| @@ -215,28 +223,12 @@ 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((uint8_t*)m_pFontDataAllocation, size); |
| - m_pFontData = (uint8_t*)m_pFontDataAllocation; |
| + m_Face = FT_LoadFont(m_pFontDataAllocation, size); |
| + m_pFontData = m_pFontDataAllocation; |
| m_bEmbedded = TRUE; |
| m_dwSize = size; |
| return m_Face != NULL; |