• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     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(const SkAdvancedTypefaceMetrics* info, SkTypeface* typeface);
33 
34     bool populate(const SkPDFGlyphSet* subset);
35 };
36 
37 class SkPDFCIDFont : public SkPDFFont {
38 public:
39     virtual ~SkPDFCIDFont();
multiByteGlyphs()40     virtual bool multiByteGlyphs() const { return true; }
41 
42 private:
43     friend class SkPDFType0Font;  // to access the constructor
44 
45     SkPDFCIDFont(const 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();
multiByteGlyphs()56     virtual bool multiByteGlyphs() const { return false; }
57 
58 private:
59     friend class SkPDFFont;  // to access the constructor
60 
61     SkPDFType1Font(const 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();
multiByteGlyphs()73     virtual bool multiByteGlyphs() const { return false; }
74 
75 private:
76     friend class SkPDFFont;  // to access the constructor
77 
78     SkPDFType3Font(const SkAdvancedTypefaceMetrics* info,
79                    SkTypeface* typeface, uint16_t glyphID);
80 
81     bool populate(uint16_t glyphID);
82 };
83 
84 #endif
85