| // Copyright 2014 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 _PWL_FONTMAP_H_ | |
| #define _PWL_FONTMAP_H_ | |
| struct CPWL_FontMap_Data | |
| { | |
| CPDF_Font* pFont; | |
| FX_INT32 nCharset; | |
| CFX_ByteString sFontName; | |
| }; | |
| struct CPWL_FontMap_Native | |
| { | |
| FX_INT32 nCharset; | |
| CFX_ByteString sFontName; | |
| }; | |
| #ifndef ANSI_CHARSET | |
| #define ANSI_CHARSET 0 | |
| #define DEFAULT_CHARSET 1 | |
| #define SYMBOL_CHARSET 2 | |
| #define SHIFTJIS_CHARSET 128 | |
| #define HANGEUL_CHARSET 129 | |
| #define HANGUL_CHARSET 129 | |
| #define GB2312_CHARSET 134 | |
| #define CHINESEBIG5_CHARSET 136 | |
| #define OEM_CHARSET 255 | |
| #define JOHAB_CHARSET 130 | |
| #define HEBREW_CHARSET 177 | |
| #define ARABIC_CHARSET 178 | |
| #define GREEK_CHARSET 161 | |
| #define TURKISH_CHARSET 162 | |
| #define VIETNAMESE_CHARSET 163 | |
| #define THAI_CHARSET 222 | |
| #define EASTEUROPE_CHARSET 238 | |
| #define RUSSIAN_CHARSET 204 | |
| #define BALTIC_CHARSET 186 | |
| #endif | |
| #ifndef PWL_CLASS | |
| #ifdef FX_READER_DLL | |
| #define PWL_CLASS __declspec(dllexport) | |
| #else | |
| #define PWL_CLASS | |
| #endif | |
| #endif | |
| class IFX_SystemHandler; | |
| class PWL_CLASS CPWL_FontMap : public IFX_Edit_FontMap | |
| { | |
| public: | |
| CPWL_FontMap(IFX_SystemHandler* pSystemHandler); | |
| virtual ~CPWL_FontMap(); | |
| virtual CPDF_Font* GetPDFFont(FX_INT32 nFontIndex); | |
| virtual CFX_ByteString GetPDFFontAlias(FX_INT32 nFontIndex); | |
| virtual FX_INT32 GetWordFontIndex(FX_WORD word, FX_INT32 nCharset, FX_INT32 nFontIndex); | |
| virtual FX_INT32 CharCodeFromUnicode(FX_INT32 nFontIndex, FX_WORD word); | |
| virtual FX_INT32 CharSetFromUnicode(FX_WORD word, FX_INT32 nOldCharset); | |
| public: | |
| virtual void Initial(FX_LPCSTR fontname = NULL); | |
| void SetSystemHandler(IFX_SystemHandler* pSystemHandler); | |
| FX_INT32 GetFontMapCount() const; | |
| const CPWL_FontMap_Data* GetFontMapData(FX_INT32 nIndex) const; | |
| public: | |
| static FX_INT32 GetNativeCharset(); | |
| CFX_ByteString GetNativeFontName(FX_INT32 nCharset); | |
| static CFX_ByteString GetDefaultFontByCharset(FX_INT32 nCharset); | |
| CPDF_Font* AddFontToDocument(CPDF_Document* pDoc, CFX_ByteString& sFontName, FX_BYTE nCharset); | |
| static FX_BOOL IsStandardFont(const CFX_ByteString& sFontName); | |
| CPDF_Font* AddStandardFont(CPDF_Document* pDoc, CFX_ByteString& sFontName); | |
| CPDF_Font* AddSystemFont(CPDF_Document* pDoc, CFX_ByteString& sFontName, | |
| FX_BYTE nCharset); | |
| protected: | |
| virtual CPDF_Font* FindFontSameCharset(CFX_ByteString& sFontAlias, FX_INT32 nCharset); | |
| virtual void AddedFont(CPDF_Font* pFont, const CFX_ByteString& sFontAlias); | |
| FX_BOOL KnowWord(FX_INT32 nFontIndex, FX_WORD word); | |
| virtual CPDF_Document* GetDocument(); | |
| void Empty(); | |
| FX_INT32 GetFontIndex(const CFX_ByteString& sFontName, FX_INT32 nCharset, FX_BOOL bFind); | |
| FX_INT32 GetPWLFontIndex(FX_WORD word, FX_INT32 nCharset); | |
| FX_INT32 AddFontData(CPDF_Font* pFont, const CFX_ByteString& sFontAlias, FX_INT32 nCharset = DEFAULT_CHARSET); | |
| CFX_ByteString EncodeFontAlias(const CFX_ByteString& sFontName, FX_INT32 nCharset); | |
| CFX_ByteString EncodeFontAlias(const CFX_ByteString& sFontName); | |
| private: | |
| CFX_ByteString GetFontName(FX_INT32 nFontIndex); | |
| FX_INT32 FindFont(const CFX_ByteString& sFontName, FX_INT32 nCharset = DEFAULT_CHARSET); | |
| CFX_ByteString GetNativeFont(FX_INT32 nCharset); | |
| public: | |
| struct CharsetFontMap { | |
| FX_INT32 charset; | |
| const char* fontname; | |
| }; | |
| static const CharsetFontMap defaultTTFMap[]; | |
| protected: | |
| CFX_ArrayTemplate<CPWL_FontMap_Data*> m_aData; | |
| CFX_ArrayTemplate<CPWL_FontMap_Native*> m_aNativeFont; | |
| private: | |
| CPDF_Document* m_pPDFDoc; | |
| IFX_SystemHandler* m_pSystemHandler; | |
| }; | |
| class PWL_CLASS CPWL_DocFontMap : public CPWL_FontMap | |
| { | |
| public: | |
| CPWL_DocFontMap(IFX_SystemHandler* pSystemHandler, CPDF_Document* pAttachedDoc); | |
| virtual ~CPWL_DocFontMap(); | |
| virtual CPDF_Document* GetDocument(); | |
| private: | |
| CPDF_Document* m_pAttachedDoc; | |
| }; | |
| #endif |