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 "core/fpdfapi/fpdf_cmaps/cmap_int.h" | 7 #include "core/fpdfapi/fpdf_cmaps/cmap_int.h" |
8 | 8 |
9 #include "core/fpdfapi/fpdf_font/font_int.h" | 9 #include "core/fpdfapi/fpdf_font/font_int.h" |
10 #include "core/fpdfapi/fpdf_page/cpdf_pagemodule.h" | 10 #include "core/fpdfapi/fpdf_page/cpdf_pagemodule.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 uint32_t value = ((*(uint16_t*)p2) << 16) | ((uint16_t*)p2)[1]; | 46 uint32_t value = ((*(uint16_t*)p2) << 16) | ((uint16_t*)p2)[1]; |
47 if (key < value) | 47 if (key < value) |
48 return -1; | 48 return -1; |
49 if (key > value) | 49 if (key > value) |
50 return 1; | 50 return 1; |
51 return 0; | 51 return 0; |
52 } | 52 } |
53 | 53 |
54 }; // extern "C" | 54 }; // extern "C" |
55 | 55 |
56 void FPDFAPI_FindEmbeddedCMap(const char* name, | 56 void FPDFAPI_FindEmbeddedCMap(const CFX_ByteString& bsName, |
57 int charset, | 57 int charset, |
58 int coding, | 58 int coding, |
59 const FXCMAP_CMap*& pMap) { | 59 const FXCMAP_CMap*& pMap) { |
60 pMap = nullptr; | 60 pMap = nullptr; |
61 CPDF_FontGlobals* pFontGlobals = | 61 CPDF_FontGlobals* pFontGlobals = |
62 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); | 62 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); |
63 const FXCMAP_CMap* pCMaps = | 63 const FXCMAP_CMap* pCMaps = |
64 pFontGlobals->m_EmbeddedCharsets[charset].m_pMapList; | 64 pFontGlobals->m_EmbeddedCharsets[charset].m_pMapList; |
65 for (uint32_t i = 0; i < pFontGlobals->m_EmbeddedCharsets[charset].m_Count; | 65 for (uint32_t i = 0; i < pFontGlobals->m_EmbeddedCharsets[charset].m_Count; |
66 i++) { | 66 i++) { |
67 if (FXSYS_strcmp(name, pCMaps[i].m_Name)) | 67 if (bsName == pCMaps[i].m_Name) { |
68 continue; | 68 pMap = &pCMaps[i]; |
69 pMap = &pCMaps[i]; | 69 break; |
70 break; | 70 } |
71 } | 71 } |
72 } | 72 } |
73 | 73 |
74 uint16_t FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, uint32_t charcode) { | 74 uint16_t FPDFAPI_CIDFromCharCode(const FXCMAP_CMap* pMap, uint32_t charcode) { |
75 if (charcode >> 16) { | 75 if (charcode >> 16) { |
76 while (1) { | 76 while (1) { |
77 if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { | 77 if (pMap->m_DWordMapType == FXCMAP_CMap::Range) { |
78 uint16_t* found = static_cast<uint16_t*>( | 78 uint16_t* found = static_cast<uint16_t*>( |
79 FXSYS_bsearch(&charcode, pMap->m_pDWordMap, pMap->m_DWordCount, 8, | 79 FXSYS_bsearch(&charcode, pMap->m_pDWordMap, pMap->m_DWordCount, 8, |
80 compareDWordRange)); | 80 compareDWordRange)); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 | 145 |
146 pCur += 3; | 146 pCur += 3; |
147 } | 147 } |
148 } | 148 } |
149 if (pMap->m_UseOffset == 0) | 149 if (pMap->m_UseOffset == 0) |
150 return 0; | 150 return 0; |
151 | 151 |
152 pMap = pMap + pMap->m_UseOffset; | 152 pMap = pMap + pMap->m_UseOffset; |
153 } | 153 } |
154 } | 154 } |
OLD | NEW |