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 768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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) { |
787 return; | 787 return; |
788 } | 788 } |
789 FX_NEW_VECTOR(pCharNames, CFX_ByteString, 256); | 789 pCharNames = new CFX_ByteString[256]; |
790 FX_DWORD cur_code = 0; | 790 FX_DWORD cur_code = 0; |
791 for (FX_DWORD i = 0; i < pDiffs->GetCount(); i ++) { | 791 for (FX_DWORD i = 0; i < pDiffs->GetCount(); i ++) { |
792 CPDF_Object* pElement = pDiffs->GetElementValue(i); | 792 CPDF_Object* pElement = pDiffs->GetElementValue(i); |
793 if (pElement == NULL) { | 793 if (pElement == NULL) { |
794 continue; | 794 continue; |
795 } | 795 } |
796 if (pElement->GetType() == PDFOBJ_NAME) { | 796 if (pElement->GetType() == PDFOBJ_NAME) { |
797 if (cur_code < 256) { | 797 if (cur_code < 256) { |
798 pCharNames[cur_code] = ((CPDF_Name*)pElement)->GetString(); | 798 pCharNames[cur_code] = ((CPDF_Name*)pElement)->GetString(); |
799 } | 799 } |
(...skipping 21 matching lines...) Expand all Loading... |
821 { | 821 { |
822 FXSYS_memset8(m_CharBBox, 0xff, sizeof m_CharBBox); | 822 FXSYS_memset8(m_CharBBox, 0xff, sizeof m_CharBBox); |
823 FXSYS_memset8(m_CharWidth, 0xff, sizeof m_CharWidth); | 823 FXSYS_memset8(m_CharWidth, 0xff, sizeof m_CharWidth); |
824 FXSYS_memset8(m_GlyphIndex, 0xff, sizeof m_GlyphIndex); | 824 FXSYS_memset8(m_GlyphIndex, 0xff, sizeof m_GlyphIndex); |
825 FXSYS_memset8(m_ExtGID, 0xff, sizeof m_ExtGID); | 825 FXSYS_memset8(m_ExtGID, 0xff, sizeof m_ExtGID); |
826 m_pCharNames = NULL; | 826 m_pCharNames = NULL; |
827 m_BaseEncoding = PDFFONT_ENCODING_BUILTIN; | 827 m_BaseEncoding = PDFFONT_ENCODING_BUILTIN; |
828 } | 828 } |
829 CPDF_SimpleFont::~CPDF_SimpleFont() | 829 CPDF_SimpleFont::~CPDF_SimpleFont() |
830 { | 830 { |
831 if (m_pCharNames) { | 831 delete[] m_pCharNames; |
832 FX_DELETE_VECTOR(m_pCharNames, CFX_ByteString, 256); | |
833 } | |
834 } | 832 } |
835 int CPDF_SimpleFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph) | 833 int CPDF_SimpleFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL *pVertGlyph) |
836 { | 834 { |
837 if (pVertGlyph) { | 835 if (pVertGlyph) { |
838 *pVertGlyph = FALSE; | 836 *pVertGlyph = FALSE; |
839 } | 837 } |
840 if (charcode > 0xff) { | 838 if (charcode > 0xff) { |
841 return -1; | 839 return -1; |
842 } | 840 } |
843 int index = m_GlyphIndex[(FX_BYTE)charcode]; | 841 int index = m_GlyphIndex[(FX_BYTE)charcode]; |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
964 if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') { | 962 if (m_BaseFont.GetLength() > 8 && m_BaseFont[7] == '+') { |
965 m_BaseFont = m_BaseFont.Mid(8); | 963 m_BaseFont = m_BaseFont.Mid(8); |
966 } | 964 } |
967 } | 965 } |
968 if (!(m_Flags & PDFFONT_SYMBOLIC)) { | 966 if (!(m_Flags & PDFFONT_SYMBOLIC)) { |
969 m_BaseEncoding = PDFFONT_ENCODING_STANDARD; | 967 m_BaseEncoding = PDFFONT_ENCODING_STANDARD; |
970 } | 968 } |
971 CPDF_Object* pEncoding = m_pFontDict->GetElementValue(FX_BSTRC("Encoding")); | 969 CPDF_Object* pEncoding = m_pFontDict->GetElementValue(FX_BSTRC("Encoding")); |
972 LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, m_pFontFile != NULL
, m_Font.IsTTFont()); | 970 LoadPDFEncoding(pEncoding, m_BaseEncoding, m_pCharNames, m_pFontFile != NULL
, m_Font.IsTTFont()); |
973 LoadGlyphMap(); | 971 LoadGlyphMap(); |
974 if (m_pCharNames) { | 972 delete[] m_pCharNames; |
975 FX_DELETE_VECTOR(m_pCharNames, CFX_ByteString, 256); | 973 m_pCharNames = NULL; |
976 m_pCharNames = NULL; | |
977 } | |
978 if (m_Font.m_Face == NULL) { | 974 if (m_Font.m_Face == NULL) { |
979 return TRUE; | 975 return TRUE; |
980 } | 976 } |
981 if (m_Flags & PDFFONT_ALLCAP) { | 977 if (m_Flags & PDFFONT_ALLCAP) { |
982 unsigned char lowercases[] = {'a', 'z', 0xe0, 0xf6, 0xf8, 0xfd}; | 978 unsigned char lowercases[] = {'a', 'z', 0xe0, 0xf6, 0xf8, 0xfd}; |
983 for (size_t range = 0; range < sizeof lowercases / 2; range ++) { | 979 for (size_t range = 0; range < sizeof lowercases / 2; range ++) { |
984 for (int i = lowercases[range * 2]; i <= lowercases[range * 2 + 1];
i ++) { | 980 for (int i = lowercases[range * 2]; i <= lowercases[range * 2 + 1];
i ++) { |
985 if (m_GlyphIndex[i] != 0xffff && m_pFontFile != NULL) { | 981 if (m_GlyphIndex[i] != 0xffff && m_pFontFile != NULL) { |
986 continue; | 982 continue; |
987 } | 983 } |
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1746 } | 1742 } |
1747 CPDF_Type3Char::~CPDF_Type3Char() | 1743 CPDF_Type3Char::~CPDF_Type3Char() |
1748 { | 1744 { |
1749 if (m_pForm) { | 1745 if (m_pForm) { |
1750 delete m_pForm; | 1746 delete m_pForm; |
1751 } | 1747 } |
1752 if (m_pBitmap) { | 1748 if (m_pBitmap) { |
1753 delete m_pBitmap; | 1749 delete m_pBitmap; |
1754 } | 1750 } |
1755 } | 1751 } |
OLD | NEW |