CFX_FontMapper::~CFX_FontMapper() { for (size_t i = 0; i < FX_ArraySize(m_FoxitFaces); ++i) { if (m_FoxitFaces[i]) FXFT_Done_Face(m_FoxitFaces[i]); } if (m_MMFaces[0]) FXFT_Done_Face(m_MMFaces[0]); if (m_MMFaces[1]) FXFT_Done_Face(m_MMFaces[1]); }
CTTFontDesc::~CTTFontDesc() { if (m_Type == 1) { if (m_SingleFace) FXFT_Done_Face(m_SingleFace); } else if (m_Type == 2) { for (int i = 0; i < 16; i++) { if (m_TTCFaces[i]) FXFT_Done_Face(m_TTCFaces[i]); } } FX_Free(m_pFontData); }
CFX_FontMapper::~CFX_FontMapper() { for (int i = 0; i < 14; i ++) if (m_FoxitFaces[i]) { FXFT_Done_Face(m_FoxitFaces[i]); } if (m_MMFaces[0]) { FXFT_Done_Face(m_MMFaces[0]); } if (m_MMFaces[1]) { FXFT_Done_Face(m_MMFaces[1]); } if (m_pFontInfo) { m_pFontInfo->Release(); } }
CFontFileFaceInfo::~CFontFileFaceInfo() { if (m_Face) { FXFT_Done_Face(m_Face); } m_Face = NULL; }
void CFPF_SkiaFontMgr::ScanFile(const CFX_ByteString& file) { FXFT_Face face = GetFontFace(file.AsStringC()); if (face) { CFPF_SkiaPathFont* pFontDesc = new CFPF_SkiaPathFont; pFontDesc->SetPath(file.c_str()); ReportFace(face, pFontDesc); m_FontFaces.push_back(pFontDesc); FXFT_Done_Face(face); } }
void CFPF_SkiaFontMgr::ScanFile(FX_BSTR file) { FXFT_Face face = GetFontFace(file); if (face) { CFPF_SkiaPathFont *pFontDesc = new CFPF_SkiaPathFont; pFontDesc->SetPath(file.GetCStr()); ReportFace(face, pFontDesc); m_FontFaces.Add(pFontDesc); FXFT_Done_Face(face); } }
FX_BOOL CFGAS_FontMgrImp::VerifyUnicode(CFX_FontDescriptor* pDesc, FX_WCHAR wcUnicode) { IFX_FileRead* pFileRead = CreateFontStream(pDesc->m_wsFaceName.UTF8Encode()); if (!pFileRead) return FALSE; FXFT_Face pFace = LoadFace(pFileRead, pDesc->m_nFaceIndex); FT_Error retCharmap = FXFT_Select_Charmap(pFace, FXFT_ENCODING_UNICODE); FT_Error retIndex = FXFT_Get_Char_Index(pFace, wcUnicode); pFileRead->Release(); if (!pFace) return FALSE; if (FXFT_Get_Face_External_Stream(pFace)) FXFT_Clear_Face_External_Stream(pFace); FXFT_Done_Face(pFace); return !retCharmap && retIndex; }
void CFGAS_FontMgr::RegisterFaces(IFX_SeekableReadStream* pFontStream, const CFX_WideString* pFaceName) { int32_t index = 0; int32_t num_faces = 0; do { FXFT_Face pFace = LoadFace(pFontStream, index++); if (!pFace) continue; // All faces keep number of faces. It can be retrieved from any one face. if (num_faces == 0) num_faces = pFace->num_faces; RegisterFace(pFace, pFaceName); if (FXFT_Get_Face_External_Stream(pFace)) FXFT_Clear_Face_External_Stream(pFace); FXFT_Done_Face(pFace); } while (index < num_faces); }
void CFX_FontMgr::ReleaseFace(FXFT_Face face) { if (!face) return; FX_BOOL bNeedFaceDone = TRUE; auto it = m_FaceMap.begin(); while (it != m_FaceMap.end()) { auto temp = it++; int nRet = temp->second->ReleaseFace(face); if (nRet == -1) continue; bNeedFaceDone = FALSE; if (nRet == 0) m_FaceMap.erase(temp); break; } if (bNeedFaceDone && !m_pBuiltinMapper->IsBuiltinFace(face)) FXFT_Done_Face(face); }
void CFX_Font::DeleteFace() { FXFT_Done_Face(m_Face); m_Face = NULL; }
CFPF_SkiaFont::~CFPF_SkiaFont() { if (m_Face) { FXFT_Done_Face(m_Face); } }