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/include/fxfa/xfa_fontmgr.h" | 7 #include "xfa/include/fxfa/xfa_fontmgr.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
(...skipping 1747 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1758 } | 1758 } |
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 = XFA_GetFontINFOByFontName(wsFontName); | 1768 const XFA_FONTINFO* pCurFont = |
| 1769 XFA_GetFontINFOByFontName(wsFontName.AsWideStringC()); |
1769 if (pCurFont && pCurFont->pReplaceFont) { | 1770 if (pCurFont && pCurFont->pReplaceFont) { |
1770 uint32_t dwStyle = 0; | 1771 uint32_t dwStyle = 0; |
1771 if (dwFontStyles & FX_FONTSTYLE_Bold) { | 1772 if (dwFontStyles & FX_FONTSTYLE_Bold) { |
1772 dwStyle |= FX_FONTSTYLE_Bold; | 1773 dwStyle |= FX_FONTSTYLE_Bold; |
1773 } | 1774 } |
1774 if (dwFontStyles & FX_FONTSTYLE_Italic) { | 1775 if (dwFontStyles & FX_FONTSTYLE_Italic) { |
1775 dwStyle |= FX_FONTSTYLE_Italic; | 1776 dwStyle |= FX_FONTSTYLE_Italic; |
1776 } | 1777 } |
1777 const FX_WCHAR* pReplace = pCurFont->pReplaceFont; | 1778 const FX_WCHAR* pReplace = pCurFont->pReplaceFont; |
1778 int32_t iLength = FXSYS_wcslen(pReplace); | 1779 int32_t iLength = FXSYS_wcslen(pReplace); |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); | 2023 bsKey.Format("%u%u%u", dwHash, dwFontStyles, wCodePage); |
2023 auto it = m_FontMap.find(bsKey); | 2024 auto it = m_FontMap.find(bsKey); |
2024 if (it != m_FontMap.end()) | 2025 if (it != m_FontMap.end()) |
2025 return it->second; | 2026 return it->second; |
2026 CFX_WideString wsEnglishName; | 2027 CFX_WideString wsEnglishName; |
2027 XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); | 2028 XFA_LocalFontNameToEnglishName(wsFontFamily, wsEnglishName); |
2028 CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); | 2029 CXFA_PDFFontMgr* pMgr = (CXFA_PDFFontMgr*)m_PDFFontMgrArray.GetValueAt(hDoc); |
2029 CPDF_Font* pPDFFont = NULL; | 2030 CPDF_Font* pPDFFont = NULL; |
2030 IFX_Font* pFont = NULL; | 2031 IFX_Font* pFont = NULL; |
2031 if (pMgr) { | 2032 if (pMgr) { |
2032 pFont = pMgr->GetFont(wsEnglishName, dwFontStyles, &pPDFFont); | 2033 pFont = |
| 2034 pMgr->GetFont(wsEnglishName.AsWideStringC(), dwFontStyles, &pPDFFont); |
2033 if (pFont) | 2035 if (pFont) |
2034 return pFont; | 2036 return pFont; |
2035 } | 2037 } |
2036 if (!pFont && m_pDefFontMgr) { | 2038 if (!pFont && m_pDefFontMgr) { |
2037 pFont = m_pDefFontMgr->GetFont(hDoc, wsFontFamily, dwFontStyles, wCodePage); | 2039 pFont = m_pDefFontMgr->GetFont(hDoc, wsFontFamily, dwFontStyles, wCodePage); |
2038 } | 2040 } |
2039 if (!pFont && pMgr) { | 2041 if (!pFont && pMgr) { |
2040 pPDFFont = NULL; | 2042 pPDFFont = NULL; |
2041 pFont = pMgr->GetFont(wsEnglishName, dwFontStyles, &pPDFFont, FALSE); | 2043 pFont = pMgr->GetFont(wsEnglishName.AsWideStringC(), dwFontStyles, |
| 2044 &pPDFFont, FALSE); |
2042 if (pFont) | 2045 if (pFont) |
2043 return pFont; | 2046 return pFont; |
2044 } | 2047 } |
2045 if (!pFont && m_pDefFontMgr) { | 2048 if (!pFont && m_pDefFontMgr) { |
2046 pFont = m_pDefFontMgr->GetDefaultFont(hDoc, wsFontFamily, dwFontStyles, | 2049 pFont = m_pDefFontMgr->GetDefaultFont(hDoc, wsFontFamily, dwFontStyles, |
2047 wCodePage); | 2050 wCodePage); |
2048 } | 2051 } |
2049 if (pFont) { | 2052 if (pFont) { |
2050 if (pPDFFont) { | 2053 if (pPDFFont) { |
2051 pMgr->m_FDE2PDFFont.SetAt(pFont, pPDFFont); | 2054 pMgr->m_FDE2PDFFont.SetAt(pFont, pPDFFont); |
(...skipping 22 matching lines...) Expand all Loading... |
2074 CXFA_PDFFontMgr* pMgr = NULL; | 2077 CXFA_PDFFontMgr* pMgr = NULL; |
2075 m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); | 2078 m_PDFFontMgrArray.GetNextAssoc(ps, (void*&)hDoc, (void*&)pMgr); |
2076 delete pMgr; | 2079 delete pMgr; |
2077 } | 2080 } |
2078 m_PDFFontMgrArray.RemoveAll(); | 2081 m_PDFFontMgrArray.RemoveAll(); |
2079 m_FontMap.clear(); | 2082 m_FontMap.clear(); |
2080 } | 2083 } |
2081 void CXFA_FontMgr::SetDefFontMgr(CXFA_DefFontMgr* pFontMgr) { | 2084 void CXFA_FontMgr::SetDefFontMgr(CXFA_DefFontMgr* pFontMgr) { |
2082 m_pDefFontMgr = pFontMgr; | 2085 m_pDefFontMgr = pFontMgr; |
2083 } | 2086 } |
OLD | NEW |