| 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 "fpdfsdk/pdfwindow/PWL_FontMap.h" | 7 #include "fpdfsdk/pdfwindow/PWL_FontMap.h" |
| 8 | 8 |
| 9 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" | 9 #include "core/fpdfapi/fpdf_font/include/cpdf_font.h" |
| 10 #include "core/fpdfapi/fpdf_font/include/cpdf_fontencoding.h" | 10 #include "core/fpdfapi/fpdf_font/include/cpdf_fontencoding.h" |
| (...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 | 207 |
| 208 if (!pFont) { | 208 if (!pFont) { |
| 209 CFX_ByteString sTemp = sFontName; | 209 CFX_ByteString sTemp = sFontName; |
| 210 pFont = AddFontToDocument(GetDocument(), sTemp, nCharset); | 210 pFont = AddFontToDocument(GetDocument(), sTemp, nCharset); |
| 211 sAlias = EncodeFontAlias(sTemp, nCharset); | 211 sAlias = EncodeFontAlias(sTemp, nCharset); |
| 212 } | 212 } |
| 213 AddedFont(pFont, sAlias); | 213 AddedFont(pFont, sAlias); |
| 214 return AddFontData(pFont, sAlias, nCharset); | 214 return AddFontData(pFont, sAlias, nCharset); |
| 215 } | 215 } |
| 216 | 216 |
| 217 int32_t CPWL_FontMap::GetPWLFontIndex(uint16_t word, int32_t nCharset) { | |
| 218 int32_t nFind = -1; | |
| 219 | |
| 220 for (int32_t i = 0, sz = m_aData.GetSize(); i < sz; i++) { | |
| 221 if (CPWL_FontMap_Data* pData = m_aData.GetAt(i)) { | |
| 222 if (pData->nCharset == nCharset) { | |
| 223 nFind = i; | |
| 224 break; | |
| 225 } | |
| 226 } | |
| 227 } | |
| 228 | |
| 229 CPDF_Font* pNewFont = GetPDFFont(nFind); | |
| 230 | |
| 231 if (!pNewFont) | |
| 232 return -1; | |
| 233 | |
| 234 CFX_ByteString sAlias = EncodeFontAlias("Arial_Chrome", nCharset); | |
| 235 AddedFont(pNewFont, sAlias); | |
| 236 | |
| 237 return AddFontData(pNewFont, sAlias, nCharset); | |
| 238 } | |
| 239 | |
| 240 CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, | 217 CPDF_Font* CPWL_FontMap::FindFontSameCharset(CFX_ByteString& sFontAlias, |
| 241 int32_t nCharset) { | 218 int32_t nCharset) { |
| 242 return nullptr; | 219 return nullptr; |
| 243 } | 220 } |
| 244 | 221 |
| 245 int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont, | 222 int32_t CPWL_FontMap::AddFontData(CPDF_Font* pFont, |
| 246 const CFX_ByteString& sFontAlias, | 223 const CFX_ByteString& sFontAlias, |
| 247 int32_t nCharset) { | 224 int32_t nCharset) { |
| 248 CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data; | 225 CPWL_FontMap_Data* pNewData = new CPWL_FontMap_Data; |
| 249 pNewData->pFont = pFont; | 226 pNewData->pFont = pFont; |
| 250 pNewData->sFontName = sFontAlias; | 227 pNewData->sFontName = sFontAlias; |
| 251 pNewData->nCharset = nCharset; | 228 pNewData->nCharset = nCharset; |
| 252 | 229 |
| 253 m_aData.Add(pNewData); | 230 m_aData.Add(pNewData); |
| 254 | 231 |
| 255 return m_aData.GetSize() - 1; | 232 return m_aData.GetSize() - 1; |
| 256 } | 233 } |
| 257 | 234 |
| 258 void CPWL_FontMap::AddedFont(CPDF_Font* pFont, | 235 void CPWL_FontMap::AddedFont(CPDF_Font* pFont, |
| 259 const CFX_ByteString& sFontAlias) {} | 236 const CFX_ByteString& sFontAlias) {} |
| 260 | 237 |
| 261 CFX_ByteString CPWL_FontMap::GetFontName(int32_t nFontIndex) { | |
| 262 if (nFontIndex >= 0 && nFontIndex < m_aData.GetSize()) { | |
| 263 if (CPWL_FontMap_Data* pData = m_aData.GetAt(nFontIndex)) { | |
| 264 return pData->sFontName; | |
| 265 } | |
| 266 } | |
| 267 | |
| 268 return ""; | |
| 269 } | |
| 270 | |
| 271 CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset) { | 238 CFX_ByteString CPWL_FontMap::GetNativeFont(int32_t nCharset) { |
| 272 if (nCharset == DEFAULT_CHARSET) | 239 if (nCharset == DEFAULT_CHARSET) |
| 273 nCharset = GetNativeCharset(); | 240 nCharset = GetNativeCharset(); |
| 274 | 241 |
| 275 CFX_ByteString sFontName = GetDefaultFontByCharset(nCharset); | 242 CFX_ByteString sFontName = GetDefaultFontByCharset(nCharset); |
| 276 if (m_pSystemHandler->FindNativeTrueTypeFont(sFontName)) | 243 if (m_pSystemHandler->FindNativeTrueTypeFont(sFontName)) |
| 277 return sFontName; | 244 return sFontName; |
| 278 | 245 |
| 279 sFontName.clear(); | 246 sFontName.clear(); |
| 280 return sFontName; | 247 return sFontName; |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 327 sPostfix.Format("_%02X", nCharset); | 294 sPostfix.Format("_%02X", nCharset); |
| 328 return EncodeFontAlias(sFontName) + sPostfix; | 295 return EncodeFontAlias(sFontName) + sPostfix; |
| 329 } | 296 } |
| 330 | 297 |
| 331 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName) { | 298 CFX_ByteString CPWL_FontMap::EncodeFontAlias(const CFX_ByteString& sFontName) { |
| 332 CFX_ByteString sRet = sFontName; | 299 CFX_ByteString sRet = sFontName; |
| 333 sRet.Remove(' '); | 300 sRet.Remove(' '); |
| 334 return sRet; | 301 return sRet; |
| 335 } | 302 } |
| 336 | 303 |
| 337 int32_t CPWL_FontMap::GetFontMapCount() const { | |
| 338 return m_aData.GetSize(); | |
| 339 } | |
| 340 | |
| 341 const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const { | 304 const CPWL_FontMap_Data* CPWL_FontMap::GetFontMapData(int32_t nIndex) const { |
| 342 if (nIndex >= 0 && nIndex < m_aData.GetSize()) { | 305 if (nIndex >= 0 && nIndex < m_aData.GetSize()) { |
| 343 return m_aData.GetAt(nIndex); | 306 return m_aData.GetAt(nIndex); |
| 344 } | 307 } |
| 345 | 308 |
| 346 return nullptr; | 309 return nullptr; |
| 347 } | 310 } |
| 348 | 311 |
| 349 int32_t CPWL_FontMap::GetNativeCharset() { | 312 int32_t CPWL_FontMap::GetNativeCharset() { |
| 350 uint8_t nCharset = ANSI_CHARSET; | 313 uint8_t nCharset = ANSI_CHARSET; |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 469 return RUSSIAN_CHARSET; | 432 return RUSSIAN_CHARSET; |
| 470 | 433 |
| 471 if (word >= 0x0100 && word <= 0x024F) | 434 if (word >= 0x0100 && word <= 0x024F) |
| 472 return EASTEUROPE_CHARSET; | 435 return EASTEUROPE_CHARSET; |
| 473 | 436 |
| 474 if (word >= 0x1E00 && word <= 0x1EFF) | 437 if (word >= 0x1E00 && word <= 0x1EFF) |
| 475 return VIETNAMESE_CHARSET; | 438 return VIETNAMESE_CHARSET; |
| 476 | 439 |
| 477 return ANSI_CHARSET; | 440 return ANSI_CHARSET; |
| 478 } | 441 } |
| OLD | NEW |