CPDF_Font* AddNativeInterFormFont(CPDF_Dictionary*& pFormDict, CPDF_Document* pDocument, uint8_t charSet, CFX_ByteString& csNameTag) { if (!pFormDict) { InitInterFormDict(pFormDict, pDocument); } CFX_ByteString csTemp; CPDF_Font* pFont = GetNativeInterFormFont(pFormDict, pDocument, charSet, csTemp); if (pFont) { csNameTag = csTemp; return pFont; } CFX_ByteString csFontName = CPDF_InterForm::GetNativeFont(charSet); if (!csFontName.IsEmpty()) { if (FindInterFormFont(pFormDict, pDocument, csFontName, pFont, csNameTag)) { return pFont; } } pFont = CPDF_InterForm::AddNativeFont(charSet, pDocument); if (pFont) { AddInterFormFont(pFormDict, pDocument, pFont, csNameTag); } return pFont; }
CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, CPDF_Document* pDocument, CFX_ByteString& csNameTag) { csNameTag = ""; FX_BYTE charSet = CPDF_InterForm::GetNativeCharSet(); CFX_SubstFont* pSubst; CPDF_Font* pFont = GetDefaultInterFormFont(pFormDict, pDocument); if (pFont != NULL) { pSubst = (CFX_SubstFont*)pFont->GetSubstFont(); if (pSubst != NULL && pSubst->m_Charset == (int)charSet) { FindInterFormFont(pFormDict, pFont, csNameTag); return pFont; } } return GetNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); }
CPDF_Font* GetNativeInterFormFont(CPDF_Dictionary* pFormDict, CPDF_Document* pDocument, CFX_ByteString& csNameTag) { csNameTag.clear(); uint8_t charSet = CPDF_InterForm::GetNativeCharSet(); CPDF_Font* pFont = GetDefaultInterFormFont(pFormDict, pDocument); if (pFont) { CFX_SubstFont* pSubst = pFont->GetSubstFont(); if (pSubst && pSubst->m_Charset == (int)charSet) { FindInterFormFont(pFormDict, pFont, csNameTag); return pFont; } } return GetNativeInterFormFont(pFormDict, pDocument, charSet, csNameTag); }
CPDF_Font* CPDF_InterForm::GetNativeFormFont(CFX_ByteString& csNameTag) { return GetNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag); }