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/pdfwindow/PDFWindow.h" | 7 #include "../../include/pdfwindow/PDFWindow.h" |
8 #include "../../include/pdfwindow/PWL_Wnd.h" | 8 #include "../../include/pdfwindow/PWL_Wnd.h" |
9 #include "../../include/pdfwindow/PWL_FontMap.h" | 9 #include "../../include/pdfwindow/PWL_FontMap.h" |
10 | 10 |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
65 { | 65 { |
66 if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) | 66 if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) |
67 { | 67 { |
68 return pData->sFontName; | 68 return pData->sFontName; |
69 } | 69 } |
70 } | 70 } |
71 | 71 |
72 return ""; | 72 return ""; |
73 } | 73 } |
74 | 74 |
75 FX_BOOL CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word) | 75 bool CPWL_FontMap::KnowWord(int32_t nFontIndex, FX_WORD word) |
76 { | 76 { |
77 if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) | 77 if (nFontIndex >=0 && nFontIndex < m_aData.GetSize()) |
78 { | 78 { |
79 if (m_aData.GetAt(nFontIndex)) | 79 if (m_aData.GetAt(nFontIndex)) |
80 { | 80 { |
81 return CharCodeFromUnicode(nFontIndex, word) >= 0; | 81 return CharCodeFromUnicode(nFontIndex, word) >= 0; |
82 } | 82 } |
83 } | 83 } |
84 | 84 |
85 return FALSE; | 85 return false; |
86 } | 86 } |
87 | 87 |
88 int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word, int32_t nCharset, int32_t n
FontIndex) | 88 int32_t CPWL_FontMap::GetWordFontIndex(FX_WORD word, int32_t nCharset, int32_t n
FontIndex) |
89 { | 89 { |
90 if (nFontIndex > 0) | 90 if (nFontIndex > 0) |
91 { | 91 { |
92 if (KnowWord(nFontIndex, word)) | 92 if (KnowWord(nFontIndex, word)) |
93 return nFontIndex; | 93 return nFontIndex; |
94 } | 94 } |
95 else | 95 else |
96 { | 96 { |
97 if (const CPWL_FontMap_Data* pData = GetFontMapData(0)) | 97 if (const CPWL_FontMap_Data* pData = GetFontMapData(0)) |
98 { | 98 { |
99 if (nCharset == DEFAULT_CHARSET || | 99 if (nCharset == DEFAULT_CHARSET || |
100 pData->nCharset == SYMBOL_CHARSET || | 100 pData->nCharset == SYMBOL_CHARSET || |
101 nCharset == pData->nCharset) | 101 nCharset == pData->nCharset) |
102 { | 102 { |
103 if (KnowWord(0, word)) | 103 if (KnowWord(0, word)) |
104 return 0; | 104 return 0; |
105 } | 105 } |
106 } | 106 } |
107 } | 107 } |
108 | 108 |
109 int32_t nNewFontIndex = GetFontIndex(GetNativeFontName(nCharset), nCharset,
TRUE); | 109 int32_t nNewFontIndex = GetFontIndex(GetNativeFontName(nCharset), nCharset,
true); |
110 if (nNewFontIndex >= 0) | 110 if (nNewFontIndex >= 0) |
111 { | 111 { |
112 if (KnowWord(nNewFontIndex, word)) | 112 if (KnowWord(nNewFontIndex, word)) |
113 return nNewFontIndex; | 113 return nNewFontIndex; |
114 } | 114 } |
115 nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, FALSE); | 115 nNewFontIndex = GetFontIndex("Arial Unicode MS", DEFAULT_CHARSET, false); |
116 if (nNewFontIndex >= 0) | 116 if (nNewFontIndex >= 0) |
117 { | 117 { |
118 if (KnowWord(nNewFontIndex, word)) | 118 if (KnowWord(nNewFontIndex, word)) |
119 return nNewFontIndex; | 119 return nNewFontIndex; |
120 } | 120 } |
121 return -1; | 121 return -1; |
122 } | 122 } |
123 | 123 |
124 int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word) | 124 int32_t CPWL_FontMap::CharCodeFromUnicode(int32_t nFontIndex, FX_WORD word) |
125 { | 125 { |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 } | 182 } |
183 } | 183 } |
184 | 184 |
185 void CPWL_FontMap::Initial(const FX_CHAR* fontname) | 185 void CPWL_FontMap::Initial(const FX_CHAR* fontname) |
186 { | 186 { |
187 CFX_ByteString sFontName = fontname; | 187 CFX_ByteString sFontName = fontname; |
188 | 188 |
189 if (sFontName.IsEmpty()) | 189 if (sFontName.IsEmpty()) |
190 sFontName = DEFAULT_FONT_NAME; | 190 sFontName = DEFAULT_FONT_NAME; |
191 | 191 |
192 GetFontIndex(sFontName, ANSI_CHARSET, FALSE); | 192 GetFontIndex(sFontName, ANSI_CHARSET, false); |
193 } | 193 } |
194 | 194 |
195 | 195 |
196 /* | 196 /* |
197 List of currently supported standard fonts: | 197 List of currently supported standard fonts: |
198 Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique | 198 Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique |
199 Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique | 199 Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique |
200 Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic | 200 Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic |
201 Symbol, ZapfDingbats | 201 Symbol, ZapfDingbats |
202 */ | 202 */ |
203 | 203 |
204 const char* g_sDEStandardFontName[] = {"Courier", "Courier-Bold", "Courier-BoldO
blique", "Courier-Oblique", | 204 const char* g_sDEStandardFontName[] = {"Courier", "Courier-Bold", "Courier-BoldO
blique", "Courier-Oblique", |
205 "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique", | 205 "Helvetica", "Helvetica-Bold", "Helvetica-BoldOblique", "Helvetica-Oblique", |
206 "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", | 206 "Times-Roman", "Times-Bold", "Times-Italic", "Times-BoldItalic", |
207 "Symbol", "ZapfDingbats"}; | 207 "Symbol", "ZapfDingbats"}; |
208 | 208 |
209 FX_BOOL CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) | 209 bool CPWL_FontMap::IsStandardFont(const CFX_ByteString& sFontName) |
210 { | 210 { |
211 for (int32_t i=0; i<14; i++) | 211 for (int32_t i=0; i<14; i++) |
212 { | 212 { |
213 if (sFontName == g_sDEStandardFontName[i]) | 213 if (sFontName == g_sDEStandardFontName[i]) |
214 return TRUE; | 214 return true; |
215 } | 215 } |
216 | 216 |
217 return FALSE; | 217 return false; |
218 } | 218 } |
219 | 219 |
220 int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName, int32_t nCharset
) | 220 int32_t CPWL_FontMap::FindFont(const CFX_ByteString& sFontName, int32_t nCharset
) |
221 { | 221 { |
222 for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) | 222 for (int32_t i=0,sz=m_aData.GetSize(); i<sz; i++) |
223 { | 223 { |
224 if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) | 224 if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) |
225 { | 225 { |
226 if (nCharset == DEFAULT_CHARSET || nCharset == pData->nCharset) | 226 if (nCharset == DEFAULT_CHARSET || nCharset == pData->nCharset) |
227 { | 227 { |
228 if (sFontName.IsEmpty() || pData->sFontName == sFontName) | 228 if (sFontName.IsEmpty() || pData->sFontName == sFontName) |
229 return i; | 229 return i; |
230 } | 230 } |
231 } | 231 } |
232 } | 232 } |
233 | 233 |
234 return -1; | 234 return -1; |
235 } | 235 } |
236 | 236 |
237 int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName, int32_t nCha
rset, FX_BOOL bFind) | 237 int32_t CPWL_FontMap::GetFontIndex(const CFX_ByteString& sFontName, int32_t nCha
rset, bool bFind) |
238 { | 238 { |
239 int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCharset
); | 239 int32_t nFontIndex = FindFont(EncodeFontAlias(sFontName, nCharset), nCharset
); |
240 if (nFontIndex >= 0) | 240 if (nFontIndex >= 0) |
241 return nFontIndex; | 241 return nFontIndex; |
242 | 242 |
243 CFX_ByteString sAlias; | 243 CFX_ByteString sAlias; |
244 CPDF_Font* pFont = NULL; | 244 CPDF_Font* pFont = NULL; |
245 if (bFind) | 245 if (bFind) |
246 pFont = FindFontSameCharset(sAlias, nCharset); | 246 pFont = FindFontSameCharset(sAlias, nCharset); |
247 | 247 |
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 } | 559 } |
560 | 560 |
561 CPWL_DocFontMap::~CPWL_DocFontMap() | 561 CPWL_DocFontMap::~CPWL_DocFontMap() |
562 { | 562 { |
563 } | 563 } |
564 | 564 |
565 CPDF_Document* CPWL_DocFontMap::GetDocument() | 565 CPDF_Document* CPWL_DocFontMap::GetDocument() |
566 { | 566 { |
567 return m_pAttachedDoc; | 567 return m_pAttachedDoc; |
568 } | 568 } |
OLD | NEW |