OLD | NEW |
| (Empty) |
1 // Copyright 2014 PDFium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | |
6 | |
7 #ifndef FPDFSDK_INCLUDE_PDFWINDOW_PWL_FONTMAP_H_ | |
8 #define FPDFSDK_INCLUDE_PDFWINDOW_PWL_FONTMAP_H_ | |
9 | |
10 #include "fpdfsdk/include/fxedit/fx_edit.h" | |
11 #include "public/fpdf_sysfontinfo.h" | |
12 | |
13 class CPDF_Document; | |
14 class IFX_SystemHandler; | |
15 | |
16 struct CPWL_FontMap_Data { | |
17 CPDF_Font* pFont; | |
18 int32_t nCharset; | |
19 CFX_ByteString sFontName; | |
20 }; | |
21 | |
22 struct CPWL_FontMap_Native { | |
23 int32_t nCharset; | |
24 CFX_ByteString sFontName; | |
25 }; | |
26 | |
27 #ifndef ANSI_CHARSET | |
28 | |
29 #define ANSI_CHARSET 0 | |
30 #define DEFAULT_CHARSET 1 | |
31 #define SYMBOL_CHARSET 2 | |
32 #define SHIFTJIS_CHARSET 128 | |
33 #define HANGEUL_CHARSET 129 | |
34 #define HANGUL_CHARSET 129 | |
35 #define GB2312_CHARSET 134 | |
36 #define CHINESEBIG5_CHARSET 136 | |
37 #define OEM_CHARSET 255 | |
38 #define JOHAB_CHARSET 130 | |
39 #define HEBREW_CHARSET 177 | |
40 #define ARABIC_CHARSET 178 | |
41 #define GREEK_CHARSET 161 | |
42 #define TURKISH_CHARSET 162 | |
43 #define VIETNAMESE_CHARSET 163 | |
44 #define THAI_CHARSET 222 | |
45 #define EASTEUROPE_CHARSET 238 | |
46 #define RUSSIAN_CHARSET 204 | |
47 #define BALTIC_CHARSET 186 | |
48 | |
49 #endif | |
50 | |
51 class CPWL_FontMap : public IFX_Edit_FontMap { | |
52 public: | |
53 CPWL_FontMap(IFX_SystemHandler* pSystemHandler); | |
54 ~CPWL_FontMap() override; | |
55 | |
56 // IFX_Edit_FontMap | |
57 CPDF_Font* GetPDFFont(int32_t nFontIndex) override; | |
58 CFX_ByteString GetPDFFontAlias(int32_t nFontIndex) override; | |
59 int32_t GetWordFontIndex(uint16_t word, | |
60 int32_t nCharset, | |
61 int32_t nFontIndex) override; | |
62 int32_t CharCodeFromUnicode(int32_t nFontIndex, uint16_t word) override; | |
63 int32_t CharSetFromUnicode(uint16_t word, int32_t nOldCharset) override; | |
64 | |
65 void SetSystemHandler(IFX_SystemHandler* pSystemHandler); | |
66 int32_t GetFontMapCount() const; | |
67 const CPWL_FontMap_Data* GetFontMapData(int32_t nIndex) const; | |
68 static int32_t GetNativeCharset(); | |
69 CFX_ByteString GetNativeFontName(int32_t nCharset); | |
70 | |
71 static CFX_ByteString GetDefaultFontByCharset(int32_t nCharset); | |
72 | |
73 CPDF_Font* AddFontToDocument(CPDF_Document* pDoc, | |
74 CFX_ByteString& sFontName, | |
75 uint8_t nCharset); | |
76 static FX_BOOL IsStandardFont(const CFX_ByteString& sFontName); | |
77 CPDF_Font* AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sFontName); | |
78 CPDF_Font* AddSystemFont(CPDF_Document* pDoc, | |
79 CFX_ByteString& sFontName, | |
80 uint8_t nCharset); | |
81 | |
82 protected: | |
83 virtual void Initialize(); | |
84 virtual CPDF_Document* GetDocument(); | |
85 virtual CPDF_Font* FindFontSameCharset(CFX_ByteString& sFontAlias, | |
86 int32_t nCharset); | |
87 virtual void AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias); | |
88 | |
89 FX_BOOL KnowWord(int32_t nFontIndex, uint16_t word); | |
90 | |
91 void Empty(); | |
92 int32_t GetFontIndex(const CFX_ByteString& sFontName, | |
93 int32_t nCharset, | |
94 FX_BOOL bFind); | |
95 int32_t GetPWLFontIndex(uint16_t word, int32_t nCharset); | |
96 int32_t AddFontData(CPDF_Font* pFont, | |
97 const CFX_ByteString& sFontAlias, | |
98 int32_t nCharset = DEFAULT_CHARSET); | |
99 | |
100 CFX_ByteString EncodeFontAlias(const CFX_ByteString& sFontName, | |
101 int32_t nCharset); | |
102 CFX_ByteString EncodeFontAlias(const CFX_ByteString& sFontName); | |
103 | |
104 private: | |
105 CFX_ByteString GetFontName(int32_t nFontIndex); | |
106 int32_t FindFont(const CFX_ByteString& sFontName, | |
107 int32_t nCharset = DEFAULT_CHARSET); | |
108 | |
109 CFX_ByteString GetNativeFont(int32_t nCharset); | |
110 | |
111 public: | |
112 using CharsetFontMap = FPDF_CharsetFontMap; | |
113 static const CharsetFontMap defaultTTFMap[]; | |
114 | |
115 protected: | |
116 CFX_ArrayTemplate<CPWL_FontMap_Data*> m_aData; | |
117 CFX_ArrayTemplate<CPWL_FontMap_Native*> m_aNativeFont; | |
118 | |
119 private: | |
120 CPDF_Document* m_pPDFDoc; | |
121 IFX_SystemHandler* m_pSystemHandler; | |
122 }; | |
123 | |
124 class CPWL_DocFontMap : public CPWL_FontMap { | |
125 public: | |
126 CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, | |
127 CPDF_Document* pAttachedDoc); | |
128 ~CPWL_DocFontMap() override; | |
129 | |
130 private: | |
131 // CPWL_FontMap: | |
132 CPDF_Document* GetDocument() override; | |
133 | |
134 CPDF_Document* m_pAttachedDoc; | |
135 }; | |
136 | |
137 #endif // FPDFSDK_INCLUDE_PDFWINDOW_PWL_FONTMAP_H_ | |
OLD | NEW |