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