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_FPDFAPI_FONT_CPDF_FONTENCODING_H_ 8#define CORE_FPDFAPI_FONT_CPDF_FONTENCODING_H_ 9 10#include <memory> 11 12#include "core/fxcrt/cfx_string_pool_template.h" 13#include "core/fxcrt/cfx_weak_ptr.h" 14#include "core/fxcrt/fx_string.h" 15 16#define PDFFONT_ENCODING_BUILTIN 0 17#define PDFFONT_ENCODING_WINANSI 1 18#define PDFFONT_ENCODING_MACROMAN 2 19#define PDFFONT_ENCODING_MACEXPERT 3 20#define PDFFONT_ENCODING_STANDARD 4 21#define PDFFONT_ENCODING_ADOBE_SYMBOL 5 22#define PDFFONT_ENCODING_ZAPFDINGBATS 6 23#define PDFFONT_ENCODING_PDFDOC 7 24#define PDFFONT_ENCODING_MS_SYMBOL 8 25#define PDFFONT_ENCODING_UNICODE 9 26 27uint32_t FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode); 28FX_WCHAR FT_UnicodeFromCharCode(int encoding, uint32_t charcode); 29 30FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name); 31CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode); 32 33const uint16_t* PDF_UnicodesForPredefinedCharSet(int encoding); 34const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding, 35 uint8_t charcode); 36 37class CPDF_Object; 38 39class CPDF_FontEncoding { 40 public: 41 CPDF_FontEncoding(); 42 explicit CPDF_FontEncoding(int PredefinedEncoding); 43 44 void LoadEncoding(CPDF_Object* pEncoding); 45 46 bool IsIdentical(CPDF_FontEncoding* pAnother) const; 47 48 FX_WCHAR UnicodeFromCharCode(uint8_t charcode) const { 49 return m_Unicodes[charcode]; 50 } 51 int CharCodeFromUnicode(FX_WCHAR unicode) const; 52 53 void SetUnicode(uint8_t charcode, FX_WCHAR unicode) { 54 m_Unicodes[charcode] = unicode; 55 } 56 57 std::unique_ptr<CPDF_Object> Realize(CFX_WeakPtr<CFX_ByteStringPool> pPool); 58 59 public: 60 FX_WCHAR m_Unicodes[256]; 61}; 62 63#endif // CORE_FPDFAPI_FONT_CPDF_FONTENCODING_H_ 64