Home | History | Annotate | Download | only in fxge
      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