Home | History | Annotate | Download | only in font
      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/fx_string.h"
     13 #include "core/fxcrt/string_pool_template.h"
     14 #include "core/fxcrt/weak_ptr.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 
     26 uint32_t FT_CharCodeFromUnicode(int encoding, wchar_t unicode);
     27 wchar_t FT_UnicodeFromCharCode(int encoding, uint32_t charcode);
     28 
     29 wchar_t PDF_UnicodeFromAdobeName(const char* name);
     30 ByteString PDF_AdobeNameFromUnicode(wchar_t unicode);
     31 
     32 const uint16_t* PDF_UnicodesForPredefinedCharSet(int encoding);
     33 const char* PDF_CharNameFromPredefinedCharSet(int encoding, uint8_t charcode);
     34 
     35 class CPDF_Object;
     36 
     37 class CPDF_FontEncoding {
     38  public:
     39   CPDF_FontEncoding();
     40   explicit CPDF_FontEncoding(int PredefinedEncoding);
     41 
     42   void LoadEncoding(CPDF_Object* pEncoding);
     43 
     44   bool IsIdentical(CPDF_FontEncoding* pAnother) const;
     45 
     46   wchar_t UnicodeFromCharCode(uint8_t charcode) const {
     47     return m_Unicodes[charcode];
     48   }
     49   int CharCodeFromUnicode(wchar_t unicode) const;
     50 
     51   void SetUnicode(uint8_t charcode, wchar_t unicode) {
     52     m_Unicodes[charcode] = unicode;
     53   }
     54 
     55   std::unique_ptr<CPDF_Object> Realize(WeakPtr<ByteStringPool> pPool);
     56 
     57  public:
     58   wchar_t m_Unicodes[256];
     59 };
     60 
     61 #endif  // CORE_FPDFAPI_FONT_CPDF_FONTENCODING_H_
     62