OLD | NEW |
1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/fpdfapi/font/cpdf_fontencoding.h" | 7 #include "core/fpdfapi/font/cpdf_fontencoding.h" |
8 | 8 |
| 9 #include <utility> |
| 10 |
9 #include "core/fpdfapi/parser/cpdf_array.h" | 11 #include "core/fpdfapi/parser/cpdf_array.h" |
10 #include "core/fpdfapi/parser/cpdf_dictionary.h" | 12 #include "core/fpdfapi/parser/cpdf_dictionary.h" |
11 #include "core/fpdfapi/parser/cpdf_name.h" | 13 #include "core/fpdfapi/parser/cpdf_name.h" |
12 #include "core/fpdfapi/parser/cpdf_number.h" | 14 #include "core/fpdfapi/parser/cpdf_number.h" |
13 #include "core/fpdfapi/parser/fpdf_parser_decode.h" | 15 #include "core/fpdfapi/parser/fpdf_parser_decode.h" |
14 #include "core/fxge/fx_freetype.h" | 16 #include "core/fxge/fx_freetype.h" |
15 | 17 |
16 namespace { | 18 namespace { |
17 | 19 |
18 const uint16_t MSSymbolEncoding[256] = { | 20 const uint16_t MSSymbolEncoding[256] = { |
(...skipping 1675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 if (predefined == PDFFONT_ENCODING_MACROMAN) { | 1696 if (predefined == PDFFONT_ENCODING_MACROMAN) { |
1695 return new CPDF_Name(pPool, "MacRomanEncoding"); | 1697 return new CPDF_Name(pPool, "MacRomanEncoding"); |
1696 } | 1698 } |
1697 if (predefined == PDFFONT_ENCODING_MACEXPERT) { | 1699 if (predefined == PDFFONT_ENCODING_MACEXPERT) { |
1698 return new CPDF_Name(pPool, "MacExpertEncoding"); | 1700 return new CPDF_Name(pPool, "MacExpertEncoding"); |
1699 } | 1701 } |
1700 return nullptr; | 1702 return nullptr; |
1701 } | 1703 } |
1702 const uint16_t* pStandard = | 1704 const uint16_t* pStandard = |
1703 PDF_UnicodesForPredefinedCharSet(PDFFONT_ENCODING_WINANSI); | 1705 PDF_UnicodesForPredefinedCharSet(PDFFONT_ENCODING_WINANSI); |
1704 CPDF_Array* pDiff = new CPDF_Array; | 1706 auto pDiff = pdfium::MakeUnique<CPDF_Array>(); |
1705 for (int i = 0; i < 256; i++) { | 1707 for (int i = 0; i < 256; i++) { |
1706 if (pStandard[i] == m_Unicodes[i]) | 1708 if (pStandard[i] == m_Unicodes[i]) |
1707 continue; | 1709 continue; |
1708 | 1710 |
1709 pDiff->AddNew<CPDF_Number>(i); | 1711 pDiff->AddNew<CPDF_Number>(i); |
1710 pDiff->AddNew<CPDF_Name>(PDF_AdobeNameFromUnicode(m_Unicodes[i])); | 1712 pDiff->AddNew<CPDF_Name>(PDF_AdobeNameFromUnicode(m_Unicodes[i])); |
1711 } | 1713 } |
1712 | 1714 |
1713 CPDF_Dictionary* pDict = new CPDF_Dictionary(pPool); | 1715 CPDF_Dictionary* pDict = new CPDF_Dictionary(pPool); |
1714 pDict->SetNameFor("BaseEncoding", "WinAnsiEncoding"); | 1716 pDict->SetNewFor<CPDF_Name>("BaseEncoding", "WinAnsiEncoding"); |
1715 pDict->SetFor("Differences", pDiff); | 1717 pDict->SetFor("Differences", std::move(pDiff)); |
1716 return pDict; | 1718 return pDict; |
1717 } | 1719 } |
1718 | 1720 |
1719 uint32_t FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode) { | 1721 uint32_t FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode) { |
1720 switch (encoding) { | 1722 switch (encoding) { |
1721 case FXFT_ENCODING_UNICODE: | 1723 case FXFT_ENCODING_UNICODE: |
1722 return unicode; | 1724 return unicode; |
1723 case FXFT_ENCODING_ADOBE_STANDARD: | 1725 case FXFT_ENCODING_ADOBE_STANDARD: |
1724 return PDF_FindCode(StandardEncoding, unicode); | 1726 return PDF_FindCode(StandardEncoding, unicode); |
1725 case FXFT_ENCODING_ADOBE_EXPERT: | 1727 case FXFT_ENCODING_ADOBE_EXPERT: |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1809 return MacExpertEncoding[(uint8_t)charcode]; | 1811 return MacExpertEncoding[(uint8_t)charcode]; |
1810 case FXFT_ENCODING_ADOBE_LATIN_1: | 1812 case FXFT_ENCODING_ADOBE_LATIN_1: |
1811 return AdobeWinAnsiEncoding[(uint8_t)charcode]; | 1813 return AdobeWinAnsiEncoding[(uint8_t)charcode]; |
1812 case FXFT_ENCODING_APPLE_ROMAN: | 1814 case FXFT_ENCODING_APPLE_ROMAN: |
1813 return MacRomanEncoding[(uint8_t)charcode]; | 1815 return MacRomanEncoding[(uint8_t)charcode]; |
1814 case PDFFONT_ENCODING_PDFDOC: | 1816 case PDFFONT_ENCODING_PDFDOC: |
1815 return PDFDocEncoding[(uint8_t)charcode]; | 1817 return PDFDocEncoding[(uint8_t)charcode]; |
1816 } | 1818 } |
1817 return 0; | 1819 return 0; |
1818 } | 1820 } |
OLD | NEW |