11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */ 81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef SkPDFFontImpl_DEFINED 111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define SkPDFFontImpl_DEFINED 121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#include "SkPDFFont.h" 141cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 151cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkPDFType0Font : public SkPDFFont { 161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual ~SkPDFType0Font(); 181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool multiByteGlyphs() const { return true; } 191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SK_API virtual SkPDFFont* getFontSubset(const SkPDFGlyphSet* usage); 201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef SK_DEBUG 211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual void emitObject(SkWStream* stream, SkPDFCatalog* catalog, 221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool indirect); 231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate: 261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger friend class SkPDFFont; // to access the constructor 271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifdef SK_DEBUG 281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool fPopulated; 291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger typedef SkPDFDict INHERITED; 301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SkPDFType0Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface); 331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool populate(const SkPDFGlyphSet* subset); 351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkPDFCIDFont : public SkPDFFont { 381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual ~SkPDFCIDFont(); 401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool multiByteGlyphs() const { return true; } 411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate: 431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger friend class SkPDFType0Font; // to access the constructor 441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SkPDFCIDFont(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface, 461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger const SkPDFGlyphSet* subset); 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool populate(const SkPDFGlyphSet* subset); 491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool addFontDescriptor(int16_t defaultWidth, 501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger const SkTDArray<uint32_t>* subset); 511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 521cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 531cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkPDFType1Font : public SkPDFFont { 541cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 551cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual ~SkPDFType1Font(); 561cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool multiByteGlyphs() const { return false; } 571cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 581cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate: 591cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger friend class SkPDFFont; // to access the constructor 601cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 611cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SkPDFType1Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface, 621cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger uint16_t glyphID, SkPDFDict* relatedFontDescriptor); 631cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 641cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool populate(int16_t glyphID); 651cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool addFontDescriptor(int16_t defaultWidth); 661cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger void addWidthInfoFromRange(int16_t defaultWidth, 671cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger const SkAdvancedTypefaceMetrics::WidthRange* widthRangeEntry); 681cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 691cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 701cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass SkPDFType3Font : public SkPDFFont { 711cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic: 721cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual ~SkPDFType3Font(); 731cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger virtual bool multiByteGlyphs() const { return false; } 741cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 751cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate: 761cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger friend class SkPDFFont; // to access the constructor 771cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 781cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger SkPDFType3Font(SkAdvancedTypefaceMetrics* info, SkTypeface* typeface, 791cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger uint16_t glyphID, SkPDFDict* relatedFontDescriptor); 801cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 811cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger bool populate(int16_t glyphID); 821cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger}; 831cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 841cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif 85