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(); multiByteGlyphs()18 virtual bool multiByteGlyphs() const { return true; } 19 virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage); 20 #ifdef SK_DEBUG 21 virtual void emitObject(SkWStream*, 22 const SkPDFObjNumMap&, 23 const SkPDFSubstituteMap&); 24 #endif 25 26 private: 27 friend class SkPDFFont; // to access the constructor 28 #ifdef SK_DEBUG 29 bool fPopulated; 30 typedef SkPDFDict INHERITED; 31 #endif 32 33 SkPDFType0Font(const SkAdvancedTypefaceMetrics* info, 34 SkTypeface* typeface); 35 36 bool populate(const SkPDFGlyphSet* subset); 37 }; 38 39 class SkPDFCIDFont : public SkPDFFont { 40 public: 41 virtual ~SkPDFCIDFont(); multiByteGlyphs()42 virtual bool multiByteGlyphs() const { return true; } 43 44 private: 45 friend class SkPDFType0Font; // to access the constructor 46 47 SkPDFCIDFont(const SkAdvancedTypefaceMetrics* info, 48 SkTypeface* typeface, 49 const SkPDFGlyphSet* subset); 50 51 bool populate(const SkPDFGlyphSet* subset); 52 bool addFontDescriptor(int16_t defaultWidth, 53 const SkTDArray<uint32_t>* subset); 54 }; 55 56 class SkPDFType1Font : public SkPDFFont { 57 public: 58 virtual ~SkPDFType1Font(); multiByteGlyphs()59 virtual bool multiByteGlyphs() const { return false; } 60 61 private: 62 friend class SkPDFFont; // to access the constructor 63 64 SkPDFType1Font(const SkAdvancedTypefaceMetrics* info, 65 SkTypeface* typeface, 66 uint16_t glyphID, 67 SkPDFDict* relatedFontDescriptor); 68 69 bool populate(int16_t glyphID); 70 bool addFontDescriptor(int16_t defaultWidth); 71 void addWidthInfoFromRange(int16_t defaultWidth, 72 const SkAdvancedTypefaceMetrics::WidthRange* widthRangeEntry); 73 }; 74 75 class SkPDFType3Font : public SkPDFFont { 76 public: 77 virtual ~SkPDFType3Font(); multiByteGlyphs()78 virtual bool multiByteGlyphs() const { return false; } 79 80 private: 81 friend class SkPDFFont; // to access the constructor 82 83 SkPDFType3Font(const SkAdvancedTypefaceMetrics* info, 84 SkTypeface* typeface, 85 uint16_t glyphID); 86 87 bool populate(uint16_t glyphID); 88 }; 89 90 #endif 91