| OLD | NEW | 
|     1 // Copyright 2014 PDFium Authors. All rights reserved. |     1 // Copyright 2014 PDFium Authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |     5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 
|     6  |     6  | 
|     7 #include "xfa/fxfa/include/xfa_fontmgr.h" |     7 #include "xfa/fxfa/include/xfa_fontmgr.h" | 
|     8  |     8  | 
|     9 #include <algorithm> |     9 #include <algorithm> | 
|    10  |    10  | 
| (...skipping 1748 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1759  |  1759  | 
|  1760 IFX_Font* CXFA_DefFontMgr::GetFont(CXFA_FFDoc* hDoc, |  1760 IFX_Font* CXFA_DefFontMgr::GetFont(CXFA_FFDoc* hDoc, | 
|  1761                                    const CFX_WideStringC& wsFontFamily, |  1761                                    const CFX_WideStringC& wsFontFamily, | 
|  1762                                    uint32_t dwFontStyles, |  1762                                    uint32_t dwFontStyles, | 
|  1763                                    uint16_t wCodePage) { |  1763                                    uint16_t wCodePage) { | 
|  1764   CFX_WideString wsFontName = wsFontFamily; |  1764   CFX_WideString wsFontName = wsFontFamily; | 
|  1765   IFX_FontMgr* pFDEFontMgr = hDoc->GetApp()->GetFDEFontMgr(); |  1765   IFX_FontMgr* pFDEFontMgr = hDoc->GetApp()->GetFDEFontMgr(); | 
|  1766   IFX_Font* pFont = pFDEFontMgr->LoadFont(wsFontName, dwFontStyles, wCodePage); |  1766   IFX_Font* pFont = pFDEFontMgr->LoadFont(wsFontName, dwFontStyles, wCodePage); | 
|  1767   if (!pFont) { |  1767   if (!pFont) { | 
|  1768     const XFA_FONTINFO* pCurFont = |  1768     const XFA_FONTINFO* pCurFont = | 
|  1769         XFA_GetFontINFOByFontName(wsFontName.AsWideStringC()); |  1769         XFA_GetFontINFOByFontName(wsFontName.AsStringC()); | 
|  1770     if (pCurFont && pCurFont->pReplaceFont) { |  1770     if (pCurFont && pCurFont->pReplaceFont) { | 
|  1771       uint32_t dwStyle = 0; |  1771       uint32_t dwStyle = 0; | 
|  1772       if (dwFontStyles & FX_FONTSTYLE_Bold) { |  1772       if (dwFontStyles & FX_FONTSTYLE_Bold) { | 
|  1773         dwStyle |= FX_FONTSTYLE_Bold; |  1773         dwStyle |= FX_FONTSTYLE_Bold; | 
|  1774       } |  1774       } | 
|  1775       if (dwFontStyles & FX_FONTSTYLE_Italic) { |  1775       if (dwFontStyles & FX_FONTSTYLE_Italic) { | 
|  1776         dwStyle |= FX_FONTSTYLE_Italic; |  1776         dwStyle |= FX_FONTSTYLE_Italic; | 
|  1777       } |  1777       } | 
|  1778       const FX_WCHAR* pReplace = pCurFont->pReplaceFont; |  1778       const FX_WCHAR* pReplace = pCurFont->pReplaceFont; | 
|  1779       int32_t iLength = FXSYS_wcslen(pReplace); |  1779       int32_t iLength = FXSYS_wcslen(pReplace); | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1855   } |  1855   } | 
|  1856   pFontSetDict = (CPDF_Dictionary*)pFontSetDict->GetDictBy("Font"); |  1856   pFontSetDict = (CPDF_Dictionary*)pFontSetDict->GetDictBy("Font"); | 
|  1857   if (!pFontSetDict) { |  1857   if (!pFontSetDict) { | 
|  1858     return NULL; |  1858     return NULL; | 
|  1859   } |  1859   } | 
|  1860   strPsName.Remove(' '); |  1860   strPsName.Remove(' '); | 
|  1861   IFX_FontMgr* pFDEFontMgr = m_pDoc->GetApp()->GetFDEFontMgr(); |  1861   IFX_FontMgr* pFDEFontMgr = m_pDoc->GetApp()->GetFDEFontMgr(); | 
|  1862   for (const auto& it : *pFontSetDict) { |  1862   for (const auto& it : *pFontSetDict) { | 
|  1863     const CFX_ByteString& key = it.first; |  1863     const CFX_ByteString& key = it.first; | 
|  1864     CPDF_Object* pObj = it.second; |  1864     CPDF_Object* pObj = it.second; | 
|  1865     if (!PsNameMatchDRFontName(strPsName.AsByteStringC(), bBold, bItalic, key, |  1865     if (!PsNameMatchDRFontName(strPsName.AsStringC(), bBold, bItalic, key, | 
|  1866                                bStrictMatch)) { |  1866                                bStrictMatch)) { | 
|  1867       continue; |  1867       continue; | 
|  1868     } |  1868     } | 
|  1869     CPDF_Object* pDirect = pObj->GetDirect(); |  1869     CPDF_Object* pDirect = pObj->GetDirect(); | 
|  1870     if (!pDirect || !pDirect->IsDictionary()) { |  1870     if (!pDirect || !pDirect->IsDictionary()) { | 
|  1871       return NULL; |  1871       return NULL; | 
|  1872     } |  1872     } | 
|  1873     CPDF_Dictionary* pFontDict = (CPDF_Dictionary*)pDirect; |  1873     CPDF_Dictionary* pFontDict = (CPDF_Dictionary*)pDirect; | 
|  1874     if (pFontDict->GetStringBy("Type") != "Font") { |  1874     if (pFontDict->GetStringBy("Type") != "Font") { | 
|  1875       return NULL; |  1875       return NULL; | 
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2023   bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); |  2023   bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); | 
|  2024   auto it = m_FontMap.find(bsKey); |  2024   auto it = m_FontMap.find(bsKey); | 
|  2025   if (it != m_FontMap.end()) |  2025   if (it != m_FontMap.end()) | 
|  2026     return it->second; |  2026     return it->second; | 
|  2027   CFX_WideString wsEnglishName; |  2027   CFX_WideString wsEnglishName; | 
|  2028   XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); |  2028   XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); | 
|  2029   CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); |  2029   CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); | 
|  2030   CPDF_Font* pPDFFont = NULL; |  2030   CPDF_Font* pPDFFont = NULL; | 
|  2031   IFX_Font* pFont = NULL; |  2031   IFX_Font* pFont = NULL; | 
|  2032   if (pMgr) { |  2032   if (pMgr) { | 
|  2033     pFont = |  2033     pFont = pMgr->GetFont(wsEnglishName.AsStringC(), dwFontStyles, &pPDFFont); | 
|  2034         pMgr->GetFont(wsEnglishName.AsWideStringC(), dwFontStyles, &pPDFFont); |  | 
|  2035     if (pFont) |  2034     if (pFont) | 
|  2036       return pFont; |  2035       return pFont; | 
|  2037   } |  2036   } | 
|  2038   if (!pFont && m_pDefFontMgr) { |  2037   if (!pFont && m_pDefFontMgr) { | 
|  2039     pFont = m_pDefFontMgr->GetFont(hDoc, wsFontFamily, dwFontStyles, wCodePage); |  2038     pFont = m_pDefFontMgr->GetFont(hDoc, wsFontFamily, dwFontStyles, wCodePage); | 
|  2040   } |  2039   } | 
|  2041   if (!pFont && pMgr) { |  2040   if (!pFont && pMgr) { | 
|  2042     pPDFFont = NULL; |  2041     pPDFFont = NULL; | 
|  2043     pFont = pMgr->GetFont(wsEnglishName.AsWideStringC(), dwFontStyles, |  2042     pFont = pMgr->GetFont(wsEnglishName.AsStringC(), dwFontStyles, &pPDFFont, | 
|  2044                           &pPDFFont, FALSE); |  2043                           FALSE); | 
|  2045     if (pFont) |  2044     if (pFont) | 
|  2046       return pFont; |  2045       return pFont; | 
|  2047   } |  2046   } | 
|  2048   if (!pFont && m_pDefFontMgr) { |  2047   if (!pFont && m_pDefFontMgr) { | 
|  2049     pFont = m_pDefFontMgr->GetDefaultFont(hDoc, wsFontFamily, dwFontStyles, |  2048     pFont = m_pDefFontMgr->GetDefaultFont(hDoc, wsFontFamily, dwFontStyles, | 
|  2050                                           wCodePage); |  2049                                           wCodePage); | 
|  2051   } |  2050   } | 
|  2052   if (pFont) { |  2051   if (pFont) { | 
|  2053     if (pPDFFont) { |  2052     if (pPDFFont) { | 
|  2054       pMgr->m_FDE2PDFFont.SetAt(pFont, pPDFFont); |  2053       pMgr->m_FDE2PDFFont.SetAt(pFont, pPDFFont); | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
|  2077     CXFA_PDFFontMgr* pMgr = NULL; |  2076     CXFA_PDFFontMgr* pMgr = NULL; | 
|  2078     m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); |  2077     m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); | 
|  2079     delete pMgr; |  2078     delete pMgr; | 
|  2080   } |  2079   } | 
|  2081   m_PDFFontMgrArray.RemoveAll(); |  2080   m_PDFFontMgrArray.RemoveAll(); | 
|  2082   m_FontMap.clear(); |  2081   m_FontMap.clear(); | 
|  2083 } |  2082 } | 
|  2084 void CXFA_FontMgr::SetDefFontMgr(CXFA_DefFontMgr* pFontMgr) { |  2083 void CXFA_FontMgr::SetDefFontMgr(CXFA_DefFontMgr* pFontMgr) { | 
|  2085   m_pDefFontMgr = pFontMgr; |  2084   m_pDefFontMgr = pFontMgr; | 
|  2086 } |  2085 } | 
| OLD | NEW |