| // Copyright 2020 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef XFA_FWL_THEME_CFWL_FONTMANAGER_H_ |
| #define XFA_FWL_THEME_CFWL_FONTMANAGER_H_ |
| |
| #include <memory> |
| #include <vector> |
| |
| #include "core/fxcrt/fx_codepage.h" |
| #include "core/fxcrt/fx_string.h" |
| #include "core/fxcrt/fx_system.h" |
| #include "core/fxcrt/retain_ptr.h" |
| |
| class CFGAS_GEFont; |
| |
| class CFWL_FontManager final { |
| public: |
| static CFWL_FontManager* GetInstance(); |
| static void DestroyInstance(); |
| |
| RetainPtr<CFGAS_GEFont> FindFont(WideStringView wsFontFamily, |
| uint32_t dwFontStyles, |
| FX_CodePage dwCodePage); |
| |
| private: |
| class FontData final { |
| public: |
| FontData(); |
| ~FontData(); |
| |
| bool Equal(WideStringView wsFontFamily, |
| uint32_t dwFontStyles, |
| FX_CodePage wCodePage); |
| bool LoadFont(WideStringView wsFontFamily, |
| uint32_t dwFontStyles, |
| FX_CodePage wCodePage); |
| RetainPtr<CFGAS_GEFont> GetFont() const; |
| |
| private: |
| WideString m_wsFamily; |
| uint32_t m_dwStyles = 0; |
| FX_CodePage m_dwCodePage = FX_CodePage::kDefANSI; |
| RetainPtr<CFGAS_GEFont> m_pFont; |
| }; |
| |
| CFWL_FontManager(); |
| ~CFWL_FontManager(); |
| |
| std::vector<std::unique_ptr<FontData>> m_FontsArray; |
| }; |
| |
| #endif // XFA_FWL_THEME_CFWL_FONTMANAGER_H_ |