Home | History | Annotate | Download | only in pdf
      1 
      2 /*
      3  * Copyright 2011 Google Inc.
      4  *
      5  * Use of this source code is governed by a BSD-style license that can be
      6  * found in the LICENSE file.
      7  */
      8 
      9 
     10 #ifndef SkPDFFontImpl_DEFINED
     11 #define SkPDFFontImpl_DEFINED
     12 
     13 #include "SkPDFFont.h"
     14 
     15 class SkPDFType0Font : public SkPDFFont {
     16 public:
     17     virtual ~SkPDFType0Font();
     18     virtual bool multiByteGlyphs() const { return true; }
     19     SK_API virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage);
     20 #ifdef SK_DEBUG
     21     virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog,
     22                             bool indirect);
     23 #endif
     24 
     25 private:
     26     friend class SkPDFFont;  // to access the constructor
     27 #ifdef SK_DEBUG
     28     bool fPopulated;
     29     typedef SkPDFDict INHERITED;
     30 #endif
     31 
     32     SkPDFType0Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface);
     33 
     34     bool populate(const SkPDFGlyphSet* subset);
     35 };
     36 
     37 class SkPDFCIDFont : public SkPDFFont {
     38 public:
     39     virtual ~SkPDFCIDFont();
     40     virtual bool multiByteGlyphs() const { return true; }
     41 
     42 private:
     43     friend class SkPDFType0Font;  // to access the constructor
     44 
     45     SkPDFCIDFont(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
     46                  const SkPDFGlyphSet* subset);
     47 
     48     bool populate(const SkPDFGlyphSet* subset);
     49     bool addFontDescriptor(int16_t defaultWidth,
     50                            const SkTDArray<uint32_t>* subset);
     51 };
     52 
     53 class SkPDFType1Font : public SkPDFFont {
     54 public:
     55     virtual ~SkPDFType1Font();
     56     virtual bool multiByteGlyphs() const { return false; }
     57 
     58 private:
     59     friend class SkPDFFont;  // to access the constructor
     60 
     61     SkPDFType1Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
     62                    uint16_t glyphID, SkPDFDict* relatedFontDescriptor);
     63 
     64     bool populate(int16_t glyphID);
     65     bool addFontDescriptor(int16_t defaultWidth);
     66     void addWidthInfoFromRange(int16_t defaultWidth,
     67         const SkAdvancedTypefaceMetrics::WidthRange* widthRangeEntry);
     68 };
     69 
     70 class SkPDFType3Font : public SkPDFFont {
     71 public:
     72     virtual ~SkPDFType3Font();
     73     virtual bool multiByteGlyphs() const { return false; }
     74 
     75 private:
     76     friend class SkPDFFont;  // to access the constructor
     77 
     78     SkPDFType3Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface, uint16_t glyphID);
     79 
     80     bool populate(int16_t glyphID);
     81 };
     82 
     83 #endif
     84