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_SIMPLEFONT_H_
      8 #define CORE_FPDFAPI_FONT_CPDF_SIMPLEFONT_H_
      9 
     10 #include <vector>
     11 
     12 #include "core/fpdfapi/font/cpdf_font.h"
     13 #include "core/fpdfapi/font/cpdf_fontencoding.h"
     14 #include "core/fxcrt/fx_string.h"
     15 #include "core/fxcrt/fx_system.h"
     16 
     17 class CPDF_SimpleFont : public CPDF_Font {
     18  public:
     19   CPDF_SimpleFont();
     20   ~CPDF_SimpleFont() override;
     21 
     22   // CPDF_Font
     23   int GetCharWidthF(uint32_t charcode) override;
     24   FX_RECT GetCharBBox(uint32_t charcode) override;
     25   int GlyphFromCharCode(uint32_t charcode, bool* pVertGlyph) override;
     26   bool IsUnicodeCompatible() const override;
     27   WideString UnicodeFromCharCode(uint32_t charcode) const override;
     28   uint32_t CharCodeFromUnicode(wchar_t Unicode) const override;
     29 
     30   CPDF_FontEncoding* GetEncoding() { return &m_Encoding; }
     31 
     32   bool HasFontWidths() const override;
     33 
     34  protected:
     35   virtual void LoadGlyphMap() = 0;
     36 
     37   bool LoadCommon();
     38   void LoadSubstFont();
     39   void LoadCharMetrics(int charcode);
     40 
     41   CPDF_FontEncoding m_Encoding;
     42   uint16_t m_GlyphIndex[256];
     43   uint16_t m_ExtGID[256];
     44   std::vector<ByteString> m_CharNames;
     45   int m_BaseEncoding;
     46   uint16_t m_CharWidth[256];
     47   FX_RECT m_CharBBox[256];
     48   bool m_bUseFontWidth;
     49 };
     50 
     51 #endif  // CORE_FPDFAPI_FONT_CPDF_SIMPLEFONT_H_
     52