diff options
Diffstat (limited to 'xfa/fgas/font/cfgas_pdffontmgr.h')
-rw-r--r-- | xfa/fgas/font/cfgas_pdffontmgr.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/xfa/fgas/font/cfgas_pdffontmgr.h b/xfa/fgas/font/cfgas_pdffontmgr.h new file mode 100644 index 0000000000..8a09a95bd1 --- /dev/null +++ b/xfa/fgas/font/cfgas_pdffontmgr.h @@ -0,0 +1,59 @@ +// Copyright 2017 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_FGAS_FONT_CFGAS_PDFFONTMGR_H_ +#define XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ + +#include <map> + +#include "core/fpdfapi/parser/cpdf_dictionary.h" +#include "core/fpdfapi/parser/cpdf_document.h" +#include "core/fxcrt/cfx_observable.h" +#include "core/fxcrt/cfx_retain_ptr.h" +#include "core/fxcrt/fx_string.h" + +class CFGAS_FontMgr; +class CFGAS_GEFont; +class CPDF_Document; +class CPDF_Font; + +class CFGAS_PDFFontMgr : public CFX_Observable<CFGAS_PDFFontMgr> { + public: + explicit CFGAS_PDFFontMgr(CPDF_Document* pDoc, CFGAS_FontMgr* pFontMgr); + ~CFGAS_PDFFontMgr(); + + CFX_RetainPtr<CFGAS_GEFont> GetFont(const WideStringView& wsFontFamily, + uint32_t dwFontStyles, + CPDF_Font** pPDFFont, + bool bStrictMatch); + bool GetCharWidth(const CFX_RetainPtr<CFGAS_GEFont>& pFont, + wchar_t wUnicode, + bool bCharCode, + int32_t* pWidth); + void SetFont(const CFX_RetainPtr<CFGAS_GEFont>& pFont, CPDF_Font* pPDFFont); + + private: + CFX_RetainPtr<CFGAS_GEFont> FindFont(const ByteString& strFamilyName, + bool bBold, + bool bItalic, + CPDF_Font** pPDFFont, + bool bStrictMatch); + ByteString PsNameToFontName(const ByteString& strPsName, + bool bBold, + bool bItalic); + bool PsNameMatchDRFontName(const ByteStringView& bsPsName, + bool bBold, + bool bItalic, + const ByteString& bsDRFontName, + bool bStrictMatch); + + CFX_UnownedPtr<CPDF_Document> const m_pDoc; + CFX_UnownedPtr<CFGAS_FontMgr> const m_pFontMgr; + std::map<CFX_RetainPtr<CFGAS_GEFont>, CPDF_Font*> m_FDE2PDFFont; + std::map<ByteString, CFX_RetainPtr<CFGAS_GEFont>> m_FontMap; +}; + +#endif // XFA_FGAS_FONT_CFGAS_PDFFONTMGR_H_ |