• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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);
GetBuiltinMapper()58   CFX_FontMapper* GetBuiltinMapper() const { return m_pBuiltinMapper.get(); }
GetFTLibrary()59   FXFT_Library GetFTLibrary() const { return m_FTLibrary; }
FTLibrarySupportsHinting()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