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 15class SkPDFType0Font : public SkPDFFont { 16public: 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 25private: 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 37class SkPDFCIDFont : public SkPDFFont { 38public: 39 virtual ~SkPDFCIDFont(); 40 virtual bool multiByteGlyphs() const { return true; } 41 42private: 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 53class SkPDFType1Font : public SkPDFFont { 54public: 55 virtual ~SkPDFType1Font(); 56 virtual bool multiByteGlyphs() const { return false; } 57 58private: 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 70class SkPDFType3Font : public SkPDFFont { 71public: 72 virtual ~SkPDFType3Font(); 73 virtual bool multiByteGlyphs() const { return false; } 74 75private: 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