| Index: core/fxge/include/fx_font.h | 
| diff --git a/core/fxge/include/fx_font.h b/core/fxge/include/fx_font.h | 
| index fc207a60b2b0ee86e47d669307804f72dffd90d1..58d12bbb2afc5ebb44b1e7a5cf83db5710b8fed2 100644 | 
| --- a/core/fxge/include/fx_font.h | 
| +++ b/core/fxge/include/fx_font.h | 
| @@ -19,7 +19,7 @@ typedef struct FT_FaceRec_* FXFT_Face; | 
| typedef void* FXFT_Library; | 
|  | 
| class CFX_FaceCache; | 
| -class CFX_FontCache; | 
| +class CFX_GlyphBitmap; | 
| class CFX_PathData; | 
| class CFX_SizeGlyphCache; | 
|  | 
| @@ -115,13 +115,24 @@ class CFX_Font { | 
| int* pFaceCount = nullptr); | 
|  | 
| FX_BOOL LoadClone(const CFX_Font* pFont); | 
| -  void SetFace(FXFT_Face face) { m_Face = face; } | 
| +  void SetFace(FXFT_Face face); | 
| void SetSubstFont(std::unique_ptr<CFX_SubstFont> subst) { | 
| m_pSubstFont = std::move(subst); | 
| } | 
| #endif  // PDF_ENABLE_XFA | 
|  | 
| -  CFX_PathData* LoadGlyphPath(uint32_t glyph_index, int dest_width = 0); | 
| +  const CFX_GlyphBitmap* LoadGlyphBitmap(uint32_t glyph_index, | 
| +                                         FX_BOOL bFontStyle, | 
| +                                         const CFX_Matrix* pMatrix, | 
| +                                         int dest_width, | 
| +                                         int anti_alias, | 
| +                                         int& text_flags) const; | 
| +  const CFX_PathData* LoadGlyphPath(uint32_t glyph_index, int dest_width) const; | 
| + | 
| +#ifdef _SKIA_SUPPORT_ | 
| +  CFX_TypeFace* GetDeviceCache() const; | 
| +#endif | 
| + | 
| int GetGlyphWidth(uint32_t glyph_index); | 
| int GetAscent() const; | 
| int GetDescent() const; | 
| @@ -148,7 +159,7 @@ class CFX_Font { | 
| #endif | 
| uint8_t* GetFontData() const { return m_pFontData; } | 
| uint32_t GetSize() const { return m_dwSize; } | 
| -  void AdjustMMParams(int glyph_index, int width, int weight); | 
| +  void AdjustMMParams(int glyph_index, int width, int weight) const; | 
|  | 
| static const size_t kAngleSkewArraySize = 30; | 
| static const char s_AngleSkew[kAngleSkewArraySize]; | 
| @@ -165,10 +176,20 @@ class CFX_Font { | 
| #endif  // PDF_ENABLE_XFA | 
|  | 
| private: | 
| +  friend class CFX_FaceCache; | 
| +  CFX_PathData* LoadGlyphPathImpl(uint32_t glyph_index, | 
| +                                  int dest_width = 0) const; | 
| + | 
| + private: | 
| +  CFX_FaceCache* GetFaceCache() const; | 
| + | 
| void ReleasePlatformResource(); | 
| void DeleteFace(); | 
|  | 
| +  void ClearFaceCache(); | 
| + | 
| FXFT_Face m_Face; | 
| +  mutable CFX_FaceCache* m_FaceCache;  // not owned. | 
| std::unique_ptr<CFX_SubstFont> m_pSubstFont; | 
| std::vector<uint8_t> m_pFontDataAllocation; | 
| uint8_t* m_pFontData; | 
| @@ -198,12 +219,6 @@ class CFX_FontFaceInfo { | 
| uint32_t m_Charsets; | 
| }; | 
|  | 
| -class CFX_CountedFaceCache { | 
| - public: | 
| -  CFX_FaceCache* m_Obj; | 
| -  uint32_t m_nCount; | 
| -}; | 
| - | 
| class CFX_GlyphBitmap { | 
| public: | 
| int m_Top; | 
|  |