| 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 "../../../include/fpdfapi/fpdf_page.h" | 7 #include "../../../include/fpdfapi/fpdf_page.h" |
| 8 #include "../../../include/fpdfapi/fpdf_module.h" | 8 #include "../../../include/fpdfapi/fpdf_module.h" |
| 9 #include "../../../include/fpdfapi/fpdf_pageobj.h" | 9 #include "../../../include/fpdfapi/fpdf_pageobj.h" |
| 10 #include "font_int.h" | 10 #include "font_int.h" |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 414 } | 414 } |
| 415 const uint8_t ChineseFontNames[][5] = { | 415 const uint8_t ChineseFontNames[][5] = { |
| 416 {0xCB, 0xCE, 0xCC, 0xE5, 0x00}, | 416 {0xCB, 0xCE, 0xCC, 0xE5, 0x00}, |
| 417 {0xBF, 0xAC, 0xCC, 0xE5, 0x00}, | 417 {0xBF, 0xAC, 0xCC, 0xE5, 0x00}, |
| 418 {0xBA, 0xDA, 0xCC, 0xE5, 0x00}, | 418 {0xBA, 0xDA, 0xCC, 0xE5, 0x00}, |
| 419 {0xB7, 0xC2, 0xCB, 0xCE, 0x00}, | 419 {0xB7, 0xC2, 0xCB, 0xCE, 0x00}, |
| 420 {0xD0, 0xC2, 0xCB, 0xCE, 0x00} | 420 {0xD0, 0xC2, 0xCB, 0xCE, 0x00} |
| 421 }; | 421 }; |
| 422 CPDF_Font* CPDF_Font::CreateFontF(CPDF_Document* pDoc, CPDF_Dictionary* pFontDic
t) | 422 CPDF_Font* CPDF_Font::CreateFontF(CPDF_Document* pDoc, CPDF_Dictionary* pFontDic
t) |
| 423 { | 423 { |
| 424 CFX_ByteString type = pFontDict->GetString(FX_BSTRC("Subtype")); | 424 CFX_ByteString type = pFontDict->GetStringAt("Subtype"); |
| 425 CPDF_Font* pFont; | 425 CPDF_Font* pFont; |
| 426 if (type == FX_BSTRC("TrueType")) { | 426 if (type == FX_BSTRC("TrueType")) { |
| 427 { | 427 { |
| 428 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ || _FXM_PLATFORM_ == _FXM_PLATFORM
_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ || _FXM_PLATFORM_ == _FXM_PL
ATFORM_APPLE_ | 428 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ || _FXM_PLATFORM_ == _FXM_PLATFORM
_LINUX_ || _FXM_PLATFORM_ == _FXM_PLATFORM_ANDROID_ || _FXM_PLATFORM_ == _FXM_PL
ATFORM_APPLE_ |
| 429 CFX_ByteString basefont = pFontDict->GetString(FX_BSTRC("BaseFont"))
; | 429 CFX_ByteString basefont = pFontDict->GetStringAt("BaseFont"); |
| 430 CFX_ByteString tag = basefont.Left(4); | 430 CFX_ByteString tag = basefont.Left(4); |
| 431 int i; | 431 int i; |
| 432 int count = sizeof(ChineseFontNames) / sizeof(ChineseFontNames[0]); | 432 int count = sizeof(ChineseFontNames) / sizeof(ChineseFontNames[0]); |
| 433 for (i = 0; i < count; ++i) { | 433 for (i = 0; i < count; ++i) { |
| 434 if (tag == CFX_ByteString((const FX_CHAR*)ChineseFontNames[i]))
{ | 434 if (tag == CFX_ByteString((const FX_CHAR*)ChineseFontNames[i]))
{ |
| 435 break; | 435 break; |
| 436 } | 436 } |
| 437 } | 437 } |
| 438 if (i < count) { | 438 if (i < count) { |
| 439 CPDF_Dictionary* pFontDesc = pFontDict->GetDict(FX_BSTRC("FontDe
scriptor")); | 439 CPDF_Dictionary* pFontDesc = pFontDict->GetDict(FX_BSTRC("FontDe
scriptor")); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 464 delete pFont; | 464 delete pFont; |
| 465 return NULL; | 465 return NULL; |
| 466 } | 466 } |
| 467 return pFont; | 467 return pFont; |
| 468 } | 468 } |
| 469 FX_BOOL CPDF_Font::Load() | 469 FX_BOOL CPDF_Font::Load() |
| 470 { | 470 { |
| 471 if (m_pFontDict == NULL) { | 471 if (m_pFontDict == NULL) { |
| 472 return FALSE; | 472 return FALSE; |
| 473 } | 473 } |
| 474 CFX_ByteString type = m_pFontDict->GetString(FX_BSTRC("Subtype")); | 474 CFX_ByteString type = m_pFontDict->GetStringAt("Subtype"); |
| 475 m_BaseFont = m_pFontDict->GetString(FX_BSTRC("BaseFont")); | 475 m_BaseFont = m_pFontDict->GetStringAt("BaseFont"); |
| 476 if (type == FX_BSTRC("MMType1")) { | 476 if (type == FX_BSTRC("MMType1")) { |
| 477 type = FX_BSTRC("Type1"); | 477 type = FX_BSTRC("Type1"); |
| 478 } | 478 } |
| 479 return _Load(); | 479 return _Load(); |
| 480 } | 480 } |
| 481 static CFX_WideString _FontMap_GetWideString(CFX_CharMap* pMap, const CFX_ByteSt
ring& bytestr) | 481 static CFX_WideString _FontMap_GetWideString(CFX_CharMap* pMap, const CFX_ByteSt
ring& bytestr) |
| 482 { | 482 { |
| 483 return ((CPDF_FontCharMap*)pMap)->m_pFont->DecodeString(bytestr); | 483 return ((CPDF_FontCharMap*)pMap)->m_pFont->DecodeString(bytestr); |
| 484 } | 484 } |
| 485 static CFX_ByteString _FontMap_GetByteString(CFX_CharMap* pMap, const CFX_WideSt
ring& widestr) | 485 static CFX_ByteString _FontMap_GetByteString(CFX_CharMap* pMap, const CFX_WideSt
ring& widestr) |
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 766 bsEncoding = FX_BSTRC("WinAnsiEncoding"); | 766 bsEncoding = FX_BSTRC("WinAnsiEncoding"); |
| 767 } | 767 } |
| 768 GetPredefinedEncoding(iBaseEncoding, bsEncoding); | 768 GetPredefinedEncoding(iBaseEncoding, bsEncoding); |
| 769 return; | 769 return; |
| 770 } | 770 } |
| 771 if (pEncoding->GetType() != PDFOBJ_DICTIONARY) { | 771 if (pEncoding->GetType() != PDFOBJ_DICTIONARY) { |
| 772 return; | 772 return; |
| 773 } | 773 } |
| 774 CPDF_Dictionary* pDict = (CPDF_Dictionary*)pEncoding; | 774 CPDF_Dictionary* pDict = (CPDF_Dictionary*)pEncoding; |
| 775 if (iBaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && iBaseEncoding != PDFFO
NT_ENCODING_ZAPFDINGBATS) { | 775 if (iBaseEncoding != PDFFONT_ENCODING_ADOBE_SYMBOL && iBaseEncoding != PDFFO
NT_ENCODING_ZAPFDINGBATS) { |
| 776 CFX_ByteString bsEncoding = pDict->GetString(FX_BSTRC("BaseEncoding")); | 776 CFX_ByteString bsEncoding = pDict->GetStringAt("BaseEncoding"); |
| 777 if (bsEncoding.Compare(FX_BSTRC("MacExpertEncoding")) == 0 && bTrueType)
{ | 777 if (bsEncoding.Compare(FX_BSTRC("MacExpertEncoding")) == 0 && bTrueType)
{ |
| 778 bsEncoding = FX_BSTRC("WinAnsiEncoding"); | 778 bsEncoding = FX_BSTRC("WinAnsiEncoding"); |
| 779 } | 779 } |
| 780 GetPredefinedEncoding(iBaseEncoding, bsEncoding); | 780 GetPredefinedEncoding(iBaseEncoding, bsEncoding); |
| 781 } | 781 } |
| 782 if ((!bEmbedded || bTrueType) && iBaseEncoding == PDFFONT_ENCODING_BUILTIN)
{ | 782 if ((!bEmbedded || bTrueType) && iBaseEncoding == PDFFONT_ENCODING_BUILTIN)
{ |
| 783 iBaseEncoding = PDFFONT_ENCODING_STANDARD; | 783 iBaseEncoding = PDFFONT_ENCODING_STANDARD; |
| 784 } | 784 } |
| 785 CPDF_Array* pDiffs = pDict->GetArray(FX_BSTRC("Differences")); | 785 CPDF_Array* pDiffs = pDict->GetArray(FX_BSTRC("Differences")); |
| 786 if (pDiffs == NULL) { | 786 if (pDiffs == NULL) { |
| (...skipping 953 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1740 m_pForm = NULL; | 1740 m_pForm = NULL; |
| 1741 m_pBitmap = NULL; | 1741 m_pBitmap = NULL; |
| 1742 m_bPageRequired = FALSE; | 1742 m_bPageRequired = FALSE; |
| 1743 m_bColored = FALSE; | 1743 m_bColored = FALSE; |
| 1744 } | 1744 } |
| 1745 CPDF_Type3Char::~CPDF_Type3Char() | 1745 CPDF_Type3Char::~CPDF_Type3Char() |
| 1746 { | 1746 { |
| 1747 delete m_pForm; | 1747 delete m_pForm; |
| 1748 delete m_pBitmap; | 1748 delete m_pBitmap; |
| 1749 } | 1749 } |
| OLD | NEW |