| Index: xfa/fgas/font/fgas_stdfontmgr.cpp
|
| diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp
|
| index 17bd20488981cbf2b1f9e4e0d54653bcdc0a7d55..4e5095048b336913fb9088e6e76fe71e132944a3 100644
|
| --- a/xfa/fgas/font/fgas_stdfontmgr.cpp
|
| +++ b/xfa/fgas/font/fgas_stdfontmgr.cpp
|
| @@ -23,7 +23,6 @@ CFGAS_StdFontMgrImp::CFGAS_StdFontMgrImp(FX_LPEnumAllFonts pEnumerator)
|
| m_FamilyFonts(16),
|
| m_UnicodeFonts(16),
|
| m_BufferFonts(4),
|
| - m_FileFonts(4),
|
| m_StreamFonts(4),
|
| m_DeriveFonts(4) {
|
| if (m_pEnumerator) {
|
| @@ -37,7 +36,6 @@ CFGAS_StdFontMgrImp::~CFGAS_StdFontMgrImp() {
|
| m_FamilyFonts.RemoveAll();
|
| m_UnicodeFonts.RemoveAll();
|
| m_BufferFonts.RemoveAll();
|
| - m_FileFonts.RemoveAll();
|
| m_StreamFonts.RemoveAll();
|
| m_DeriveFonts.RemoveAll();
|
| for (int32_t i = m_Fonts.GetUpperBound(); i >= 0; i--)
|
| @@ -174,23 +172,7 @@ CFGAS_GEFont* CFGAS_StdFontMgrImp::LoadFont(const uint8_t* pBuffer,
|
| }
|
| return NULL;
|
| }
|
| -CFGAS_GEFont* CFGAS_StdFontMgrImp::LoadFont(const FX_WCHAR* pszFileName) {
|
| - ASSERT(pszFileName);
|
| - uint32_t dwHash = FX_HashCode_GetW(pszFileName, false);
|
| - CFGAS_GEFont* pFont = NULL;
|
| - if (m_FileFonts.Lookup((void*)(uintptr_t)dwHash, (void*&)pFont)) {
|
| - if (pFont) {
|
| - return pFont->Retain();
|
| - }
|
| - }
|
| - pFont = CFGAS_GEFont::LoadFont(pszFileName);
|
| - if (pFont) {
|
| - m_Fonts.Add(pFont);
|
| - m_FileFonts.SetAt((void*)(uintptr_t)dwHash, (void*)pFont);
|
| - return pFont->Retain();
|
| - }
|
| - return NULL;
|
| -}
|
| +
|
| CFGAS_GEFont* CFGAS_StdFontMgrImp::LoadFont(IFX_Stream* pFontStream,
|
| const FX_WCHAR* pszFontAlias,
|
| uint32_t dwFontStyles,
|
| @@ -277,7 +259,6 @@ void CFGAS_StdFontMgrImp::RemoveFont(CFGAS_GEFont* pFont) {
|
| RemoveFont(m_FamilyFonts, pFont);
|
| RemoveFont(m_UnicodeFonts, pFont);
|
| RemoveFont(m_BufferFonts, pFont);
|
| - RemoveFont(m_FileFonts, pFont);
|
| RemoveFont(m_StreamFonts, pFont);
|
| RemoveFont(m_DeriveFonts, pFont);
|
| int32_t iFind = m_Fonts.Find(pFont);
|
| @@ -639,24 +620,6 @@ void CFGAS_FontMgrImp::Release() {
|
| delete pFonts;
|
| }
|
| m_Hash2Fonts.RemoveAll();
|
| - pos = m_Hash2FileAccess.GetStartPosition();
|
| - while (pos) {
|
| - uint32_t dwHash;
|
| - IFX_FileAccess* pFileAccess;
|
| - m_Hash2FileAccess.GetNextAssoc(pos, dwHash, pFileAccess);
|
| - if (NULL != pFileAccess) {
|
| - pFileAccess->Release();
|
| - }
|
| - }
|
| - pos = m_FileAccess2IFXFont.GetStartPosition();
|
| - while (pos) {
|
| - uint32_t dwHash;
|
| - CFGAS_GEFont* pFont;
|
| - m_FileAccess2IFXFont.GetNextAssoc(pos, dwHash, pFont);
|
| - if (NULL != pFont) {
|
| - pFont->Release();
|
| - }
|
| - }
|
| pos = m_IFXFont2FileRead.GetStartPosition();
|
| while (pos) {
|
| CFGAS_GEFont* pFont;
|
| @@ -724,9 +687,7 @@ CFGAS_GEFont* CFGAS_FontMgrImp::GetFontByCodePage(
|
|
|
| CFX_FontDescriptor* pDesc = sortedFonts->GetAt(0).pFont;
|
| CFGAS_GEFont* pFont =
|
| - pDesc->m_pFileAccess
|
| - ? LoadFont(pDesc->m_pFileAccess, pDesc->m_nFaceIndex, nullptr)
|
| - : LoadFont(pDesc->m_wsFaceName, pDesc->m_nFaceIndex, nullptr);
|
| + LoadFont(pDesc->m_wsFaceName, pDesc->m_nFaceIndex, nullptr);
|
| if (pFont)
|
| pFont->SetLogicalFontStyle(dwFontStyles);
|
|
|
| @@ -780,10 +741,7 @@ CFGAS_GEFont* CFGAS_FontMgrImp::GetFontByUnicode(
|
| CFX_FontDescriptor* pDesc = sortedFonts->GetAt(i).pFont;
|
| if (!VerifyUnicode(pDesc, wUnicode))
|
| continue;
|
| - if (pDesc->m_pFileAccess)
|
| - pFont = LoadFont(pDesc->m_pFileAccess, pDesc->m_nFaceIndex, nullptr);
|
| - else
|
| - pFont = LoadFont(pDesc->m_wsFaceName, pDesc->m_nFaceIndex, nullptr);
|
| + pFont = LoadFont(pDesc->m_wsFaceName, pDesc->m_nFaceIndex, nullptr);
|
| if (!pFont)
|
| continue;
|
| pFont->SetLogicalFontStyle(dwFontStyles);
|
| @@ -796,11 +754,7 @@ CFGAS_GEFont* CFGAS_FontMgrImp::GetFontByUnicode(
|
| }
|
| FX_BOOL CFGAS_FontMgrImp::VerifyUnicode(CFX_FontDescriptor* pDesc,
|
| FX_WCHAR wcUnicode) {
|
| - IFX_FileRead* pFileRead = nullptr;
|
| - if (pDesc->m_pFileAccess)
|
| - pFileRead = pDesc->m_pFileAccess->CreateFileStream(FX_FILEMODE_ReadOnly);
|
| - else
|
| - pFileRead = CreateFontStream(pDesc->m_wsFaceName.UTF8Encode());
|
| + IFX_FileRead* pFileRead = CreateFontStream(pDesc->m_wsFaceName.UTF8Encode());
|
| if (!pFileRead)
|
| return FALSE;
|
| FXFT_Face pFace = LoadFace(pFileRead, pDesc->m_nFaceIndex);
|
| @@ -840,97 +794,6 @@ CFGAS_GEFont* CFGAS_FontMgrImp::GetFontByLanguage(
|
| pszFontFamily);
|
| }
|
|
|
| -CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(const uint8_t* pBuffer,
|
| - int32_t iLength,
|
| - int32_t iFaceIndex,
|
| - int32_t* pFaceCount) {
|
| - void* Hash[2] = {(void*)(uintptr_t)pBuffer, (void*)(uintptr_t)iLength};
|
| - uint32_t dwHash =
|
| - FX_HashCode_GetA(CFX_ByteStringC((uint8_t*)Hash, sizeof(Hash)), false);
|
| - IFX_FileAccess* pFontAccess = nullptr;
|
| - m_Hash2FileAccess.Lookup(dwHash, pFontAccess);
|
| - return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE)
|
| - : nullptr;
|
| -}
|
| -
|
| -CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(const FX_WCHAR* pszFileName,
|
| - int32_t iFaceIndex,
|
| - int32_t* pFaceCount) {
|
| - CFX_ByteString bsHash;
|
| - bsHash += CFX_WideString(pszFileName).UTF8Encode();
|
| -
|
| - uint32_t dwHash = FX_HashCode_GetA(bsHash.AsStringC(), false);
|
| - IFX_FileAccess* pFontAccess = nullptr;
|
| - if (!m_Hash2FileAccess.Lookup(dwHash, pFontAccess)) {
|
| - pFontAccess = FX_CreateDefaultFileAccess(pszFileName);
|
| - m_Hash2FileAccess.SetAt(dwHash, pFontAccess);
|
| - }
|
| -
|
| - return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE)
|
| - : nullptr;
|
| -}
|
| -
|
| -CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(IFX_Stream* pFontStream,
|
| - int32_t iFaceIndex,
|
| - int32_t* pFaceCount,
|
| - FX_BOOL bSaveStream) {
|
| - void* Hash[1] = {(void*)(uintptr_t)pFontStream};
|
| - uint32_t dwHash =
|
| - FX_HashCode_GetA(CFX_ByteStringC((uint8_t*)Hash, sizeof(Hash)), false);
|
| - IFX_FileAccess* pFontAccess = nullptr;
|
| - m_Hash2FileAccess.Lookup(dwHash, pFontAccess);
|
| -
|
| - return pFontAccess ? LoadFont(pFontAccess, iFaceIndex, pFaceCount, TRUE)
|
| - : nullptr;
|
| -}
|
| -
|
| -CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(IFX_FileAccess* pFontAccess,
|
| - int32_t iFaceIndex,
|
| - int32_t* pFaceCount,
|
| - FX_BOOL bWantCache) {
|
| - uint32_t dwHash = 0;
|
| - CFGAS_GEFont* pFont = nullptr;
|
| - if (bWantCache) {
|
| - CFX_ByteString bsHash;
|
| - bsHash.Format("%d, %d", (uintptr_t)pFontAccess, iFaceIndex);
|
| - dwHash = FX_HashCode_GetA(bsHash.AsStringC(), false);
|
| - if (m_FileAccess2IFXFont.Lookup(dwHash, pFont)) {
|
| - if (pFont) {
|
| - if (pFaceCount)
|
| - *pFaceCount = pFont->GetDevFont()->GetFace()->num_faces;
|
| - return pFont->Retain();
|
| - }
|
| - }
|
| - }
|
| -
|
| - CFX_Font* pInternalFont = new CFX_Font;
|
| - IFX_FileRead* pFontStream =
|
| - pFontAccess->CreateFileStream(FX_FILEMODE_ReadOnly);
|
| - if (!pFontStream) {
|
| - delete pInternalFont;
|
| - return nullptr;
|
| - }
|
| - if (!pInternalFont->LoadFile(pFontStream, iFaceIndex)) {
|
| - delete pInternalFont;
|
| - pFontStream->Release();
|
| - return nullptr;
|
| - }
|
| - pFont = CFGAS_GEFont::LoadFont(pInternalFont, this, TRUE);
|
| - if (!pFont) {
|
| - delete pInternalFont;
|
| - pFontStream->Release();
|
| - return nullptr;
|
| - }
|
| - if (bWantCache)
|
| - m_FileAccess2IFXFont.SetAt(dwHash, pFont);
|
| -
|
| - m_IFXFont2FileRead.SetAt(pFont, pFontStream);
|
| - if (pFaceCount)
|
| - *pFaceCount = pFont->GetDevFont()->GetFace()->num_faces;
|
| -
|
| - return pFont;
|
| -}
|
| -
|
| CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(const CFX_WideString& wsFaceName,
|
| int32_t iFaceIndex,
|
| int32_t* pFaceCount) {
|
| @@ -958,7 +821,7 @@ CFGAS_GEFont* CFGAS_FontMgrImp::LoadFont(const CFX_WideString& wsFaceName,
|
| return nullptr;
|
| }
|
|
|
| - CFGAS_GEFont* pFont = CFGAS_GEFont::LoadFont(pInternalFont, this, FALSE);
|
| + CFGAS_GEFont* pFont = CFGAS_GEFont::LoadFont(pInternalFont, this);
|
| if (!pFont) {
|
| pFontStream->Release();
|
| return nullptr;
|
| @@ -1219,15 +1082,6 @@ void CFGAS_FontMgrImp::ClearFontCache() {
|
| m_Hash2CandidateList.GetNextAssoc(pos, dwHash, pDescs);
|
| delete pDescs;
|
| }
|
| - pos = m_FileAccess2IFXFont.GetStartPosition();
|
| - while (pos) {
|
| - uint32_t dwHash;
|
| - CFGAS_GEFont* pFont;
|
| - m_FileAccess2IFXFont.GetNextAssoc(pos, dwHash, pFont);
|
| - if (NULL != pFont) {
|
| - pFont->Release();
|
| - }
|
| - }
|
| pos = m_IFXFont2FileRead.GetStartPosition();
|
| while (pos) {
|
| CFGAS_GEFont* pFont;
|
| @@ -1246,16 +1100,6 @@ void CFGAS_FontMgrImp::RemoveFont(CFGAS_GEFont* pEFont) {
|
| m_IFXFont2FileRead.RemoveKey(pEFont);
|
| }
|
| FX_POSITION pos;
|
| - pos = m_FileAccess2IFXFont.GetStartPosition();
|
| - while (pos) {
|
| - uint32_t dwHash;
|
| - CFGAS_GEFont* pCFont;
|
| - m_FileAccess2IFXFont.GetNextAssoc(pos, dwHash, pCFont);
|
| - if (pCFont == pEFont) {
|
| - m_FileAccess2IFXFont.RemoveKey(dwHash);
|
| - break;
|
| - }
|
| - }
|
| pos = m_Hash2Fonts.GetStartPosition();
|
| while (pos) {
|
| uint32_t dwHash;
|
| @@ -1275,8 +1119,7 @@ void CFGAS_FontMgrImp::RemoveFont(CFGAS_GEFont* pEFont) {
|
|
|
| void CFGAS_FontMgrImp::RegisterFace(FXFT_Face pFace,
|
| CFX_FontDescriptors& Fonts,
|
| - const CFX_WideString* pFaceName,
|
| - IFX_FileAccess* pFontAccess) {
|
| + const CFX_WideString* pFaceName) {
|
| if ((pFace->face_flags & FT_FACE_FLAG_SCALABLE) == 0)
|
| return;
|
|
|
| @@ -1312,7 +1155,6 @@ void CFGAS_FontMgrImp::RegisterFace(FXFT_Face pFace,
|
| pFaceName ? *pFaceName
|
| : CFX_WideString::FromLocal(FXFT_Get_Postscript_Name(pFace));
|
| pFont->m_nFaceIndex = pFace->face_index;
|
| - pFont->m_pFileAccess = pFontAccess ? pFontAccess->Retain() : nullptr;
|
|
|
| Fonts.Add(pFont);
|
| }
|
| @@ -1328,7 +1170,7 @@ void CFGAS_FontMgrImp::RegisterFaces(IFX_FileRead* pFontStream,
|
| // 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, m_InstalledFonts, pFaceName, nullptr);
|
| + RegisterFace(pFace, m_InstalledFonts, pFaceName);
|
| if (FXFT_Get_Face_External_Stream(pFace))
|
| FXFT_Clear_Face_External_Stream(pFace);
|
| FXFT_Done_Face(pFace);
|
|
|