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 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 6 #ifndef CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
7 #define CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 7 #define CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
8 | 8 |
9 typedef void* FXFT_Library; | 9 typedef void* FXFT_Library; |
10 class CPDF_CMapManager | 10 class CPDF_CMapManager { |
11 { | 11 public: |
12 public: | 12 CPDF_CMapManager(); |
13 CPDF_CMapManager(); | 13 ~CPDF_CMapManager(); |
14 ~CPDF_CMapManager(); | 14 void* GetPackage(FX_BOOL bPrompt); |
15 void*» » » » GetPackage(FX_BOOL bPrompt); | 15 CPDF_CMap* GetPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPrompt); |
16 CPDF_CMap*» » » » GetPredefinedCMap(const CFX_ByteString&
name, FX_BOOL bPrompt); | 16 CPDF_CID2UnicodeMap* GetCID2UnicodeMap(int charset, FX_BOOL bPrompt); |
17 CPDF_CID2UnicodeMap*» GetCID2UnicodeMap(int charset, FX_BOOL bPrompt); | 17 void ReloadAll(); |
18 void» » » » » ReloadAll(); | 18 |
19 private: | 19 private: |
20 CPDF_CMap*» » » » LoadPredefinedCMap(const CFX_ByteString&
name, FX_BOOL bPrompt); | 20 CPDF_CMap* LoadPredefinedCMap(const CFX_ByteString& name, FX_BOOL bPrompt); |
21 CPDF_CID2UnicodeMap*» LoadCID2UnicodeMap(int charset, FX_BOOL bPrompt)
; | 21 CPDF_CID2UnicodeMap* LoadCID2UnicodeMap(int charset, FX_BOOL bPrompt); |
22 void» » » » » DropAll(FX_BOOL bReload); | 22 void DropAll(FX_BOOL bReload); |
23 FX_BOOL» » » » » m_bPrompted; | 23 FX_BOOL m_bPrompted; |
24 CFX_MapByteStringToPtr» m_CMaps; | 24 CFX_MapByteStringToPtr m_CMaps; |
25 CPDF_CID2UnicodeMap*» m_CID2UnicodeMaps[6]; | 25 CPDF_CID2UnicodeMap* m_CID2UnicodeMaps[6]; |
26 }; | 26 }; |
27 class CPDF_FontGlobals | 27 class CPDF_FontGlobals { |
28 { | 28 public: |
29 public: | 29 CPDF_FontGlobals(); |
30 CPDF_FontGlobals(); | 30 ~CPDF_FontGlobals(); |
31 ~CPDF_FontGlobals(); | 31 void ClearAll(); |
32 void» » » » ClearAll(); | 32 void Clear(void* key); |
33 void» » » » Clear(void* key); | 33 CPDF_Font* Find(void* key, int index); |
34 CPDF_Font*» » » Find(void* key, int index); | 34 void Set(void* key, int index, CPDF_Font* pFont); |
35 void» » » » Set(void* key, int index, CPDF_Font* pFo
nt); | 35 CPDF_CMapManager m_CMapManager; |
36 CPDF_CMapManager» m_CMapManager; | 36 struct { |
37 struct { | 37 const struct FXCMAP_CMap* m_pMapList; |
38 const struct FXCMAP_CMap*» m_pMapList; | 38 int m_Count; |
39 int» » » » m_Count; | 39 } m_EmbeddedCharsets[NUMBER_OF_CIDSETS]; |
40 } m_EmbeddedCharsets[NUMBER_OF_CIDSETS]; | 40 struct { |
41 struct { | 41 const FX_WORD* m_pMap; |
42 const FX_WORD*» m_pMap; | 42 int m_Count; |
43 int» » » » m_Count; | 43 } m_EmbeddedToUnicodes[NUMBER_OF_CIDSETS]; |
44 } m_EmbeddedToUnicodes[NUMBER_OF_CIDSETS]; | 44 |
45 private: | 45 private: |
46 CFX_MapPtrToPtr» » m_pStockMap; | 46 CFX_MapPtrToPtr m_pStockMap; |
47 uint8_t*» » » m_pContrastRamps; | 47 uint8_t* m_pContrastRamps; |
48 }; | 48 }; |
49 struct _CMap_CodeRange { | 49 struct _CMap_CodeRange { |
50 int»» » m_CharSize; | 50 int m_CharSize; |
51 uint8_t» » m_Lower[4]; | 51 uint8_t m_Lower[4]; |
52 uint8_t» » m_Upper[4]; | 52 uint8_t m_Upper[4]; |
53 }; | 53 }; |
54 class CPDF_CMapParser | 54 class CPDF_CMapParser { |
55 { | 55 public: |
56 public: | 56 CPDF_CMapParser(); |
57 CPDF_CMapParser(); | 57 ~CPDF_CMapParser() {} |
58 ~CPDF_CMapParser() {} | 58 FX_BOOL Initialize(CPDF_CMap*); |
59 FX_BOOL» Initialize(CPDF_CMap*); | 59 void ParseWord(const CFX_ByteStringC& str); |
60 void» ParseWord(const CFX_ByteStringC& str); | 60 CFX_BinaryBuf m_AddMaps; |
61 CFX_BinaryBuf» m_AddMaps; | 61 |
62 private: | 62 private: |
63 CPDF_CMap*» m_pCMap; | 63 CPDF_CMap* m_pCMap; |
64 int»» » » m_Status; | 64 int m_Status; |
65 int»» » » m_CodeSeq; | 65 int m_CodeSeq; |
66 FX_DWORD» » m_CodePoints[4]; | 66 FX_DWORD m_CodePoints[4]; |
67 CFX_ArrayTemplate<_CMap_CodeRange>» m_CodeRanges; | 67 CFX_ArrayTemplate<_CMap_CodeRange> m_CodeRanges; |
68 CFX_ByteString» m_Registry, m_Ordering, m_Supplement; | 68 CFX_ByteString m_Registry, m_Ordering, m_Supplement; |
69 CFX_ByteString» m_LastWord; | 69 CFX_ByteString m_LastWord; |
70 }; | 70 }; |
71 #define CIDCODING_UNKNOWN» 0 | 71 #define CIDCODING_UNKNOWN 0 |
72 #define CIDCODING_GB» » 1 | 72 #define CIDCODING_GB 1 |
73 #define CIDCODING_BIG5» » 2 | 73 #define CIDCODING_BIG5 2 |
74 #define CIDCODING_JIS» » 3 | 74 #define CIDCODING_JIS 3 |
75 #define CIDCODING_KOREA»» 4 | 75 #define CIDCODING_KOREA 4 |
76 #define CIDCODING_UCS2» » 5 | 76 #define CIDCODING_UCS2 5 |
77 #define CIDCODING_CID» » 6 | 77 #define CIDCODING_CID 6 |
78 #define CIDCODING_UTF16»» 7 | 78 #define CIDCODING_UTF16 7 |
79 class CPDF_CMap | 79 class CPDF_CMap { |
80 { | 80 public: |
81 public: | 81 CPDF_CMap(); |
82 CPDF_CMap(); | 82 FX_BOOL LoadPredefined(CPDF_CMapManager* pMgr, |
83 FX_BOOL» » » » » LoadPredefined(CPDF_CMapManager*
pMgr, const FX_CHAR* name, FX_BOOL bPromptCJK); | 83 const FX_CHAR* name, |
84 FX_BOOL» » » » » LoadEmbedded(const uint8_t* pDat
a, FX_DWORD dwSize); | 84 FX_BOOL bPromptCJK); |
85 void» » » » » Release(); | 85 FX_BOOL LoadEmbedded(const uint8_t* pData, FX_DWORD dwSize); |
86 FX_BOOL» » » » » IsLoaded() const | 86 void Release(); |
87 { | 87 FX_BOOL IsLoaded() const { return m_bLoaded; } |
88 return m_bLoaded; | 88 int GetCharset() { return m_Charset; } |
89 } | 89 FX_BOOL IsVertWriting() const { return m_bVertical; } |
90 int»» » » » » GetCharset() | 90 FX_WORD CIDFromCharCode(FX_DWORD charcode) const; |
91 { | 91 FX_DWORD CharCodeFromCID(FX_WORD CID) const; |
92 return m_Charset; | 92 int GetCharSize(FX_DWORD charcode) const; |
93 } | 93 FX_DWORD GetNextChar(const FX_CHAR* pString, int nStrLen, int& offset) const; |
94 FX_BOOL» » » » » IsVertWriting() const | 94 int CountChar(const FX_CHAR* pString, int size) const; |
95 { | 95 int AppendChar(FX_CHAR* str, FX_DWORD charcode) const; |
96 return m_bVertical; | 96 typedef enum { |
97 } | 97 OneByte, |
98 FX_WORD» » » » » CIDFromCharCode(FX_DWORD charcod
e) const; | 98 TwoBytes, |
99 FX_DWORD» » » » CharCodeFromCID(FX_WORD CID) const; | 99 MixedTwoBytes, |
100 int»» » » » » GetCharSize(FX_DWORD charcode) c
onst; | 100 MixedFourBytes |
101 FX_DWORD» » » » GetNextChar(const FX_CHAR* pString, int
nStrLen, int& offset) const; | 101 } CodingScheme; |
102 int»» » » » » CountChar(const FX_CHAR* pString
, int size) const; | 102 |
103 int»» » » » » AppendChar(FX_CHAR* str, FX_DWOR
D charcode) const; | 103 protected: |
104 typedef enum {OneByte, TwoBytes, MixedTwoBytes, MixedFourBytes} CodingScheme
; | 104 ~CPDF_CMap(); |
105 protected: | 105 friend class CPDF_CMapParser; |
106 ~CPDF_CMap(); | 106 friend class CPDF_CMapManager; |
107 friend class» » » CPDF_CMapParser; | 107 friend class CPDF_CIDFont; |
108 friend class» » » CPDF_CMapManager; | 108 |
109 friend class» » » CPDF_CIDFont; | 109 protected: |
110 protected: | 110 CFX_ByteString m_PredefinedCMap; |
111 CFX_ByteString» » » m_PredefinedCMap; | 111 FX_BOOL m_bVertical; |
112 FX_BOOL» » » » » m_bVertical; | 112 int m_Charset, m_Coding; |
113 int»» » » » » m_Charset, m_Coding; | 113 CodingScheme m_CodingScheme; |
114 CodingScheme» » » m_CodingScheme; | 114 int m_nCodeRanges; |
115 int»» » » » » m_nCodeRanges; | 115 uint8_t* m_pLeadingBytes; |
116 uint8_t*» » » » m_pLeadingBytes; | 116 FX_WORD* m_pMapping; |
117 FX_WORD*» » » » m_pMapping; | 117 uint8_t* m_pAddMapping; |
118 uint8_t*» » » » m_pAddMapping; | 118 FX_BOOL m_bLoaded; |
119 FX_BOOL» » » » » m_bLoaded; | 119 const FXCMAP_CMap* m_pEmbedMap; |
120 const FXCMAP_CMap*» » m_pEmbedMap; | 120 CPDF_CMap* m_pUseMap; |
121 CPDF_CMap*» » » » m_pUseMap; | |
122 }; | 121 }; |
123 class CPDF_PredefinedCMap | 122 class CPDF_PredefinedCMap { |
124 { | 123 public: |
125 public: | 124 const FX_CHAR* m_pName; |
126 const FX_CHAR*» m_pName; | 125 int m_Charset; |
127 int»» » m_Charset; | 126 int m_Coding; |
128 int»» » m_Coding; | 127 CPDF_CMap::CodingScheme m_CodingScheme; |
129 CPDF_CMap::CodingScheme» m_CodingScheme; | 128 FX_DWORD m_LeadingSegCount; |
130 FX_DWORD» m_LeadingSegCount; | 129 uint8_t m_LeadingSegs[4]; |
131 uint8_t» » m_LeadingSegs[4]; | |
132 }; | 130 }; |
133 typedef struct _FileHeader { | 131 typedef struct _FileHeader { |
134 uint8_t» » btTag[4]; | 132 uint8_t btTag[4]; |
135 uint8_t» » btVersion; | 133 uint8_t btVersion; |
136 uint8_t» » btFormat; | 134 uint8_t btFormat; |
137 uint8_t» » btReserved1[2]; | 135 uint8_t btReserved1[2]; |
138 FX_DWORD» dwStartIndex; | 136 FX_DWORD dwStartIndex; |
139 FX_DWORD» dwEndIndex; | 137 FX_DWORD dwEndIndex; |
140 FX_DWORD» dwDataSize; | 138 FX_DWORD dwDataSize; |
141 FX_DWORD» dwDataOffset; | 139 FX_DWORD dwDataOffset; |
142 FX_DWORD» dwRecordSize; | 140 FX_DWORD dwRecordSize; |
143 } FXMP_FILEHEADER; | 141 } FXMP_FILEHEADER; |
144 class CPDF_CID2UnicodeMap | 142 class CPDF_CID2UnicodeMap { |
145 { | 143 public: |
146 public: | 144 CPDF_CID2UnicodeMap(); |
147 CPDF_CID2UnicodeMap(); | 145 ~CPDF_CID2UnicodeMap(); |
148 ~CPDF_CID2UnicodeMap(); | 146 FX_BOOL Initialize(); |
149 FX_BOOL» » Initialize(); | 147 FX_BOOL IsLoaded(); |
150 FX_BOOL» » IsLoaded(); | 148 void Load(CPDF_CMapManager* pMgr, int charset, FX_BOOL bPromptCJK); |
151 void» » Load(CPDF_CMapManager* pMgr, int charset, FX_BOOL bPromp
tCJK); | 149 FX_WCHAR UnicodeFromCID(FX_WORD CID); |
152 FX_WCHAR» UnicodeFromCID(FX_WORD CID); | 150 |
153 protected: | 151 protected: |
154 int»» » m_Charset; | 152 int m_Charset; |
155 const FX_WORD*» m_pEmbeddedMap; | 153 const FX_WORD* m_pEmbeddedMap; |
156 FX_DWORD» m_EmbeddedCount; | 154 FX_DWORD m_EmbeddedCount; |
157 }; | 155 }; |
158 class CPDF_ToUnicodeMap | 156 class CPDF_ToUnicodeMap { |
159 { | 157 public: |
160 public: | 158 void Load(CPDF_Stream* pStream); |
161 void» » » » » Load(CPDF_Stream* pStream); | 159 CFX_WideString Lookup(FX_DWORD charcode); |
162 CFX_WideString» » » Lookup(FX_DWORD charcode); | 160 FX_DWORD ReverseLookup(FX_WCHAR unicode); |
163 FX_DWORD» » » » ReverseLookup(FX_WCHAR unicode); | 161 |
164 protected: | 162 protected: |
165 CFX_CMapDWordToDWord» m_Map; | 163 CFX_CMapDWordToDWord m_Map; |
166 CPDF_CID2UnicodeMap*» m_pBaseMap; | 164 CPDF_CID2UnicodeMap* m_pBaseMap; |
167 CFX_WideTextBuf» » » m_MultiCharBuf; | 165 CFX_WideTextBuf m_MultiCharBuf; |
168 }; | 166 }; |
169 class CPDF_FontCharMap : public CFX_CharMap | 167 class CPDF_FontCharMap : public CFX_CharMap { |
170 { | 168 public: |
171 public: | 169 CPDF_FontCharMap(CPDF_Font* pFont); |
172 CPDF_FontCharMap(CPDF_Font* pFont); | 170 CPDF_Font* m_pFont; |
173 CPDF_Font*» » m_pFont; | |
174 }; | 171 }; |
175 | 172 |
176 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ | 173 #endif // CORE_SRC_FPDFAPI_FPDF_FONT_FONT_INT_H_ |
OLD | NEW |