Index: xfa/src/fgas/src/font/fx_stdfontmgr.cpp |
diff --git a/xfa/src/fgas/src/font/fx_stdfontmgr.cpp b/xfa/src/fgas/src/font/fx_stdfontmgr.cpp |
index f339555c6b3936fa61de4fde757c75db0f07e850..83c6dff1202cb1ca0b11f7c754fc49a7375cdff8 100644 |
--- a/xfa/src/fgas/src/font/fx_stdfontmgr.cpp |
+++ b/xfa/src/fgas/src/font/fx_stdfontmgr.cpp |
@@ -610,14 +610,9 @@ CFX_FontMgrImp::CFX_FontMgrImp(IFX_FontSourceEnum* pFontEnum, |
: m_pFontSource(pFontEnum), |
m_pDelegate(pDelegate), |
m_pUserData(pUserData) {} |
+ |
FX_BOOL CFX_FontMgrImp::EnumFonts() { |
- FXFT_Library& library = CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary; |
- if (library == NULL) { |
- FXFT_Init_FreeType(&library); |
- } |
- if (library == NULL) { |
- return FALSE; |
- } |
+ CFX_GEModule::Get()->GetFontMgr()->InitFTLibrary(); |
FXFT_Face pFace = NULL; |
FX_POSITION pos = m_pFontSource->GetStartPosition(); |
IFX_FileAccess* pFontSource = NULL; |
@@ -1003,45 +998,42 @@ unsigned long _ftStreamRead(FXFT_Stream stream, |
} |
void _ftStreamClose(FXFT_Stream stream) {} |
}; |
+ |
FXFT_Face CFX_FontMgrImp::LoadFace(IFX_FileRead* pFontStream, |
int32_t iFaceIndex) { |
- FXFT_Library& library = CFX_GEModule::Get()->GetFontMgr()->m_FTLibrary; |
- FXFT_Open_Args ftArgs; |
+ if (!pFontStream) |
+ return nullptr; |
+ |
+ CFX_FontMgr* pFontMgr = CFX_GEModule::Get()->GetFontMgr(); |
+ pFontMgr->InitFTLibrary(); |
+ FXFT_Library library = pFontMgr->GetFTLibrary(); |
+ if (!library) |
+ return nullptr; |
+ |
FXFT_Stream ftStream = FX_Alloc(FXFT_StreamRec, 1); |
- FXFT_Face pFace = NULL; |
- if (library == NULL) { |
- FXFT_Init_FreeType(&library); |
- } |
- if (library == NULL) { |
- goto BadRet; |
- } |
- FXSYS_memset(&ftArgs, 0, sizeof(FXFT_Open_Args)); |
- if (NULL == ftStream) { |
- goto BadRet; |
- } |
FXSYS_memset(ftStream, 0, sizeof(FXFT_StreamRec)); |
- if (NULL == pFontStream) { |
- goto BadRet; |
- } |
ftStream->base = NULL; |
ftStream->descriptor.pointer = pFontStream; |
ftStream->pos = 0; |
ftStream->size = (unsigned long)pFontStream->GetSize(); |
ftStream->read = _ftStreamRead; |
ftStream->close = _ftStreamClose; |
+ |
+ FXFT_Open_Args ftArgs; |
+ FXSYS_memset(&ftArgs, 0, sizeof(FXFT_Open_Args)); |
ftArgs.flags |= FT_OPEN_STREAM; |
ftArgs.stream = ftStream; |
- if (0 != FXFT_Open_Face(library, &ftArgs, iFaceIndex, &pFace)) { |
- goto BadRet; |
+ |
+ FXFT_Face pFace = NULL; |
+ if (FXFT_Open_Face(library, &ftArgs, iFaceIndex, &pFace)) { |
+ FX_Free(ftStream); |
+ return nullptr; |
} |
+ |
FXFT_Set_Pixel_Sizes(pFace, 0, 64); |
return pFace; |
-BadRet: |
- if (NULL != ftStream) { |
- FX_Free(ftStream); |
- } |
- return NULL; |
} |
+ |
int32_t CFX_FontMgrImp::MatchFonts(CFX_FontDescriptorInfos& MatchedFonts, |
FX_WORD wCodePage, |
FX_DWORD dwFontStyles, |