| 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_font/font_int.h" |    7 #include "core/fpdfapi/fpdf_font/font_int.h" | 
|    8  |    8  | 
|    9 #include "core/fpdfapi/fpdf_page/cpdf_pagemodule.h" |    9 #include "core/fpdfapi/fpdf_page/cpdf_pagemodule.h" | 
|   10 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" |   10 #include "core/fpdfapi/fpdf_page/include/cpdf_form.h" | 
|   11 #include "core/fpdfapi/fpdf_page/pageint.h" |   11 #include "core/fpdfapi/fpdf_page/pageint.h" | 
|   12 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" |   12 #include "core/fpdfapi/fpdf_parser/include/cpdf_array.h" | 
|   13 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" |   13 #include "core/fpdfapi/fpdf_parser/include/cpdf_dictionary.h" | 
|   14 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |   14 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 
|   15 #include "core/fpdfapi/fpdf_parser/include/cpdf_name.h" |   15 #include "core/fpdfapi/fpdf_parser/include/cpdf_name.h" | 
|   16 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h" |   16 #include "core/fpdfapi/fpdf_parser/include/cpdf_number.h" | 
|   17 #include "core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h" |   17 #include "core/fpdfapi/fpdf_parser/include/cpdf_simple_parser.h" | 
|   18 #include "core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h" |   18 #include "core/fpdfapi/fpdf_parser/include/cpdf_stream_acc.h" | 
|   19 #include "core/fpdfapi/include/cpdf_modulemgr.h" |   19 #include "core/fpdfapi/include/cpdf_modulemgr.h" | 
|   20 #include "core/fxcrt/include/fx_ext.h" |   20 #include "core/fxcrt/include/fx_ext.h" | 
|   21 #include "core/fxge/include/fx_freetype.h" |   21 #include "core/fxge/include/fx_freetype.h" | 
|   22 #include "third_party/base/stl_util.h" |   22 #include "third_party/base/stl_util.h" | 
|   23  |   23  | 
|   24 FX_BOOL FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id) { |   24 int16_t TT2PDF(int m, FXFT_Face face) { | 
 |   25   int upm = FXFT_Get_Face_UnitsPerEM(face); | 
 |   26   if (upm == 0) | 
 |   27     return static_cast<int16_t>(m); | 
 |   28   return (m * 1000 + upm / 2) / upm; | 
 |   29 } | 
 |   30  | 
 |   31 bool FT_UseTTCharmap(FXFT_Face face, int platform_id, int encoding_id) { | 
 |   32   auto* pCharMap = FXFT_Get_Face_Charmaps(face); | 
|   25   for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { |   33   for (int i = 0; i < FXFT_Get_Face_CharmapCount(face); i++) { | 
|   26     if (FXFT_Get_Charmap_PlatformID(FXFT_Get_Face_Charmaps(face)[i]) == |   34     if (FXFT_Get_Charmap_PlatformID(pCharMap[i]) == platform_id && | 
|   27             platform_id && |   35         FXFT_Get_Charmap_EncodingID(pCharMap[i]) == encoding_id) { | 
|   28         FXFT_Get_Charmap_EncodingID(FXFT_Get_Face_Charmaps(face)[i]) == |   36       FXFT_Set_Charmap(face, pCharMap[i]); | 
|   29             encoding_id) { |   37       return true; | 
|   30       FXFT_Set_Charmap(face, FXFT_Get_Face_Charmaps(face)[i]); |  | 
|   31       return TRUE; |  | 
|   32     } |   38     } | 
|   33   } |   39   } | 
|   34   return FALSE; |   40   return false; | 
|   35 } |   41 } | 
|   36  |   42  | 
|   37 CFX_StockFontArray::CFX_StockFontArray() {} |   43 CFX_StockFontArray::CFX_StockFontArray() {} | 
|   38  |   44  | 
|   39 CFX_StockFontArray::~CFX_StockFontArray() { |   45 CFX_StockFontArray::~CFX_StockFontArray() { | 
|   40   for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) { |   46   for (size_t i = 0; i < FX_ArraySize(m_StockFonts); ++i) { | 
|   41     if (!m_StockFonts[i]) |   47     if (!m_StockFonts[i]) | 
|   42       continue; |   48       continue; | 
|   43     CPDF_Dictionary* pFontDict = m_StockFonts[i]->GetFontDict(); |   49     CPDF_Dictionary* pFontDict = m_StockFonts[i]->GetFontDict(); | 
|   44     if (pFontDict) |   50     if (pFontDict) | 
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   77                            CPDF_Font* pFont) { |   83                            CPDF_Font* pFont) { | 
|   78   if (!pdfium::ContainsKey(m_StockMap, pDoc)) |   84   if (!pdfium::ContainsKey(m_StockMap, pDoc)) | 
|   79     m_StockMap[pDoc].reset(new CFX_StockFontArray); |   85     m_StockMap[pDoc].reset(new CFX_StockFontArray); | 
|   80   m_StockMap[pDoc]->SetFont(index, pFont); |   86   m_StockMap[pDoc]->SetFont(index, pFont); | 
|   81 } |   87 } | 
|   82  |   88  | 
|   83 void CPDF_FontGlobals::Clear(CPDF_Document* pDoc) { |   89 void CPDF_FontGlobals::Clear(CPDF_Document* pDoc) { | 
|   84   m_StockMap.erase(pDoc); |   90   m_StockMap.erase(pDoc); | 
|   85 } |   91 } | 
|   86  |   92  | 
|   87  |  | 
|   88  |  | 
|   89 short TT2PDF(int m, FXFT_Face face) { |  | 
|   90   int upm = FXFT_Get_Face_UnitsPerEM(face); |  | 
|   91   if (upm == 0) |  | 
|   92     return (short)m; |  | 
|   93   return (m * 1000 + upm / 2) / upm; |  | 
|   94 } |  | 
|   95  |  | 
|   96 CFX_WideString CPDF_ToUnicodeMap::Lookup(uint32_t charcode) const { |   93 CFX_WideString CPDF_ToUnicodeMap::Lookup(uint32_t charcode) const { | 
|   97   auto it = m_Map.find(charcode); |   94   auto it = m_Map.find(charcode); | 
|   98   if (it != m_Map.end()) { |   95   if (it != m_Map.end()) { | 
|   99     uint32_t value = it->second; |   96     uint32_t value = it->second; | 
|  100     FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff); |   97     FX_WCHAR unicode = (FX_WCHAR)(value & 0xffff); | 
|  101     if (unicode != 0xffff) { |   98     if (unicode != 0xffff) { | 
|  102       return unicode; |   99       return unicode; | 
|  103     } |  100     } | 
|  104     const FX_WCHAR* buf = m_MultiCharBuf.GetBuffer(); |  101     const FX_WCHAR* buf = m_MultiCharBuf.GetBuffer(); | 
|  105     uint32_t buf_len = m_MultiCharBuf.GetLength(); |  102     uint32_t buf_len = m_MultiCharBuf.GetLength(); | 
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  297   } |  294   } | 
|  298   if (cid_set) { |  295   if (cid_set) { | 
|  299     m_pBaseMap = CPDF_ModuleMgr::Get() |  296     m_pBaseMap = CPDF_ModuleMgr::Get() | 
|  300                      ->GetPageModule() |  297                      ->GetPageModule() | 
|  301                      ->GetFontGlobals() |  298                      ->GetFontGlobals() | 
|  302                      ->m_CMapManager.GetCID2UnicodeMap(cid_set, FALSE); |  299                      ->m_CMapManager.GetCID2UnicodeMap(cid_set, FALSE); | 
|  303   } else { |  300   } else { | 
|  304     m_pBaseMap = nullptr; |  301     m_pBaseMap = nullptr; | 
|  305   } |  302   } | 
|  306 } |  303 } | 
| OLD | NEW |