Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: core/fpdfapi/fpdf_font/cpdf_cidfont.cpp

Issue 1832173003: Remove FX_DWORD from core/ and delete definition (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/fpdf_font/cpdf_cidfont.h ('k') | core/fpdfapi/fpdf_font/cpdf_font.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 PDFium Authors. All rights reserved. 1 // Copyright 2016 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_font/cpdf_cidfont.h" 7 #include "core/fpdfapi/fpdf_font/cpdf_cidfont.h"
8 8
9 #include "core/fpdfapi/fpdf_cmaps/cmap_int.h" 9 #include "core/fpdfapi/fpdf_cmaps/cmap_int.h"
10 #include "core/fpdfapi/fpdf_font/font_int.h" 10 #include "core/fpdfapi/fpdf_font/font_int.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 case CIDSET_KOREA1: 117 case CIDSET_KOREA1:
118 return true; 118 return true;
119 119
120 default: 120 default:
121 return false; 121 return false;
122 } 122 }
123 } 123 }
124 124
125 FX_WCHAR EmbeddedUnicodeFromCharcode(const FXCMAP_CMap* pEmbedMap, 125 FX_WCHAR EmbeddedUnicodeFromCharcode(const FXCMAP_CMap* pEmbedMap,
126 CIDSet charset, 126 CIDSet charset,
127 FX_DWORD charcode) { 127 uint32_t charcode) {
128 if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) 128 if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset))
129 return 0; 129 return 0;
130 130
131 uint16_t cid = FPDFAPI_CIDFromCharCode(pEmbedMap, charcode); 131 uint16_t cid = FPDFAPI_CIDFromCharCode(pEmbedMap, charcode);
132 if (cid == 0) 132 if (cid == 0)
133 return 0; 133 return 0;
134 134
135 CPDF_FontGlobals* pFontGlobals = 135 CPDF_FontGlobals* pFontGlobals =
136 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); 136 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
137 const uint16_t* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; 137 const uint16_t* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap;
138 if (!pCodes) 138 if (!pCodes)
139 return 0; 139 return 0;
140 140
141 if (cid < pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count) 141 if (cid < pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count)
142 return pCodes[cid]; 142 return pCodes[cid];
143 return 0; 143 return 0;
144 } 144 }
145 145
146 FX_DWORD EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap, 146 uint32_t EmbeddedCharcodeFromUnicode(const FXCMAP_CMap* pEmbedMap,
147 CIDSet charset, 147 CIDSet charset,
148 FX_WCHAR unicode) { 148 FX_WCHAR unicode) {
149 if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset)) 149 if (!IsValidEmbeddedCharcodeFromUnicodeCharset(charset))
150 return 0; 150 return 0;
151 151
152 CPDF_FontGlobals* pFontGlobals = 152 CPDF_FontGlobals* pFontGlobals =
153 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals(); 153 CPDF_ModuleMgr::Get()->GetPageModule()->GetFontGlobals();
154 const uint16_t* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap; 154 const uint16_t* pCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_pMap;
155 if (!pCodes) 155 if (!pCodes)
156 return 0; 156 return 0;
157 157
158 int nCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count; 158 int nCodes = pFontGlobals->m_EmbeddedToUnicodes[charset].m_Count;
159 for (int i = 0; i < nCodes; ++i) { 159 for (int i = 0; i < nCodes; ++i) {
160 if (pCodes[i] == unicode) { 160 if (pCodes[i] == unicode) {
161 FX_DWORD CharCode = FPDFAPI_CharCodeFromCID(pEmbedMap, i); 161 uint32_t CharCode = FPDFAPI_CharCodeFromCID(pEmbedMap, i);
162 if (CharCode != 0) { 162 if (CharCode != 0) {
163 return CharCode; 163 return CharCode;
164 } 164 }
165 } 165 }
166 } 166 }
167 return 0; 167 return 0;
168 } 168 }
169 169
170 #endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_ 170 #endif // _FXM_PLATFORM_ != _FXM_PLATFORM_WINDOWS_
171 171
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 } 227 }
228 228
229 const CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() const { 229 const CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() const {
230 return this; 230 return this;
231 } 231 }
232 232
233 CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() { 233 CPDF_CIDFont* CPDF_CIDFont::AsCIDFont() {
234 return this; 234 return this;
235 } 235 }
236 236
237 uint16_t CPDF_CIDFont::CIDFromCharCode(FX_DWORD charcode) const { 237 uint16_t CPDF_CIDFont::CIDFromCharCode(uint32_t charcode) const {
238 if (!m_pCMap) { 238 if (!m_pCMap) {
239 return (uint16_t)charcode; 239 return (uint16_t)charcode;
240 } 240 }
241 return m_pCMap->CIDFromCharCode(charcode); 241 return m_pCMap->CIDFromCharCode(charcode);
242 } 242 }
243 243
244 FX_BOOL CPDF_CIDFont::IsVertWriting() const { 244 FX_BOOL CPDF_CIDFont::IsVertWriting() const {
245 return m_pCMap ? m_pCMap->IsVertWriting() : FALSE; 245 return m_pCMap ? m_pCMap->IsVertWriting() : FALSE;
246 } 246 }
247 247
248 CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(FX_DWORD charcode) const { 248 CFX_WideString CPDF_CIDFont::UnicodeFromCharCode(uint32_t charcode) const {
249 CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode); 249 CFX_WideString str = CPDF_Font::UnicodeFromCharCode(charcode);
250 if (!str.IsEmpty()) 250 if (!str.IsEmpty())
251 return str; 251 return str;
252 FX_WCHAR ret = GetUnicodeFromCharCode(charcode); 252 FX_WCHAR ret = GetUnicodeFromCharCode(charcode);
253 if (ret == 0) 253 if (ret == 0)
254 return CFX_WideString(); 254 return CFX_WideString();
255 return ret; 255 return ret;
256 } 256 }
257 257
258 FX_WCHAR CPDF_CIDFont::GetUnicodeFromCharCode(FX_DWORD charcode) const { 258 FX_WCHAR CPDF_CIDFont::GetUnicodeFromCharCode(uint32_t charcode) const {
259 switch (m_pCMap->m_Coding) { 259 switch (m_pCMap->m_Coding) {
260 case CIDCODING_UCS2: 260 case CIDCODING_UCS2:
261 case CIDCODING_UTF16: 261 case CIDCODING_UTF16:
262 return (FX_WCHAR)charcode; 262 return (FX_WCHAR)charcode;
263 case CIDCODING_CID: 263 case CIDCODING_CID:
264 if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { 264 if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) {
265 return 0; 265 return 0;
266 } 266 }
267 return m_pCID2UnicodeMap->UnicodeFromCID((uint16_t)charcode); 267 return m_pCID2UnicodeMap->UnicodeFromCID((uint16_t)charcode);
268 } 268 }
(...skipping 17 matching lines...) Expand all
286 if (m_pCMap->m_pEmbedMap) { 286 if (m_pCMap->m_pEmbedMap) {
287 return EmbeddedUnicodeFromCharcode(m_pCMap->m_pEmbedMap, 287 return EmbeddedUnicodeFromCharcode(m_pCMap->m_pEmbedMap,
288 m_pCMap->m_Charset, charcode); 288 m_pCMap->m_Charset, charcode);
289 } 289 }
290 return 0; 290 return 0;
291 #endif 291 #endif
292 } 292 }
293 return m_pCID2UnicodeMap->UnicodeFromCID(CIDFromCharCode(charcode)); 293 return m_pCID2UnicodeMap->UnicodeFromCID(CIDFromCharCode(charcode));
294 } 294 }
295 295
296 FX_DWORD CPDF_CIDFont::CharCodeFromUnicode(FX_WCHAR unicode) const { 296 uint32_t CPDF_CIDFont::CharCodeFromUnicode(FX_WCHAR unicode) const {
297 FX_DWORD charcode = CPDF_Font::CharCodeFromUnicode(unicode); 297 uint32_t charcode = CPDF_Font::CharCodeFromUnicode(unicode);
298 if (charcode) 298 if (charcode)
299 return charcode; 299 return charcode;
300 switch (m_pCMap->m_Coding) { 300 switch (m_pCMap->m_Coding) {
301 case CIDCODING_UNKNOWN: 301 case CIDCODING_UNKNOWN:
302 return 0; 302 return 0;
303 case CIDCODING_UCS2: 303 case CIDCODING_UCS2:
304 case CIDCODING_UTF16: 304 case CIDCODING_UTF16:
305 return unicode; 305 return unicode;
306 case CIDCODING_CID: { 306 case CIDCODING_CID: {
307 if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) { 307 if (!m_pCID2UnicodeMap || !m_pCID2UnicodeMap->IsLoaded()) {
308 return 0; 308 return 0;
309 } 309 }
310 FX_DWORD CID = 0; 310 uint32_t CID = 0;
311 while (CID < 65536) { 311 while (CID < 65536) {
312 FX_WCHAR this_unicode = 312 FX_WCHAR this_unicode =
313 m_pCID2UnicodeMap->UnicodeFromCID((uint16_t)CID); 313 m_pCID2UnicodeMap->UnicodeFromCID((uint16_t)CID);
314 if (this_unicode == unicode) { 314 if (this_unicode == unicode) {
315 return CID; 315 return CID;
316 } 316 }
317 CID++; 317 CID++;
318 } 318 }
319 break; 319 break;
320 } 320 }
321 } 321 }
322 322
323 if (unicode < 0x80) { 323 if (unicode < 0x80) {
324 return static_cast<FX_DWORD>(unicode); 324 return static_cast<uint32_t>(unicode);
325 } 325 }
326 if (m_pCMap->m_Coding == CIDCODING_CID) { 326 if (m_pCMap->m_Coding == CIDCODING_CID) {
327 return 0; 327 return 0;
328 } 328 }
329 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_ 329 #if _FXM_PLATFORM_ == _FXM_PLATFORM_WINDOWS_
330 uint8_t buffer[32]; 330 uint8_t buffer[32];
331 int ret = 331 int ret =
332 FXSYS_WideCharToMultiByte(g_CharsetCPs[m_pCMap->m_Coding], 0, &unicode, 1, 332 FXSYS_WideCharToMultiByte(g_CharsetCPs[m_pCMap->m_Coding], 0, &unicode, 1,
333 (char*)buffer, 4, NULL, NULL); 333 (char*)buffer, 4, NULL, NULL);
334 if (ret == 1) { 334 if (ret == 1) {
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 m_DefaultVY = pDefaultArray->GetIntegerAt(0); 459 m_DefaultVY = pDefaultArray->GetIntegerAt(0);
460 m_DefaultW1 = pDefaultArray->GetIntegerAt(1); 460 m_DefaultW1 = pDefaultArray->GetIntegerAt(1);
461 } else { 461 } else {
462 m_DefaultVY = 880; 462 m_DefaultVY = 880;
463 m_DefaultW1 = -1000; 463 m_DefaultW1 = -1000;
464 } 464 }
465 } 465 }
466 return TRUE; 466 return TRUE;
467 } 467 }
468 468
469 FX_RECT CPDF_CIDFont::GetCharBBox(FX_DWORD charcode, int level) { 469 FX_RECT CPDF_CIDFont::GetCharBBox(uint32_t charcode, int level) {
470 if (charcode < 256 && m_CharBBox[charcode].right != FX_SMALL_RECT::kInvalid) 470 if (charcode < 256 && m_CharBBox[charcode].right != FX_SMALL_RECT::kInvalid)
471 return FX_RECT(m_CharBBox[charcode]); 471 return FX_RECT(m_CharBBox[charcode]);
472 472
473 FX_RECT rect; 473 FX_RECT rect;
474 FX_BOOL bVert = FALSE; 474 FX_BOOL bVert = FALSE;
475 int glyph_index = GlyphFromCharCode(charcode, &bVert); 475 int glyph_index = GlyphFromCharCode(charcode, &bVert);
476 FXFT_Face face = m_Font.GetFace(); 476 FXFT_Face face = m_Font.GetFace();
477 if (face) { 477 if (face) {
478 if (FXFT_Is_Face_Tricky(face)) { 478 if (FXFT_Is_Face_Tricky(face)) {
479 int err = FXFT_Load_Glyph(face, glyph_index, 479 int err = FXFT_Load_Glyph(face, glyph_index,
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
531 CFX_FloatRect rect_f(rect); 531 CFX_FloatRect rect_f(rect);
532 rect_f.Transform(&matrix); 532 rect_f.Transform(&matrix);
533 rect = rect_f.GetOutterRect(); 533 rect = rect_f.GetOutterRect();
534 } 534 }
535 } 535 }
536 if (charcode < 256) 536 if (charcode < 256)
537 m_CharBBox[charcode] = rect.ToSmallRect(); 537 m_CharBBox[charcode] = rect.ToSmallRect();
538 538
539 return rect; 539 return rect;
540 } 540 }
541 int CPDF_CIDFont::GetCharWidthF(FX_DWORD charcode, int level) { 541 int CPDF_CIDFont::GetCharWidthF(uint32_t charcode, int level) {
542 if (m_pAnsiWidths && charcode < 0x80) { 542 if (m_pAnsiWidths && charcode < 0x80) {
543 return m_pAnsiWidths[charcode]; 543 return m_pAnsiWidths[charcode];
544 } 544 }
545 uint16_t cid = CIDFromCharCode(charcode); 545 uint16_t cid = CIDFromCharCode(charcode);
546 int size = m_WidthList.GetSize(); 546 int size = m_WidthList.GetSize();
547 FX_DWORD* list = m_WidthList.GetData(); 547 uint32_t* list = m_WidthList.GetData();
548 for (int i = 0; i < size; i += 3) { 548 for (int i = 0; i < size; i += 3) {
549 if (cid >= list[i] && cid <= list[i + 1]) { 549 if (cid >= list[i] && cid <= list[i + 1]) {
550 return (int)list[i + 2]; 550 return (int)list[i + 2];
551 } 551 }
552 } 552 }
553 return m_DefaultWidth; 553 return m_DefaultWidth;
554 } 554 }
555 short CPDF_CIDFont::GetVertWidth(uint16_t CID) const { 555 short CPDF_CIDFont::GetVertWidth(uint16_t CID) const {
556 FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; 556 uint32_t vertsize = m_VertMetrics.GetSize() / 5;
557 if (vertsize == 0) { 557 if (vertsize == 0) {
558 return m_DefaultW1; 558 return m_DefaultW1;
559 } 559 }
560 const FX_DWORD* pTable = m_VertMetrics.GetData(); 560 const uint32_t* pTable = m_VertMetrics.GetData();
561 for (FX_DWORD i = 0; i < vertsize; i++) 561 for (uint32_t i = 0; i < vertsize; i++)
562 if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { 562 if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) {
563 return (short)(int)pTable[i * 5 + 2]; 563 return (short)(int)pTable[i * 5 + 2];
564 } 564 }
565 return m_DefaultW1; 565 return m_DefaultW1;
566 } 566 }
567 void CPDF_CIDFont::GetVertOrigin(uint16_t CID, short& vx, short& vy) const { 567 void CPDF_CIDFont::GetVertOrigin(uint16_t CID, short& vx, short& vy) const {
568 FX_DWORD vertsize = m_VertMetrics.GetSize() / 5; 568 uint32_t vertsize = m_VertMetrics.GetSize() / 5;
569 if (vertsize) { 569 if (vertsize) {
570 const FX_DWORD* pTable = m_VertMetrics.GetData(); 570 const uint32_t* pTable = m_VertMetrics.GetData();
571 for (FX_DWORD i = 0; i < vertsize; i++) 571 for (uint32_t i = 0; i < vertsize; i++)
572 if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) { 572 if (pTable[i * 5] <= CID && pTable[i * 5 + 1] >= CID) {
573 vx = (short)(int)pTable[i * 5 + 3]; 573 vx = (short)(int)pTable[i * 5 + 3];
574 vy = (short)(int)pTable[i * 5 + 4]; 574 vy = (short)(int)pTable[i * 5 + 4];
575 return; 575 return;
576 } 576 }
577 } 577 }
578 FX_DWORD dwWidth = m_DefaultWidth; 578 uint32_t dwWidth = m_DefaultWidth;
579 int size = m_WidthList.GetSize(); 579 int size = m_WidthList.GetSize();
580 const FX_DWORD* list = m_WidthList.GetData(); 580 const uint32_t* list = m_WidthList.GetData();
581 for (int i = 0; i < size; i += 3) { 581 for (int i = 0; i < size; i += 3) {
582 if (CID >= list[i] && CID <= list[i + 1]) { 582 if (CID >= list[i] && CID <= list[i + 1]) {
583 dwWidth = (uint16_t)list[i + 2]; 583 dwWidth = (uint16_t)list[i + 2];
584 break; 584 break;
585 } 585 }
586 } 586 }
587 vx = (short)dwWidth / 2; 587 vx = (short)dwWidth / 2;
588 vy = (short)m_DefaultVY; 588 vy = (short)m_DefaultVY;
589 } 589 }
590 int CPDF_CIDFont::GetGlyphIndex(FX_DWORD unicode, FX_BOOL* pVertGlyph) { 590 int CPDF_CIDFont::GetGlyphIndex(uint32_t unicode, FX_BOOL* pVertGlyph) {
591 if (pVertGlyph) { 591 if (pVertGlyph) {
592 *pVertGlyph = FALSE; 592 *pVertGlyph = FALSE;
593 } 593 }
594 FXFT_Face face = m_Font.GetFace(); 594 FXFT_Face face = m_Font.GetFace();
595 int index = FXFT_Get_Char_Index(face, unicode); 595 int index = FXFT_Get_Char_Index(face, unicode);
596 if (unicode == 0x2502) { 596 if (unicode == 0x2502) {
597 return index; 597 return index;
598 } 598 }
599 if (index && IsVertWriting()) { 599 if (index && IsVertWriting()) {
600 if (m_pTTGSUBTable) { 600 if (m_pTTGSUBTable) {
(...skipping 29 matching lines...) Expand all
630 } 630 }
631 } 631 }
632 } 632 }
633 return index; 633 return index;
634 } 634 }
635 if (pVertGlyph) { 635 if (pVertGlyph) {
636 *pVertGlyph = FALSE; 636 *pVertGlyph = FALSE;
637 } 637 }
638 return index; 638 return index;
639 } 639 }
640 int CPDF_CIDFont::GlyphFromCharCode(FX_DWORD charcode, FX_BOOL* pVertGlyph) { 640 int CPDF_CIDFont::GlyphFromCharCode(uint32_t charcode, FX_BOOL* pVertGlyph) {
641 if (pVertGlyph) { 641 if (pVertGlyph) {
642 *pVertGlyph = FALSE; 642 *pVertGlyph = FALSE;
643 } 643 }
644 if (!m_pFontFile && !m_pCIDToGIDMap) { 644 if (!m_pFontFile && !m_pCIDToGIDMap) {
645 uint16_t cid = CIDFromCharCode(charcode); 645 uint16_t cid = CIDFromCharCode(charcode);
646 FX_WCHAR unicode = 0; 646 FX_WCHAR unicode = 0;
647 if (m_bCIDIsGID) { 647 if (m_bCIDIsGID) {
648 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_ 648 #if _FXM_PLATFORM_ != _FXM_PLATFORM_APPLE_
649 return cid; 649 return cid;
650 #else 650 #else
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
688 } 688 }
689 const FX_CHAR* name = GetAdobeCharName(iBaseEncoding, NULL, charcode); 689 const FX_CHAR* name = GetAdobeCharName(iBaseEncoding, NULL, charcode);
690 if (!name) { 690 if (!name) {
691 return charcode == 0 ? -1 : (int)charcode; 691 return charcode == 0 ? -1 : (int)charcode;
692 } 692 }
693 uint16_t unicode = PDF_UnicodeFromAdobeName(name); 693 uint16_t unicode = PDF_UnicodeFromAdobeName(name);
694 if (unicode) { 694 if (unicode) {
695 if (bMSUnicode) { 695 if (bMSUnicode) {
696 index = FXFT_Get_Char_Index(face, unicode); 696 index = FXFT_Get_Char_Index(face, unicode);
697 } else if (bMacRoman) { 697 } else if (bMacRoman) {
698 FX_DWORD maccode = 698 uint32_t maccode =
699 FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, unicode); 699 FT_CharCodeFromUnicode(FXFT_ENCODING_APPLE_ROMAN, unicode);
700 index = !maccode ? FXFT_Get_Name_Index(face, (char*)name) 700 index = !maccode ? FXFT_Get_Name_Index(face, (char*)name)
701 : FXFT_Get_Char_Index(face, maccode); 701 : FXFT_Get_Char_Index(face, maccode);
702 } else { 702 } else {
703 return FXFT_Get_Char_Index(face, unicode); 703 return FXFT_Get_Char_Index(face, unicode);
704 } 704 }
705 } else { 705 } else {
706 return charcode == 0 ? -1 : (int)charcode; 706 return charcode == 0 ? -1 : (int)charcode;
707 } 707 }
708 if (index == 0 || index == 0xffff) { 708 if (index == 0 || index == 0xffff) {
(...skipping 10 matching lines...) Expand all
719 #endif 719 #endif
720 } 720 }
721 } 721 }
722 if (!face) 722 if (!face)
723 return unicode; 723 return unicode;
724 724
725 int err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE); 725 int err = FXFT_Select_Charmap(face, FXFT_ENCODING_UNICODE);
726 if (err != 0) { 726 if (err != 0) {
727 int i; 727 int i;
728 for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { 728 for (i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) {
729 FX_DWORD ret = FT_CharCodeFromUnicode( 729 uint32_t ret = FT_CharCodeFromUnicode(
730 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]), 730 FXFT_Get_Charmap_Encoding(FXFT_Get_Face_Charmaps(face)[i]),
731 (FX_WCHAR)charcode); 731 (FX_WCHAR)charcode);
732 if (ret == 0) { 732 if (ret == 0) {
733 continue; 733 continue;
734 } 734 }
735 FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); 735 FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]);
736 unicode = (FX_WCHAR)ret; 736 unicode = (FX_WCHAR)ret;
737 break; 737 break;
738 } 738 }
739 if (i == FXFT_Get_Face_CharmapCount(face) && i) { 739 if (i == FXFT_Get_Face_CharmapCount(face) && i) {
(...skipping 29 matching lines...) Expand all
769 FXFT_ENCODING_UNICODE) { 769 FXFT_ENCODING_UNICODE) {
770 CFX_WideString unicode_str = UnicodeFromCharCode(charcode); 770 CFX_WideString unicode_str = UnicodeFromCharCode(charcode);
771 if (unicode_str.IsEmpty()) { 771 if (unicode_str.IsEmpty()) {
772 return -1; 772 return -1;
773 } 773 }
774 charcode = unicode_str.GetAt(0); 774 charcode = unicode_str.GetAt(0);
775 } 775 }
776 return GetGlyphIndex(charcode, pVertGlyph); 776 return GetGlyphIndex(charcode, pVertGlyph);
777 } 777 }
778 } 778 }
779 FX_DWORD byte_pos = cid * 2; 779 uint32_t byte_pos = cid * 2;
780 if (byte_pos + 2 > m_pCIDToGIDMap->GetSize()) 780 if (byte_pos + 2 > m_pCIDToGIDMap->GetSize())
781 return -1; 781 return -1;
782 782
783 const uint8_t* pdata = m_pCIDToGIDMap->GetData() + byte_pos; 783 const uint8_t* pdata = m_pCIDToGIDMap->GetData() + byte_pos;
784 return pdata[0] * 256 + pdata[1]; 784 return pdata[0] * 256 + pdata[1];
785 } 785 }
786 FX_DWORD CPDF_CIDFont::GetNextChar(const FX_CHAR* pString, 786 uint32_t CPDF_CIDFont::GetNextChar(const FX_CHAR* pString,
787 int nStrLen, 787 int nStrLen,
788 int& offset) const { 788 int& offset) const {
789 return m_pCMap->GetNextChar(pString, nStrLen, offset); 789 return m_pCMap->GetNextChar(pString, nStrLen, offset);
790 } 790 }
791 int CPDF_CIDFont::GetCharSize(FX_DWORD charcode) const { 791 int CPDF_CIDFont::GetCharSize(uint32_t charcode) const {
792 return m_pCMap->GetCharSize(charcode); 792 return m_pCMap->GetCharSize(charcode);
793 } 793 }
794 int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const { 794 int CPDF_CIDFont::CountChar(const FX_CHAR* pString, int size) const {
795 return m_pCMap->CountChar(pString, size); 795 return m_pCMap->CountChar(pString, size);
796 } 796 }
797 int CPDF_CIDFont::AppendChar(FX_CHAR* str, FX_DWORD charcode) const { 797 int CPDF_CIDFont::AppendChar(FX_CHAR* str, uint32_t charcode) const {
798 return m_pCMap->AppendChar(str, charcode); 798 return m_pCMap->AppendChar(str, charcode);
799 } 799 }
800 FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const { 800 FX_BOOL CPDF_CIDFont::IsUnicodeCompatible() const {
801 if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap || 801 if (!m_pCMap->IsLoaded() || !m_pCID2UnicodeMap ||
802 !m_pCID2UnicodeMap->IsLoaded()) { 802 !m_pCID2UnicodeMap->IsLoaded()) {
803 return m_pCMap->m_Coding != CIDCODING_UNKNOWN; 803 return m_pCMap->m_Coding != CIDCODING_UNKNOWN;
804 } 804 }
805 return TRUE; 805 return TRUE;
806 } 806 }
807 FX_BOOL CPDF_CIDFont::IsFontStyleFromCharCode(FX_DWORD charcode) const { 807 FX_BOOL CPDF_CIDFont::IsFontStyleFromCharCode(uint32_t charcode) const {
808 return TRUE; 808 return TRUE;
809 } 809 }
810 void CPDF_CIDFont::LoadSubstFont() { 810 void CPDF_CIDFont::LoadSubstFont() {
811 m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, m_StemV * 5, m_ItalicAngle, 811 m_Font.LoadSubst(m_BaseFont, !m_bType1, m_Flags, m_StemV * 5, m_ItalicAngle,
812 g_CharsetCPs[m_Charset], IsVertWriting()); 812 g_CharsetCPs[m_Charset], IsVertWriting());
813 } 813 }
814 void CPDF_CIDFont::LoadMetricsArray(CPDF_Array* pArray, 814 void CPDF_CIDFont::LoadMetricsArray(CPDF_Array* pArray,
815 CFX_ArrayTemplate<FX_DWORD>& result, 815 CFX_ArrayTemplate<uint32_t>& result,
816 int nElements) { 816 int nElements) {
817 int width_status = 0; 817 int width_status = 0;
818 int iCurElement = 0; 818 int iCurElement = 0;
819 int first_code = 0; 819 int first_code = 0;
820 int last_code = 0; 820 int last_code = 0;
821 FX_DWORD count = pArray->GetCount(); 821 uint32_t count = pArray->GetCount();
822 for (FX_DWORD i = 0; i < count; i++) { 822 for (uint32_t i = 0; i < count; i++) {
823 CPDF_Object* pObj = pArray->GetElementValue(i); 823 CPDF_Object* pObj = pArray->GetElementValue(i);
824 if (!pObj) 824 if (!pObj)
825 continue; 825 continue;
826 826
827 if (CPDF_Array* pArray = pObj->AsArray()) { 827 if (CPDF_Array* pArray = pObj->AsArray()) {
828 if (width_status != 1) 828 if (width_status != 1)
829 return; 829 return;
830 830
831 FX_DWORD count = pArray->GetCount(); 831 uint32_t count = pArray->GetCount();
832 for (FX_DWORD j = 0; j < count; j += nElements) { 832 for (uint32_t j = 0; j < count; j += nElements) {
833 result.Add(first_code); 833 result.Add(first_code);
834 result.Add(first_code); 834 result.Add(first_code);
835 for (int k = 0; k < nElements; k++) { 835 for (int k = 0; k < nElements; k++) {
836 result.Add(pArray->GetIntegerAt(j + k)); 836 result.Add(pArray->GetIntegerAt(j + k));
837 } 837 }
838 first_code++; 838 first_code++;
839 } 839 }
840 width_status = 0; 840 width_status = 0;
841 } else { 841 } else {
842 if (width_status == 0) { 842 if (width_status == 0) {
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
899 899
900 const uint8_t* CPDF_CIDFont::GetCIDTransform(uint16_t CID) const { 900 const uint8_t* CPDF_CIDFont::GetCIDTransform(uint16_t CID) const {
901 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile) 901 if (m_Charset != CIDSET_JAPAN1 || m_pFontFile)
902 return nullptr; 902 return nullptr;
903 903
904 const struct CIDTransform* found = (const struct CIDTransform*)FXSYS_bsearch( 904 const struct CIDTransform* found = (const struct CIDTransform*)FXSYS_bsearch(
905 &CID, g_Japan1_VertCIDs, FX_ArraySize(g_Japan1_VertCIDs), 905 &CID, g_Japan1_VertCIDs, FX_ArraySize(g_Japan1_VertCIDs),
906 sizeof(g_Japan1_VertCIDs[0]), CompareCIDTransform); 906 sizeof(g_Japan1_VertCIDs[0]), CompareCIDTransform);
907 return found ? &found->a : nullptr; 907 return found ? &found->a : nullptr;
908 } 908 }
OLDNEW
« no previous file with comments | « core/fpdfapi/fpdf_font/cpdf_cidfont.h ('k') | core/fpdfapi/fpdf_font/cpdf_font.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698