blob: 61983a409271fca15f16c40a0b0ae3ca1c578538 [file] [log] [blame]
epoger@google.comec3ed6a2011-07-28 14:26:00 +00001
vandebo@chromium.org98594282011-07-25 22:34:12 +00002/*
epoger@google.comec3ed6a2011-07-28 14:26:00 +00003 * Copyright 2011 Google Inc.
vandebo@chromium.org98594282011-07-25 22:34:12 +00004 *
epoger@google.comec3ed6a2011-07-28 14:26:00 +00005 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file.
vandebo@chromium.org98594282011-07-25 22:34:12 +00007 */
8
epoger@google.comec3ed6a2011-07-28 14:26:00 +00009
vandebo@chromium.org98594282011-07-25 22:34:12 +000010#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, const SkPDFGlyphSet* subset);
50};
51
52class SkPDFType1Font : public SkPDFFont {
53public:
54 virtual ~SkPDFType1Font();
55 virtual bool multiByteGlyphs() const { return false; }
56
57private:
58 friend class SkPDFFont; // to access the constructor
59
60 SkPDFType1Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
61 uint16_t glyphID, SkPDFDict* relatedFontDescriptor);
62
63 bool populate(int16_t glyphID);
64 bool addFontDescriptor(int16_t defaultWidth);
65 void addWidthInfoFromRange(int16_t defaultWidth,
66 const SkAdvancedTypefaceMetrics::WidthRange* widthRangeEntry);
67};
68
69class SkPDFType3Font : public SkPDFFont {
70public:
71 virtual ~SkPDFType3Font();
72 virtual bool multiByteGlyphs() const { return false; }
73
74private:
75 friend class SkPDFFont; // to access the constructor
76
77 SkPDFType3Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface,
78 uint16_t glyphID, SkPDFDict* relatedFontDescriptor);
79
80 bool populate(int16_t glyphID);
81};
82
83#endif