| 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 <limits> | 7 #include <limits> |
| 8 | 8 |
| 9 #include "../../../include/fxge/fx_ge.h" | 9 #include "../../../include/fxge/fx_ge.h" |
| 10 #include "../../../include/fxge/fx_freetype.h" | 10 #include "../../../include/fxge/fx_freetype.h" |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 172 "Helvetica-Bold", | 172 "Helvetica-Bold", |
| 173 "Helvetica-BoldOblique", | 173 "Helvetica-BoldOblique", |
| 174 "Helvetica-Oblique", | 174 "Helvetica-Oblique", |
| 175 "Times-Roman", | 175 "Times-Roman", |
| 176 "Times-Bold", | 176 "Times-Bold", |
| 177 "Times-BoldItalic", | 177 "Times-BoldItalic", |
| 178 "Times-Italic", | 178 "Times-Italic", |
| 179 "Symbol", | 179 "Symbol", |
| 180 "ZapfDingbats", | 180 "ZapfDingbats", |
| 181 }; | 181 }; |
| 182 const struct _AltFontName { | 182 const struct AltFontName { |
| 183 const FX_CHAR* m_pName; | 183 const FX_CHAR* m_pName; |
| 184 int m_Index; | 184 int m_Index; |
| 185 } g_AltFontNames[] = { | 185 } g_AltFontNames[] = { |
| 186 {"Arial", 4}, | 186 {"Arial", 4}, |
| 187 {"Arial,Bold", 5}, | 187 {"Arial,Bold", 5}, |
| 188 {"Arial,BoldItalic", 6}, | 188 {"Arial,BoldItalic", 6}, |
| 189 {"Arial,Italic", 7}, | 189 {"Arial,Italic", 7}, |
| 190 {"Arial-Bold", 5}, | 190 {"Arial-Bold", 5}, |
| 191 {"Arial-BoldItalic", 6}, | 191 {"Arial-BoldItalic", 6}, |
| 192 {"Arial-BoldItalicMT", 6}, | 192 {"Arial-BoldItalicMT", 6}, |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 {"TimesNewRomanPS-Italic", 11}, | 268 {"TimesNewRomanPS-Italic", 11}, |
| 269 {"TimesNewRomanPS-ItalicMT", 11}, | 269 {"TimesNewRomanPS-ItalicMT", 11}, |
| 270 {"TimesNewRomanPSMT", 8}, | 270 {"TimesNewRomanPSMT", 8}, |
| 271 {"TimesNewRomanPSMT,Bold", 9}, | 271 {"TimesNewRomanPSMT,Bold", 9}, |
| 272 {"TimesNewRomanPSMT,BoldItalic", 10}, | 272 {"TimesNewRomanPSMT,BoldItalic", 10}, |
| 273 {"TimesNewRomanPSMT,Italic", 11}, | 273 {"TimesNewRomanPSMT,Italic", 11}, |
| 274 {"ZapfDingbats", 13}, | 274 {"ZapfDingbats", 13}, |
| 275 }; | 275 }; |
| 276 extern "C" { | 276 extern "C" { |
| 277 static int compareString(const void* key, const void* element) { | 277 static int compareString(const void* key, const void* element) { |
| 278 return FXSYS_stricmp((const FX_CHAR*)key, ((_AltFontName*)element)->m_pName); | 278 return FXSYS_stricmp((const FX_CHAR*)key, ((AltFontName*)element)->m_pName); |
| 279 } | 279 } |
| 280 } | 280 } |
| 281 int _PDF_GetStandardFontName(CFX_ByteString& name) { | 281 |
| 282 _AltFontName* found = | |
| 283 (_AltFontName*)FXSYS_bsearch(name.c_str(), g_AltFontNames, | |
| 284 sizeof g_AltFontNames / sizeof(_AltFontName), | |
| 285 sizeof(_AltFontName), compareString); | |
| 286 if (found == NULL) { | |
| 287 return -1; | |
| 288 } | |
| 289 name = g_Base14FontNames[found->m_Index]; | |
| 290 return found->m_Index; | |
| 291 } | |
| 292 int GetTTCIndex(const uint8_t* pFontData, | 282 int GetTTCIndex(const uint8_t* pFontData, |
| 293 FX_DWORD ttc_size, | 283 FX_DWORD ttc_size, |
| 294 FX_DWORD font_offset) { | 284 FX_DWORD font_offset) { |
| 295 int face_index = 0; | 285 int face_index = 0; |
| 296 const uint8_t* p = pFontData + 8; | 286 const uint8_t* p = pFontData + 8; |
| 297 FX_DWORD nfont = GET_TT_LONG(p); | 287 FX_DWORD nfont = GET_TT_LONG(p); |
| 298 FX_DWORD index; | 288 FX_DWORD index; |
| 299 for (index = 0; index < nfont; index++) { | 289 for (index = 0; index < nfont; index++) { |
| 300 p = pFontData + 12 + index * 4; | 290 p = pFontData + 12 + index * 4; |
| 301 if (GET_TT_LONG(p) == font_offset) { | 291 if (GET_TT_LONG(p) == font_offset) { |
| (...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 weight = FXFONT_FW_NORMAL; | 829 weight = FXFONT_FW_NORMAL; |
| 840 italic_angle = 0; | 830 italic_angle = 0; |
| 841 } | 831 } |
| 842 CFX_ByteString SubstName = name; | 832 CFX_ByteString SubstName = name; |
| 843 SubstName.Remove(0x20); | 833 SubstName.Remove(0x20); |
| 844 if (bTrueType) { | 834 if (bTrueType) { |
| 845 if (name[0] == '@') { | 835 if (name[0] == '@') { |
| 846 SubstName = name.Mid(1); | 836 SubstName = name.Mid(1); |
| 847 } | 837 } |
| 848 } | 838 } |
| 849 _PDF_GetStandardFontName(SubstName); | 839 PDF_GetStandardFontName(&SubstName); |
| 850 if (SubstName == FX_BSTRC("Symbol") && !bTrueType) { | 840 if (SubstName == FX_BSTRC("Symbol") && !bTrueType) { |
| 851 pSubstFont->m_Family = "Chrome Symbol"; | 841 pSubstFont->m_Family = "Chrome Symbol"; |
| 852 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; | 842 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; |
| 853 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; | 843 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; |
| 854 if (m_FoxitFaces[12]) { | 844 if (m_FoxitFaces[12]) { |
| 855 return m_FoxitFaces[12]; | 845 return m_FoxitFaces[12]; |
| 856 } | 846 } |
| 857 const uint8_t* pFontData = NULL; | 847 const uint8_t* pFontData = NULL; |
| 858 FX_DWORD size = 0; | 848 FX_DWORD size = 0; |
| 859 m_pFontMgr->GetStandardFont(pFontData, size, 12); | 849 m_pFontMgr->GetStandardFont(pFontData, size, 12); |
| (...skipping 13 matching lines...) Expand all Loading... |
| 873 m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0); | 863 m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0); |
| 874 return m_FoxitFaces[13]; | 864 return m_FoxitFaces[13]; |
| 875 } | 865 } |
| 876 int iBaseFont = 0; | 866 int iBaseFont = 0; |
| 877 CFX_ByteString family, style; | 867 CFX_ByteString family, style; |
| 878 FX_BOOL bHasComma = FALSE; | 868 FX_BOOL bHasComma = FALSE; |
| 879 FX_BOOL bHasHypen = FALSE; | 869 FX_BOOL bHasHypen = FALSE; |
| 880 int find = SubstName.Find(FX_BSTRC(","), 0); | 870 int find = SubstName.Find(FX_BSTRC(","), 0); |
| 881 if (find >= 0) { | 871 if (find >= 0) { |
| 882 family = SubstName.Left(find); | 872 family = SubstName.Left(find); |
| 883 _PDF_GetStandardFontName(family); | 873 PDF_GetStandardFontName(&family); |
| 884 style = SubstName.Mid(find + 1); | 874 style = SubstName.Mid(find + 1); |
| 885 bHasComma = TRUE; | 875 bHasComma = TRUE; |
| 886 } else { | 876 } else { |
| 887 family = SubstName; | 877 family = SubstName; |
| 888 } | 878 } |
| 889 for (; iBaseFont < 12; iBaseFont++) | 879 for (; iBaseFont < 12; iBaseFont++) |
| 890 if (family == CFX_ByteStringC(g_Base14FontNames[iBaseFont])) { | 880 if (family == CFX_ByteStringC(g_Base14FontNames[iBaseFont])) { |
| 891 break; | 881 break; |
| 892 } | 882 } |
| 893 int PitchFamily = 0; | 883 int PitchFamily = 0; |
| (...skipping 669 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1563 if (hFont == NULL) { | 1553 if (hFont == NULL) { |
| 1564 return FALSE; | 1554 return FALSE; |
| 1565 } | 1555 } |
| 1566 CFX_FontFaceInfo* pFont = (CFX_FontFaceInfo*)hFont; | 1556 CFX_FontFaceInfo* pFont = (CFX_FontFaceInfo*)hFont; |
| 1567 name = pFont->m_FaceName; | 1557 name = pFont->m_FaceName; |
| 1568 return TRUE; | 1558 return TRUE; |
| 1569 } | 1559 } |
| 1570 FX_BOOL CFX_FolderFontInfo::GetFontCharset(void* hFont, int& charset) { | 1560 FX_BOOL CFX_FolderFontInfo::GetFontCharset(void* hFont, int& charset) { |
| 1571 return FALSE; | 1561 return FALSE; |
| 1572 } | 1562 } |
| 1563 |
| 1564 int PDF_GetStandardFontName(CFX_ByteString* name) { |
| 1565 AltFontName* found = static_cast<AltFontName*>( |
| 1566 FXSYS_bsearch(name->c_str(), g_AltFontNames, FX_ArraySize(g_AltFontNames), |
| 1567 sizeof(AltFontName), compareString)); |
| 1568 if (!found) |
| 1569 return -1; |
| 1570 |
| 1571 *name = g_Base14FontNames[found->m_Index]; |
| 1572 return found->m_Index; |
| 1573 } |
| OLD | NEW |