Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(132)

Side by Side Diff: core/fxge/ge/fx_ge_fontmap.cpp

Issue 2032613003: Get rid of NULLs in core/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: Fix a bad merge Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fxge/ge/fx_ge_font.cpp ('k') | core/fxge/ge/fx_ge_linux.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 } 329 }
330 return buf.MakeString(); 330 return buf.MakeString();
331 } 331 }
332 332
333 int32_t GetStyleType(const CFX_ByteString& bsStyle, FX_BOOL bRevert) { 333 int32_t GetStyleType(const CFX_ByteString& bsStyle, FX_BOOL bRevert) {
334 int32_t iLen = bsStyle.GetLength(); 334 int32_t iLen = bsStyle.GetLength();
335 if (!iLen) { 335 if (!iLen) {
336 return -1; 336 return -1;
337 } 337 }
338 int iSize = sizeof(g_FontStyles) / sizeof(FX_FontStyle); 338 int iSize = sizeof(g_FontStyles) / sizeof(FX_FontStyle);
339 const FX_FontStyle* pStyle = NULL; 339 const FX_FontStyle* pStyle = nullptr;
340 for (int i = iSize - 1; i >= 0; --i) { 340 for (int i = iSize - 1; i >= 0; --i) {
341 pStyle = g_FontStyles + i; 341 pStyle = g_FontStyles + i;
342 if (!pStyle || pStyle->len > iLen) { 342 if (!pStyle || pStyle->len > iLen) {
343 continue; 343 continue;
344 } 344 }
345 if (!bRevert) { 345 if (!bRevert) {
346 if (bsStyle.Left(pStyle->len).Compare(pStyle->style) == 0) { 346 if (bsStyle.Left(pStyle->len).Compare(pStyle->style) == 0) {
347 return i; 347 return i;
348 } 348 }
349 } else { 349 } else {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 if (!!(style & FXFONT_FIXED_PITCH) == 403 if (!!(style & FXFONT_FIXED_PITCH) ==
404 !!(pitch_family & FXFONT_FF_FIXEDPITCH)) { 404 !!(pitch_family & FXFONT_FF_FIXEDPITCH)) {
405 iSimilarValue += 8; 405 iSimilarValue += 8;
406 } 406 }
407 return iSimilarValue; 407 return iSimilarValue;
408 } 408 }
409 409
410 } // namespace 410 } // namespace
411 411
412 CFX_SubstFont::CFX_SubstFont() { 412 CFX_SubstFont::CFX_SubstFont() {
413 m_ExtHandle = NULL; 413 m_ExtHandle = nullptr;
414 m_Charset = 0; 414 m_Charset = 0;
415 m_SubstFlags = 0; 415 m_SubstFlags = 0;
416 m_Weight = 0; 416 m_Weight = 0;
417 m_ItalicAngle = 0; 417 m_ItalicAngle = 0;
418 m_bSubstOfCJK = FALSE; 418 m_bSubstOfCJK = FALSE;
419 m_WeightCJK = 0; 419 m_WeightCJK = 0;
420 m_bItlicCJK = FALSE; 420 m_bItlicCJK = FALSE;
421 } 421 }
422 CTTFontDesc::~CTTFontDesc() { 422 CTTFontDesc::~CTTFontDesc() {
423 if (m_Type == 1) { 423 if (m_Type == 1) {
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 return pFontDesc->m_SingleFace.m_pFace; 510 return pFontDesc->m_SingleFace.m_pFace;
511 } 511 }
512 FXFT_Face CFX_FontMgr::AddCachedFace(const CFX_ByteString& face_name, 512 FXFT_Face CFX_FontMgr::AddCachedFace(const CFX_ByteString& face_name,
513 int weight, 513 int weight,
514 FX_BOOL bItalic, 514 FX_BOOL bItalic,
515 uint8_t* pData, 515 uint8_t* pData,
516 uint32_t size, 516 uint32_t size,
517 int face_index) { 517 int face_index) {
518 CTTFontDesc* pFontDesc = new CTTFontDesc; 518 CTTFontDesc* pFontDesc = new CTTFontDesc;
519 pFontDesc->m_Type = 1; 519 pFontDesc->m_Type = 1;
520 pFontDesc->m_SingleFace.m_pFace = NULL; 520 pFontDesc->m_SingleFace.m_pFace = nullptr;
521 pFontDesc->m_SingleFace.m_bBold = weight; 521 pFontDesc->m_SingleFace.m_bBold = weight;
522 pFontDesc->m_SingleFace.m_bItalic = bItalic; 522 pFontDesc->m_SingleFace.m_bItalic = bItalic;
523 pFontDesc->m_pFontData = pData; 523 pFontDesc->m_pFontData = pData;
524 pFontDesc->m_RefCount = 1; 524 pFontDesc->m_RefCount = 1;
525 525
526 InitFTLibrary(); 526 InitFTLibrary();
527 FXFT_Library library = m_FTLibrary; 527 FXFT_Library library = m_FTLibrary;
528 int ret = FXFT_New_Memory_Face(library, pData, size, face_index, 528 int ret = FXFT_New_Memory_Face(library, pData, size, face_index,
529 &pFontDesc->m_SingleFace.m_pFace); 529 &pFontDesc->m_SingleFace.m_pFace);
530 if (ret) { 530 if (ret) {
531 delete pFontDesc; 531 delete pFontDesc;
532 return NULL; 532 return nullptr;
533 } 533 }
534 ret = FXFT_Set_Pixel_Sizes(pFontDesc->m_SingleFace.m_pFace, 64, 64); 534 ret = FXFT_Set_Pixel_Sizes(pFontDesc->m_SingleFace.m_pFace, 64, 64);
535 if (ret) { 535 if (ret) {
536 delete pFontDesc; 536 delete pFontDesc;
537 return NULL; 537 return nullptr;
538 } 538 }
539 m_FaceMap[KeyNameFromFace(face_name, weight, bItalic)] = pFontDesc; 539 m_FaceMap[KeyNameFromFace(face_name, weight, bItalic)] = pFontDesc;
540 return pFontDesc->m_SingleFace.m_pFace; 540 return pFontDesc->m_SingleFace.m_pFace;
541 } 541 }
542 542
543 int GetTTCIndex(const uint8_t* pFontData, 543 int GetTTCIndex(const uint8_t* pFontData,
544 uint32_t ttc_size, 544 uint32_t ttc_size,
545 uint32_t font_offset) { 545 uint32_t font_offset) {
546 int face_index = 0; 546 int face_index = 0;
547 const uint8_t* p = pFontData + 8; 547 const uint8_t* p = pFontData + 8;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
580 } 580 }
581 FXFT_Face CFX_FontMgr::AddCachedTTCFace(int ttc_size, 581 FXFT_Face CFX_FontMgr::AddCachedTTCFace(int ttc_size,
582 uint32_t checksum, 582 uint32_t checksum,
583 uint8_t* pData, 583 uint8_t* pData,
584 uint32_t size, 584 uint32_t size,
585 int font_offset) { 585 int font_offset) {
586 CTTFontDesc* pFontDesc = new CTTFontDesc; 586 CTTFontDesc* pFontDesc = new CTTFontDesc;
587 pFontDesc->m_Type = 2; 587 pFontDesc->m_Type = 2;
588 pFontDesc->m_pFontData = pData; 588 pFontDesc->m_pFontData = pData;
589 for (int i = 0; i < 16; i++) { 589 for (int i = 0; i < 16; i++) {
590 pFontDesc->m_TTCFace.m_pFaces[i] = NULL; 590 pFontDesc->m_TTCFace.m_pFaces[i] = nullptr;
591 } 591 }
592 pFontDesc->m_RefCount++; 592 pFontDesc->m_RefCount++;
593 m_FaceMap[KeyNameFromSize(ttc_size, checksum)] = pFontDesc; 593 m_FaceMap[KeyNameFromSize(ttc_size, checksum)] = pFontDesc;
594 int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset); 594 int face_index = GetTTCIndex(pFontDesc->m_pFontData, ttc_size, font_offset);
595 pFontDesc->m_TTCFace.m_pFaces[face_index] = 595 pFontDesc->m_TTCFace.m_pFaces[face_index] =
596 GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index); 596 GetFixedFace(pFontDesc->m_pFontData, ttc_size, face_index);
597 return pFontDesc->m_TTCFace.m_pFaces[face_index]; 597 return pFontDesc->m_TTCFace.m_pFaces[face_index];
598 } 598 }
599 599
600 FXFT_Face CFX_FontMgr::GetFixedFace(const uint8_t* pData, 600 FXFT_Face CFX_FontMgr::GetFixedFace(const uint8_t* pData,
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after
808 808
809 FXFT_Face CFX_FontMapper::UseInternalSubst(CFX_SubstFont* pSubstFont, 809 FXFT_Face CFX_FontMapper::UseInternalSubst(CFX_SubstFont* pSubstFont,
810 int iBaseFont, 810 int iBaseFont,
811 int italic_angle, 811 int italic_angle,
812 int weight, 812 int weight,
813 int picthfamily) { 813 int picthfamily) {
814 if (iBaseFont < 12) { 814 if (iBaseFont < 12) {
815 if (m_FoxitFaces[iBaseFont]) { 815 if (m_FoxitFaces[iBaseFont]) {
816 return m_FoxitFaces[iBaseFont]; 816 return m_FoxitFaces[iBaseFont];
817 } 817 }
818 const uint8_t* pFontData = NULL; 818 const uint8_t* pFontData = nullptr;
819 uint32_t size = 0; 819 uint32_t size = 0;
820 if (m_pFontMgr->GetBuiltinFont(iBaseFont, &pFontData, &size)) { 820 if (m_pFontMgr->GetBuiltinFont(iBaseFont, &pFontData, &size)) {
821 m_FoxitFaces[iBaseFont] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 821 m_FoxitFaces[iBaseFont] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
822 return m_FoxitFaces[iBaseFont]; 822 return m_FoxitFaces[iBaseFont];
823 } 823 }
824 } 824 }
825 pSubstFont->m_SubstFlags |= FXFONT_SUBST_MM; 825 pSubstFont->m_SubstFlags |= FXFONT_SUBST_MM;
826 pSubstFont->m_ItalicAngle = italic_angle; 826 pSubstFont->m_ItalicAngle = italic_angle;
827 if (weight) { 827 if (weight) {
828 pSubstFont->m_Weight = weight; 828 pSubstFont->m_Weight = weight;
829 } 829 }
830 if (picthfamily & FXFONT_FF_ROMAN) { 830 if (picthfamily & FXFONT_FF_ROMAN) {
831 pSubstFont->m_Weight = pSubstFont->m_Weight * 4 / 5; 831 pSubstFont->m_Weight = pSubstFont->m_Weight * 4 / 5;
832 pSubstFont->m_Family = "Chrome Serif"; 832 pSubstFont->m_Family = "Chrome Serif";
833 if (m_MMFaces[1]) { 833 if (m_MMFaces[1]) {
834 return m_MMFaces[1]; 834 return m_MMFaces[1];
835 } 835 }
836 const uint8_t* pFontData = NULL; 836 const uint8_t* pFontData = nullptr;
837 uint32_t size = 0; 837 uint32_t size = 0;
838 m_pFontMgr->GetBuiltinFont(14, &pFontData, &size); 838 m_pFontMgr->GetBuiltinFont(14, &pFontData, &size);
839 m_MMFaces[1] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 839 m_MMFaces[1] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
840 return m_MMFaces[1]; 840 return m_MMFaces[1];
841 } 841 }
842 pSubstFont->m_Family = "Chrome Sans"; 842 pSubstFont->m_Family = "Chrome Sans";
843 if (m_MMFaces[0]) { 843 if (m_MMFaces[0]) {
844 return m_MMFaces[0]; 844 return m_MMFaces[0];
845 } 845 }
846 const uint8_t* pFontData = NULL; 846 const uint8_t* pFontData = nullptr;
847 uint32_t size = 0; 847 uint32_t size = 0;
848 m_pFontMgr->GetBuiltinFont(15, &pFontData, &size); 848 m_pFontMgr->GetBuiltinFont(15, &pFontData, &size);
849 m_MMFaces[0] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 849 m_MMFaces[0] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
850 return m_MMFaces[0]; 850 return m_MMFaces[0];
851 } 851 }
852 852
853 FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name, 853 FXFT_Face CFX_FontMapper::FindSubstFont(const CFX_ByteString& name,
854 FX_BOOL bTrueType, 854 FX_BOOL bTrueType,
855 uint32_t flags, 855 uint32_t flags,
856 int weight, 856 int weight,
(...skipping 12 matching lines...) Expand all
869 } 869 }
870 } 870 }
871 PDF_GetStandardFontName(&SubstName); 871 PDF_GetStandardFontName(&SubstName);
872 if (SubstName == "Symbol" && !bTrueType) { 872 if (SubstName == "Symbol" && !bTrueType) {
873 pSubstFont->m_Family = "Chrome Symbol"; 873 pSubstFont->m_Family = "Chrome Symbol";
874 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; 874 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET;
875 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; 875 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD;
876 if (m_FoxitFaces[12]) { 876 if (m_FoxitFaces[12]) {
877 return m_FoxitFaces[12]; 877 return m_FoxitFaces[12];
878 } 878 }
879 const uint8_t* pFontData = NULL; 879 const uint8_t* pFontData = nullptr;
880 uint32_t size = 0; 880 uint32_t size = 0;
881 m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); 881 m_pFontMgr->GetBuiltinFont(12, &pFontData, &size);
882 m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 882 m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
883 return m_FoxitFaces[12]; 883 return m_FoxitFaces[12];
884 } 884 }
885 if (SubstName == "ZapfDingbats") { 885 if (SubstName == "ZapfDingbats") {
886 pSubstFont->m_Family = "Chrome Dingbats"; 886 pSubstFont->m_Family = "Chrome Dingbats";
887 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; 887 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET;
888 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; 888 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD;
889 if (m_FoxitFaces[13]) { 889 if (m_FoxitFaces[13]) {
890 return m_FoxitFaces[13]; 890 return m_FoxitFaces[13];
891 } 891 }
892 const uint8_t* pFontData = NULL; 892 const uint8_t* pFontData = nullptr;
893 uint32_t size = 0; 893 uint32_t size = 0;
894 m_pFontMgr->GetBuiltinFont(13, &pFontData, &size); 894 m_pFontMgr->GetBuiltinFont(13, &pFontData, &size);
895 m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 895 m_FoxitFaces[13] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
896 return m_FoxitFaces[13]; 896 return m_FoxitFaces[13];
897 } 897 }
898 int iBaseFont = 0; 898 int iBaseFont = 0;
899 CFX_ByteString family, style; 899 CFX_ByteString family, style;
900 FX_BOOL bHasComma = FALSE; 900 FX_BOOL bHasComma = FALSE;
901 FX_BOOL bHasHypen = FALSE; 901 FX_BOOL bHasHypen = FALSE;
902 int find = SubstName.Find(",", 0); 902 int find = SubstName.Find(",", 0);
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
1099 } 1099 }
1100 iExact = !match.IsEmpty(); 1100 iExact = !match.IsEmpty();
1101 void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily, 1101 void* hFont = m_pFontInfo->MapFont(weight, bItalic, Charset, PitchFamily,
1102 family.c_str(), iExact); 1102 family.c_str(), iExact);
1103 if (iExact) { 1103 if (iExact) {
1104 pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT; 1104 pSubstFont->m_SubstFlags |= FXFONT_SUBST_EXACT;
1105 } 1105 }
1106 if (!hFont) { 1106 if (!hFont) {
1107 #ifdef PDF_ENABLE_XFA 1107 #ifdef PDF_ENABLE_XFA
1108 if (flags & FXFONT_EXACTMATCH) { 1108 if (flags & FXFONT_EXACTMATCH) {
1109 return NULL; 1109 return nullptr;
1110 } 1110 }
1111 #endif // PDF_ENABLE_XFA 1111 #endif // PDF_ENABLE_XFA
1112 if (bCJK) { 1112 if (bCJK) {
1113 if (italic_angle != 0) { 1113 if (italic_angle != 0) {
1114 bItalic = TRUE; 1114 bItalic = TRUE;
1115 } else { 1115 } else {
1116 bItalic = FALSE; 1116 bItalic = FALSE;
1117 } 1117 }
1118 weight = old_weight; 1118 weight = old_weight;
1119 } 1119 }
1120 if (!match.IsEmpty()) { 1120 if (!match.IsEmpty()) {
1121 hFont = m_pFontInfo->GetFont(match.c_str()); 1121 hFont = m_pFontInfo->GetFont(match.c_str());
1122 if (!hFont) { 1122 if (!hFont) {
1123 return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight, 1123 return UseInternalSubst(pSubstFont, iBaseFont, italic_angle, old_weight,
1124 PitchFamily); 1124 PitchFamily);
1125 } 1125 }
1126 } else { 1126 } else {
1127 if (Charset == FXFONT_SYMBOL_CHARSET) { 1127 if (Charset == FXFONT_SYMBOL_CHARSET) {
1128 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \ 1128 #if _FXM_PLATFORM_ == _FXM_PLATFORM_APPLE_ || \
1129 _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ 1129 _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_
1130 if (SubstName == "Symbol") { 1130 if (SubstName == "Symbol") {
1131 pSubstFont->m_Family = "Chrome Symbol"; 1131 pSubstFont->m_Family = "Chrome Symbol";
1132 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD; 1132 pSubstFont->m_SubstFlags |= FXFONT_SUBST_STANDARD;
1133 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET; 1133 pSubstFont->m_Charset = FXFONT_SYMBOL_CHARSET;
1134 if (m_FoxitFaces[12]) { 1134 if (m_FoxitFaces[12]) {
1135 return m_FoxitFaces[12]; 1135 return m_FoxitFaces[12];
1136 } 1136 }
1137 const uint8_t* pFontData = NULL; 1137 const uint8_t* pFontData = nullptr;
1138 uint32_t size = 0; 1138 uint32_t size = 0;
1139 m_pFontMgr->GetBuiltinFont(12, &pFontData, &size); 1139 m_pFontMgr->GetBuiltinFont(12, &pFontData, &size);
1140 m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0); 1140 m_FoxitFaces[12] = m_pFontMgr->GetFixedFace(pFontData, size, 0);
1141 return m_FoxitFaces[12]; 1141 return m_FoxitFaces[12];
1142 } 1142 }
1143 #endif 1143 #endif
1144 pSubstFont->m_SubstFlags |= FXFONT_SUBST_NONSYMBOL; 1144 pSubstFont->m_SubstFlags |= FXFONT_SUBST_NONSYMBOL;
1145 return FindSubstFont(family, bTrueType, flags & ~FXFONT_SYMBOLIC, 1145 return FindSubstFont(family, bTrueType, flags & ~FXFONT_SYMBOLIC,
1146 weight, italic_angle, 0, pSubstFont); 1146 weight, italic_angle, 0, pSubstFont);
1147 } 1147 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1200 if (!face) { 1200 if (!face) {
1201 pFontData = FX_Alloc(uint8_t, font_size); 1201 pFontData = FX_Alloc(uint8_t, font_size);
1202 m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size); 1202 m_pFontInfo->GetFontData(hFont, 0, pFontData, font_size);
1203 face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData, 1203 face = m_pFontMgr->AddCachedFace(SubstName, weight, bItalic, pFontData,
1204 font_size, 1204 font_size,
1205 m_pFontInfo->GetFaceIndex(hFont)); 1205 m_pFontInfo->GetFaceIndex(hFont));
1206 } 1206 }
1207 } 1207 }
1208 if (!face) { 1208 if (!face) {
1209 m_pFontInfo->DeleteFont(hFont); 1209 m_pFontInfo->DeleteFont(hFont);
1210 return NULL; 1210 return nullptr;
1211 } 1211 }
1212 pSubstFont->m_Family = SubstName; 1212 pSubstFont->m_Family = SubstName;
1213 pSubstFont->m_Charset = Charset; 1213 pSubstFont->m_Charset = Charset;
1214 FX_BOOL bNeedUpdateWeight = FALSE; 1214 FX_BOOL bNeedUpdateWeight = FALSE;
1215 if (FXFT_Is_Face_Bold(face)) { 1215 if (FXFT_Is_Face_Bold(face)) {
1216 if (weight == FXFONT_FW_BOLD) { 1216 if (weight == FXFONT_FW_BOLD) {
1217 bNeedUpdateWeight = FALSE; 1217 bNeedUpdateWeight = FALSE;
1218 } else { 1218 } else {
1219 bNeedUpdateWeight = TRUE; 1219 bNeedUpdateWeight = TRUE;
1220 } 1220 }
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1256 PitchFamily |= FXFONT_FF_SCRIPT; 1256 PitchFamily |= FXFONT_FF_SCRIPT;
1257 } 1257 }
1258 if (flags & FXFONT_FIXED_PITCH) { 1258 if (flags & FXFONT_FIXED_PITCH) {
1259 PitchFamily |= FXFONT_FF_FIXEDPITCH; 1259 PitchFamily |= FXFONT_FF_FIXEDPITCH;
1260 } 1260 }
1261 void* hFont = 1261 void* hFont =
1262 m_pFontInfo->MapFontByUnicode(dwUnicode, weight, bItalic, PitchFamily); 1262 m_pFontInfo->MapFontByUnicode(dwUnicode, weight, bItalic, PitchFamily);
1263 if (!hFont) 1263 if (!hFont)
1264 return nullptr; 1264 return nullptr;
1265 1265
1266 uint32_t ttc_size = m_pFontInfo->GetFontData(hFont, 0x74746366, NULL, 0); 1266 uint32_t ttc_size = m_pFontInfo->GetFontData(hFont, 0x74746366, nullptr, 0);
1267 uint32_t font_size = m_pFontInfo->GetFontData(hFont, 0, NULL, 0); 1267 uint32_t font_size = m_pFontInfo->GetFontData(hFont, 0, nullptr, 0);
1268 if (font_size == 0 && ttc_size == 0) { 1268 if (font_size == 0 && ttc_size == 0) {
1269 m_pFontInfo->DeleteFont(hFont); 1269 m_pFontInfo->DeleteFont(hFont);
1270 return NULL; 1270 return nullptr;
1271 } 1271 }
1272 FXFT_Face face = NULL; 1272 FXFT_Face face = nullptr;
1273 if (ttc_size) { 1273 if (ttc_size) {
1274 uint8_t temp[1024]; 1274 uint8_t temp[1024];
1275 m_pFontInfo->GetFontData(hFont, 0x74746366, temp, 1024); 1275 m_pFontInfo->GetFontData(hFont, 0x74746366, temp, 1024);
1276 uint32_t checksum = 0; 1276 uint32_t checksum = 0;
1277 for (int i = 0; i < 256; i++) { 1277 for (int i = 0; i < 256; i++) {
1278 checksum += ((uint32_t*)temp)[i]; 1278 checksum += ((uint32_t*)temp)[i];
1279 } 1279 }
1280 uint8_t* pFontData; 1280 uint8_t* pFontData;
1281 face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum, 1281 face = m_pFontMgr->GetCachedTTCFace(ttc_size, checksum,
1282 ttc_size - font_size, pFontData); 1282 ttc_size - font_size, pFontData);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1315 int pitch_family) { 1315 int pitch_family) {
1316 return nullptr; 1316 return nullptr;
1317 } 1317 }
1318 #endif // PDF_ENABLE_XFA 1318 #endif // PDF_ENABLE_XFA
1319 1319
1320 int IFX_SystemFontInfo::GetFaceIndex(void* hFont) { 1320 int IFX_SystemFontInfo::GetFaceIndex(void* hFont) {
1321 return 0; 1321 return 0;
1322 } 1322 }
1323 1323
1324 void* IFX_SystemFontInfo::RetainFont(void* hFont) { 1324 void* IFX_SystemFontInfo::RetainFont(void* hFont) {
1325 return NULL; 1325 return nullptr;
1326 } 1326 }
1327 1327
1328 int CFX_FontMapper::GetFaceSize() const { 1328 int CFX_FontMapper::GetFaceSize() const {
1329 return pdfium::CollectionSize<int>(m_FaceArray); 1329 return pdfium::CollectionSize<int>(m_FaceArray);
1330 } 1330 }
1331 1331
1332 FX_BOOL CFX_FontMapper::IsBuiltinFace(const FXFT_Face face) const { 1332 FX_BOOL CFX_FontMapper::IsBuiltinFace(const FXFT_Face face) const {
1333 for (size_t i = 0; i < MM_FACE_COUNT; ++i) { 1333 for (size_t i = 0; i < MM_FACE_COUNT; ++i) {
1334 if (m_MMFaces[i] == face) { 1334 if (m_MMFaces[i] == face) {
1335 return TRUE; 1335 return TRUE;
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1559 } 1559 }
1560 } 1560 }
1561 return pFind; 1561 return pFind;
1562 } 1562 }
1563 void* CFX_FolderFontInfo::MapFont(int weight, 1563 void* CFX_FolderFontInfo::MapFont(int weight,
1564 FX_BOOL bItalic, 1564 FX_BOOL bItalic,
1565 int charset, 1565 int charset,
1566 int pitch_family, 1566 int pitch_family,
1567 const FX_CHAR* family, 1567 const FX_CHAR* family,
1568 int& iExact) { 1568 int& iExact) {
1569 return NULL; 1569 return nullptr;
1570 } 1570 }
1571 1571
1572 #ifdef PDF_ENABLE_XFA 1572 #ifdef PDF_ENABLE_XFA
1573 void* CFX_FolderFontInfo::MapFontByUnicode(uint32_t dwUnicode, 1573 void* CFX_FolderFontInfo::MapFontByUnicode(uint32_t dwUnicode,
1574 int weight, 1574 int weight,
1575 FX_BOOL bItalic, 1575 FX_BOOL bItalic,
1576 int pitch_family) { 1576 int pitch_family) {
1577 return NULL; 1577 return nullptr;
1578 } 1578 }
1579 #endif // PDF_ENABLE_XFA 1579 #endif // PDF_ENABLE_XFA
1580 1580
1581 void* CFX_FolderFontInfo::GetFont(const FX_CHAR* face) { 1581 void* CFX_FolderFontInfo::GetFont(const FX_CHAR* face) {
1582 auto it = m_FontList.find(face); 1582 auto it = m_FontList.find(face);
1583 return it != m_FontList.end() ? it->second : nullptr; 1583 return it != m_FontList.end() ? it->second : nullptr;
1584 } 1584 }
1585 1585
1586 uint32_t CFX_FolderFontInfo::GetFontData(void* hFont, 1586 uint32_t CFX_FolderFontInfo::GetFontData(void* hFont,
1587 uint32_t table, 1587 uint32_t table,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 int PDF_GetStandardFontName(CFX_ByteString* name) { 1639 int PDF_GetStandardFontName(CFX_ByteString* name) {
1640 AltFontName* found = static_cast<AltFontName*>( 1640 AltFontName* found = static_cast<AltFontName*>(
1641 FXSYS_bsearch(name->c_str(), g_AltFontNames, FX_ArraySize(g_AltFontNames), 1641 FXSYS_bsearch(name->c_str(), g_AltFontNames, FX_ArraySize(g_AltFontNames),
1642 sizeof(AltFontName), CompareString)); 1642 sizeof(AltFontName), CompareString));
1643 if (!found) 1643 if (!found)
1644 return -1; 1644 return -1;
1645 1645
1646 *name = g_Base14FontNames[found->m_Index]; 1646 *name = g_Base14FontNames[found->m_Index];
1647 return found->m_Index; 1647 return found->m_Index;
1648 } 1648 }
OLDNEW
« no previous file with comments | « core/fxge/ge/fx_ge_font.cpp ('k') | core/fxge/ge/fx_ge_linux.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698