| 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 "ttgsubtable.h" | 7 #include "ttgsubtable.h" |
| 8 | 8 |
| 9 #include "core/include/fxge/fx_freetype.h" | 9 #include "core/include/fxge/fx_freetype.h" |
| 10 #include "core/include/fxge/fx_ge.h" | 10 #include "core/include/fxge/fx_ge.h" |
| 11 #include "third_party/base/nonstd_unique_ptr.h" | 11 #include "third_party/base/nonstd_unique_ptr.h" |
| 12 #include "third_party/base/stl_util.h" |
| 12 | 13 |
| 13 CFX_GlyphMap::CFX_GlyphMap() {} | 14 CFX_GlyphMap::CFX_GlyphMap() {} |
| 14 CFX_GlyphMap::~CFX_GlyphMap() {} | 15 CFX_GlyphMap::~CFX_GlyphMap() {} |
| 15 extern "C" { | 16 extern "C" { |
| 16 static int _CompareInt(const void* p1, const void* p2) { | 17 static int _CompareInt(const void* p1, const void* p2) { |
| 17 return (*(FX_DWORD*)p1) - (*(FX_DWORD*)p2); | 18 return (*(FX_DWORD*)p1) - (*(FX_DWORD*)p2); |
| 18 } | 19 } |
| 19 }; | 20 }; |
| 20 struct _IntPair { | 21 struct _IntPair { |
| 21 int32_t key; | 22 int32_t key; |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 for (int k = 0; | 80 for (int k = 0; |
| 80 k < ((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) | 81 k < ((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) |
| 81 ->LangSys.FeatureCount; | 82 ->LangSys.FeatureCount; |
| 82 ++k) { | 83 ++k) { |
| 83 FX_DWORD index = | 84 FX_DWORD index = |
| 84 *(((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) | 85 *(((ScriptList.ScriptRecord + i)->Script.LangSysRecord + j) |
| 85 ->LangSys.FeatureIndex + | 86 ->LangSys.FeatureIndex + |
| 86 k); | 87 k); |
| 87 if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] || | 88 if (FeatureList.FeatureRecord[index].FeatureTag == tag[0] || |
| 88 FeatureList.FeatureRecord[index].FeatureTag == tag[1]) { | 89 FeatureList.FeatureRecord[index].FeatureTag == tag[1]) { |
| 89 if (m_featureMap.find(index) == m_featureMap.end()) { | 90 if (!pdfium::ContainsKey(m_featureMap, index)) { |
| 90 m_featureMap[index] = index; | 91 m_featureMap[index] = index; |
| 91 } | 92 } |
| 92 } | 93 } |
| 93 } | 94 } |
| 94 } | 95 } |
| 95 } | 96 } |
| 96 if (m_featureMap.empty()) { | 97 if (m_featureMap.empty()) { |
| 97 for (int i = 0; i < FeatureList.FeatureCount; i++) { | 98 for (int i = 0; i < FeatureList.FeatureCount; i++) { |
| 98 if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] || | 99 if (FeatureList.FeatureRecord[i].FeatureTag == tag[0] || |
| 99 FeatureList.FeatureRecord[i].FeatureTag == tag[1]) { | 100 FeatureList.FeatureRecord[i].FeatureTag == tag[1]) { |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 404 FXFT_Load_Sfnt_Table(pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, | 405 FXFT_Load_Sfnt_Table(pFont->GetFace(), FT_MAKE_TAG('G', 'S', 'U', 'B'), 0, |
| 405 pFont->GetSubData(), NULL); | 406 pFont->GetSubData(), NULL); |
| 406 if (!error && pFont->GetSubData()) { | 407 if (!error && pFont->GetSubData()) { |
| 407 nonstd::unique_ptr<CFX_GSUBTable> pGsubTable(new CFX_GSUBTable); | 408 nonstd::unique_ptr<CFX_GSUBTable> pGsubTable(new CFX_GSUBTable); |
| 408 if (pGsubTable->m_GsubImp.LoadGSUBTable((FT_Bytes)pFont->GetSubData())) { | 409 if (pGsubTable->m_GsubImp.LoadGSUBTable((FT_Bytes)pFont->GetSubData())) { |
| 409 return pGsubTable.release(); | 410 return pGsubTable.release(); |
| 410 } | 411 } |
| 411 } | 412 } |
| 412 return NULL; | 413 return NULL; |
| 413 } | 414 } |
| OLD | NEW |