| 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 #ifndef CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 7 #ifndef CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| 8 #define CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 8 #define CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| 9 | 9 |
| 10 #include <map> | 10 #include <map> |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 | 64 |
| 65 // Takes ownership of |pFont|. | 65 // Takes ownership of |pFont|. |
| 66 void Set(CPDF_Document* key, int index, CPDF_Font* pFont); | 66 void Set(CPDF_Document* key, int index, CPDF_Font* pFont); |
| 67 | 67 |
| 68 CPDF_CMapManager m_CMapManager; | 68 CPDF_CMapManager m_CMapManager; |
| 69 struct { | 69 struct { |
| 70 const struct FXCMAP_CMap* m_pMapList; | 70 const struct FXCMAP_CMap* m_pMapList; |
| 71 int m_Count; | 71 int m_Count; |
| 72 } m_EmbeddedCharsets[CIDSET_NUM_SETS]; | 72 } m_EmbeddedCharsets[CIDSET_NUM_SETS]; |
| 73 struct { | 73 struct { |
| 74 const FX_WORD* m_pMap; | 74 const uint16_t* m_pMap; |
| 75 int m_Count; | 75 int m_Count; |
| 76 } m_EmbeddedToUnicodes[CIDSET_NUM_SETS]; | 76 } m_EmbeddedToUnicodes[CIDSET_NUM_SETS]; |
| 77 | 77 |
| 78 private: | 78 private: |
| 79 std::map<CPDF_Document*, std::unique_ptr<CFX_StockFontArray>> m_StockMap; | 79 std::map<CPDF_Document*, std::unique_ptr<CFX_StockFontArray>> m_StockMap; |
| 80 }; | 80 }; |
| 81 | 81 |
| 82 struct CMap_CodeRange { | 82 struct CMap_CodeRange { |
| 83 int m_CharSize; | 83 int m_CharSize; |
| 84 uint8_t m_Lower[4]; | 84 uint8_t m_Lower[4]; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 121 class CPDF_CMap { | 121 class CPDF_CMap { |
| 122 public: | 122 public: |
| 123 CPDF_CMap(); | 123 CPDF_CMap(); |
| 124 FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, | 124 FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, |
| 125 const FX_CHAR* name, | 125 const FX_CHAR* name, |
| 126 FX_BOOL bPromptCJK); | 126 FX_BOOL bPromptCJK); |
| 127 FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); | 127 FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); |
| 128 void Release(); | 128 void Release(); |
| 129 FX_BOOL IsLoaded() const { return m_bLoaded; } | 129 FX_BOOL IsLoaded() const { return m_bLoaded; } |
| 130 FX_BOOL IsVertWriting() const { return m_bVertical; } | 130 FX_BOOL IsVertWriting() const { return m_bVertical; } |
| 131 FX_WORD CIDFromCharCode(FX_DWORD charcode) const; | 131 uint16_t CIDFromCharCode(FX_DWORD charcode) const; |
| 132 FX_DWORD CharCodeFromCID(FX_WORD CID) const; | 132 FX_DWORD CharCodeFromCID(uint16_t CID) const; |
| 133 int GetCharSize(FX_DWORD charcode) const; | 133 int GetCharSize(FX_DWORD charcode) const; |
| 134 FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; | 134 FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; |
| 135 int CountChar(const FX_CHAR* pString, int size) const; | 135 int CountChar(const FX_CHAR* pString, int size) const; |
| 136 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; | 136 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; |
| 137 typedef enum { | 137 typedef enum { |
| 138 OneByte, | 138 OneByte, |
| 139 TwoBytes, | 139 TwoBytes, |
| 140 MixedTwoBytes, | 140 MixedTwoBytes, |
| 141 MixedFourBytes | 141 MixedFourBytes |
| 142 } CodingScheme; | 142 } CodingScheme; |
| 143 | 143 |
| 144 protected: | 144 protected: |
| 145 ~CPDF_CMap(); | 145 ~CPDF_CMap(); |
| 146 friend class CPDF_CMapParser; | 146 friend class CPDF_CMapParser; |
| 147 friend class CPDF_CMapManager; | 147 friend class CPDF_CMapManager; |
| 148 friend class CPDF_CIDFont; | 148 friend class CPDF_CIDFont; |
| 149 | 149 |
| 150 protected: | 150 protected: |
| 151 CFX_ByteString m_PredefinedCMap; | 151 CFX_ByteString m_PredefinedCMap; |
| 152 FX_BOOL m_bVertical; | 152 FX_BOOL m_bVertical; |
| 153 CIDSet m_Charset; | 153 CIDSet m_Charset; |
| 154 int m_Coding; | 154 int m_Coding; |
| 155 CodingScheme m_CodingScheme; | 155 CodingScheme m_CodingScheme; |
| 156 int m_nCodeRanges; | 156 int m_nCodeRanges; |
| 157 uint8_t* m_pLeadingBytes; | 157 uint8_t* m_pLeadingBytes; |
| 158 FX_WORD* m_pMapping; | 158 uint16_t* m_pMapping; |
| 159 uint8_t* m_pAddMapping; | 159 uint8_t* m_pAddMapping; |
| 160 FX_BOOL m_bLoaded; | 160 FX_BOOL m_bLoaded; |
| 161 const FXCMAP_CMap* m_pEmbedMap; | 161 const FXCMAP_CMap* m_pEmbedMap; |
| 162 CPDF_CMap* m_pUseMap; | 162 CPDF_CMap* m_pUseMap; |
| 163 }; | 163 }; |
| 164 | 164 |
| 165 class CPDF_CID2UnicodeMap { | 165 class CPDF_CID2UnicodeMap { |
| 166 public: | 166 public: |
| 167 CPDF_CID2UnicodeMap(); | 167 CPDF_CID2UnicodeMap(); |
| 168 ~CPDF_CID2UnicodeMap(); | 168 ~CPDF_CID2UnicodeMap(); |
| 169 FX_BOOL Initialize(); | 169 FX_BOOL Initialize(); |
| 170 FX_BOOL IsLoaded(); | 170 FX_BOOL IsLoaded(); |
| 171 void Load(CPDF_CMapManager* pMgr, CIDSet charset, FX_BOOL bPromptCJK); | 171 void Load(CPDF_CMapManager* pMgr, CIDSet charset, FX_BOOL bPromptCJK); |
| 172 FX_WCHAR UnicodeFromCID(FX_WORD CID); | 172 FX_WCHAR UnicodeFromCID(uint16_t CID); |
| 173 | 173 |
| 174 protected: | 174 protected: |
| 175 CIDSet m_Charset; | 175 CIDSet m_Charset; |
| 176 const FX_WORD* m_pEmbeddedMap; | 176 const uint16_t* m_pEmbeddedMap; |
| 177 FX_DWORD m_EmbeddedCount; | 177 FX_DWORD m_EmbeddedCount; |
| 178 }; | 178 }; |
| 179 | 179 |
| 180 class CPDF_ToUnicodeMap { | 180 class CPDF_ToUnicodeMap { |
| 181 public: | 181 public: |
| 182 void Load(CPDF_Stream* pStream); | 182 void Load(CPDF_Stream* pStream); |
| 183 CFX_WideString Lookup(FX_DWORD charcode); | 183 CFX_WideString Lookup(FX_DWORD charcode); |
| 184 FX_DWORD ReverseLookup(FX_WCHAR unicode); | 184 FX_DWORD ReverseLookup(FX_WCHAR unicode); |
| 185 | 185 |
| 186 protected: | 186 protected: |
| 187 std::map<FX_DWORD, FX_DWORD> m_Map; | 187 std::map<FX_DWORD, FX_DWORD> m_Map; |
| 188 CPDF_CID2UnicodeMap* m_pBaseMap; | 188 CPDF_CID2UnicodeMap* m_pBaseMap; |
| 189 CFX_WideTextBuf m_MultiCharBuf; | 189 CFX_WideTextBuf m_MultiCharBuf; |
| 190 | 190 |
| 191 private: | 191 private: |
| 192 friend class fpdf_font_StringToCode_Test; | 192 friend class fpdf_font_StringToCode_Test; |
| 193 friend class fpdf_font_StringToWideString_Test; | 193 friend class fpdf_font_StringToWideString_Test; |
| 194 | 194 |
| 195 static FX_DWORD StringToCode(const CFX_ByteStringC& str); | 195 static FX_DWORD StringToCode(const CFX_ByteStringC& str); |
| 196 static CFX_WideString StringToWideString(const CFX_ByteStringC& str); | 196 static CFX_WideString StringToWideString(const CFX_ByteStringC& str); |
| 197 }; | 197 }; |
| 198 | 198 |
| 199 void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, | 199 void FPDFAPI_LoadCID2UnicodeMap(CIDSet charset, |
| 200 const FX_WORD*& pMap, | 200 const uint16_t*& pMap, |
| 201 FX_DWORD& count); | 201 FX_DWORD& count); |
| 202 | 202 |
| 203 #endif // CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 203 #endif // CORE_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
| OLD | NEW |