/* * Copyright 2011 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkAdvancedTypefaceMetrics_DEFINED #define SkAdvancedTypefaceMetrics_DEFINED #include "include/core/SkRect.h" #include "include/core/SkString.h" #include "include/private/SkBitmaskEnum.h" /** \class SkAdvancedTypefaceMetrics The SkAdvancedTypefaceMetrics class is used by the PDF backend to correctly embed typefaces. This class is created and filled in with information by SkTypeface::getAdvancedMetrics. */ struct SkAdvancedTypefaceMetrics { // The PostScript name of the font. See `FontName` and `BaseFont` in PDF standard. SkString fPostScriptName; SkString fFontName; // These enum values match the values used in the PDF file format. enum StyleFlags : uint32_t { kFixedPitch_Style = 0x00000001, kSerif_Style = 0x00000002, kScript_Style = 0x00000008, kItalic_Style = 0x00000040, kAllCaps_Style = 0x00010000, kSmallCaps_Style = 0x00020000, kForceBold_Style = 0x00040000 }; StyleFlags fStyle = (StyleFlags)0; // Font style characteristics. enum FontType : uint8_t { kType1_Font, kType1CID_Font, kCFF_Font, kTrueType_Font, kOther_Font, }; // The type of the underlying font program. This field determines which // of the following fields are valid. If it is kOther_Font the per glyph // information will never be populated. FontType fType = kOther_Font; enum FontFlags : uint8_t { kMultiMaster_FontFlag = 0x01, //! struct is_bitmask_enum : std::true_type {}; template <> struct is_bitmask_enum : std::true_type {}; } #endif