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/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 
     27 uint32_t FT_CharCodeFromUnicode(int encoding, FX_WCHAR unicode);
     28 FX_WCHAR FT_UnicodeFromCharCode(int encoding, uint32_t charcode);
     29 
     30 FX_WCHAR PDF_UnicodeFromAdobeName(const FX_CHAR* name);
     31 CFX_ByteString PDF_AdobeNameFromUnicode(FX_WCHAR unicode);
     32 
     33 const uint16_t* PDF_UnicodesForPredefinedCharSet(int encoding);
     34 const FX_CHAR* PDF_CharNameFromPredefinedCharSet(int encoding,
     35                                                  uint8_t charcode);
     36 
     37 class CPDF_Object;
     38 
     39 class 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