1 // Copyright 2016 PDFium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 6 7 #ifndef CORE_FXGE_CFX_FONTMGR_H_ 8 #define CORE_FXGE_CFX_FONTMGR_H_ 9 10 #include <map> 11 #include <memory> 12 13 #include "core/fxge/fx_font.h" 14 15 class CFX_FontMapper; 16 class CFX_SubstFont; 17 class CTTFontDesc; 18 class IFX_SystemFontInfo; 19 20 class CFX_FontMgr { 21 public: 22 CFX_FontMgr(); 23 ~CFX_FontMgr(); 24 25 void InitFTLibrary(); 26 27 FXFT_Face GetCachedFace(const ByteString& face_name, 28 int weight, 29 bool bItalic, 30 uint8_t** pFontData); 31 FXFT_Face AddCachedFace(const ByteString& face_name, 32 int weight, 33 bool bItalic, 34 uint8_t* pData, 35 uint32_t size, 36 int face_index); 37 FXFT_Face GetCachedTTCFace(int ttc_size, 38 uint32_t checksum, 39 int font_offset, 40 uint8_t** pFontData); 41 FXFT_Face AddCachedTTCFace(int ttc_size, 42 uint32_t checksum, 43 uint8_t* pData, 44 uint32_t size, 45 int font_offset); 46 FXFT_Face GetFileFace(const char* filename, int face_index); 47 FXFT_Face GetFixedFace(const uint8_t* pData, uint32_t size, int face_index); 48 void ReleaseFace(FXFT_Face face); 49 void SetSystemFontInfo(std::unique_ptr<IFX_SystemFontInfo> pFontInfo); 50 FXFT_Face FindSubstFont(const ByteString& face_name, 51 bool bTrueType, 52 uint32_t flags, 53 int weight, 54 int italic_angle, 55 int CharsetCP, 56 CFX_SubstFont* pSubstFont); 57 bool GetBuiltinFont(size_t index, const uint8_t** pFontData, uint32_t* size); 58 CFX_FontMapper* GetBuiltinMapper() const { return m_pBuiltinMapper.get(); } 59 FXFT_Library GetFTLibrary() const { return m_FTLibrary; } 60 bool FTLibrarySupportsHinting() const { return m_FTLibrarySupportsHinting; } 61 62 private: 63 bool FreeTypeVersionSupportsHinting() const; 64 bool SetLcdFilterMode() const; 65 66 std::unique_ptr<CFX_FontMapper> m_pBuiltinMapper; 67 std::map<ByteString, std::unique_ptr<CTTFontDesc>> m_FaceMap; 68 FXFT_Library m_FTLibrary; 69 bool m_FTLibrarySupportsHinting; 70 }; 71 72 #endif // CORE_FXGE_CFX_FONTMGR_H_ 73