| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkPanose_DEFINED |
| #define SkPanose_DEFINED |
| |
| #include "SkOTTableTypes.h" |
| |
| #pragma pack(push, 1) |
| |
| struct SkPanose { |
| //This value changes the meaning of the following 9 bytes. |
| enum class FamilyType : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| TextAndDisplay = 2, |
| Script = 3, |
| Decorative = 4, |
| Pictoral = 5, |
| } bFamilyType; |
| |
| union Data { |
| struct TextAndDisplay { |
| enum class SerifStyle : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Cove = 2, |
| ObtuseCove = 3, |
| SquareCove = 4, |
| ObtuseSquareCove = 5, |
| Square = 6, |
| Thin = 7, |
| Bone = 8, |
| Exaggerated = 9, |
| Triangle = 10, |
| NormalSans = 11, |
| ObtuseSans = 12, |
| PerpSans = 13, |
| Flared = 14, |
| Rounded = 15, |
| } bSerifStyle; |
| |
| enum class Weight : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| VeryLight = 2, |
| Light = 3, |
| Thin = 4, |
| Book = 5, |
| Medium = 6, |
| Demi = 7, |
| Bold = 8, |
| Heavy = 9, |
| Black = 10, |
| ExtraBlack = 11, |
| } bWeight; |
| |
| enum class Proportion : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| OldStyle = 2, |
| Modern = 3, |
| EvenWidth = 4, |
| Expanded = 5, |
| Condensed = 6, |
| VeryExpanded = 7, |
| VeryCondensed = 8, |
| Monospaced = 9, |
| } bProportion; |
| |
| enum class Contrast : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None = 2, |
| VeryLow = 3, |
| Low = 4, |
| MediumLow = 5, |
| Medium = 6, |
| MediumHigh = 7, |
| High = 8, |
| VeryHigh = 9, |
| } bContrast; |
| |
| #ifdef SK_WIN_PANOSE |
| //This is what Windows (and FontForge and Apple TT spec) define. |
| //The Impact font uses 9. |
| enum class StrokeVariation : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| GradualDiagonal = 2, |
| GradualTransitional = 3, |
| GradualVertical = 4, |
| GradualHorizontal = 5, |
| RapidVertical = 6, |
| RapidHorizontal = 7, |
| InstantVertical = 8, |
| } bStrokeVariation; |
| #else |
| //Stroke variation description in OT OS/2 ver0,ver1 is incorrect. |
| //This is what HP Panose says. |
| enum class StrokeVariation : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| NoVariation = 2, |
| Gradual_Diagonal = 3, |
| Gradual_Transitional = 4, |
| Gradual_Vertical = 5, |
| Gradual_Horizontal = 6, |
| Rapid_Vertical = 7, |
| Rapid_Horizontal = 8, |
| Instant_Vertical = 9, |
| Instant_Horizontal = 10, |
| } bStrokeVariation; |
| #endif |
| |
| enum class ArmStyle : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| StraightArms_Horizontal = 2, |
| StraightArms_Wedge = 3, |
| StraightArms_Vertical = 4, |
| StraightArms_SingleSerif = 5, |
| StraightArms_DoubleSerif = 6, |
| NonStraightArms_Horizontal = 7, |
| NonStraightArms_Wedge = 8, |
| NonStraightArms_Vertical = 9, |
| NonStraightArms_SingleSerif = 10, |
| NonStraightArms_DoubleSerif = 11, |
| } bArmStyle; |
| |
| enum class Letterform : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Normal_Contact = 2, |
| Normal_Weighted = 3, |
| Normal_Boxed = 4, |
| Normal_Flattened = 5, |
| Normal_Rounded = 6, |
| Normal_OffCenter = 7, |
| Normal_Square = 8, |
| Oblique_Contact = 9, |
| Oblique_Weighted = 10, |
| Oblique_Boxed = 11, |
| Oblique_Flattened = 12, |
| Oblique_Rounded = 13, |
| Oblique_OffCenter = 14, |
| Oblique_Square = 15, |
| } bLetterform; |
| |
| enum class Midline : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Standard_Trimmed = 2, |
| Standard_Pointed = 3, |
| Standard_Serifed = 4, |
| High_Trimmed = 5, |
| High_Pointed = 6, |
| High_Serifed = 7, |
| Constant_Trimmed = 8, |
| Constant_Pointed = 9, |
| Constant_Serifed = 10, |
| Low_Trimmed = 11, |
| Low_Pointed = 12, |
| Low_Serifed = 13, |
| } bMidline; |
| |
| enum class XHeight : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Constant_Small = 2, |
| Constant_Standard = 3, |
| Constant_Large = 4, |
| Ducking_Small = 5, |
| Ducking_Standard = 6, |
| Ducking_Large = 7, |
| } bXHeight; |
| } textAndDisplay; |
| |
| struct Script { |
| enum class ToolKind : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| FlatNib = 2, |
| PressurePoint = 3, |
| Engraved = 4, |
| Ball = 5, |
| Brush = 6, |
| Rough = 7, |
| FeltPen = 8, |
| WildBrush = 9, |
| } bToolKind; |
| |
| enum class Weight : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| VeryLight = 2, |
| Light = 3, |
| Thin = 4, |
| Book = 5, |
| Medium = 6, |
| Demi = 7, |
| Bold = 8, |
| Heavy = 9, |
| Black = 10, |
| ExtraBlack = 11, |
| } bWeight; |
| |
| enum class Spacing : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| ProportionalSpaced = 2, |
| Monospaced = 3, |
| } bSpacing; |
| |
| enum class AspectRatio : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| VeryCondensed = 2, |
| Condensed = 3, |
| Normal = 4, |
| Expanded = 5, |
| VeryExpanded = 6, |
| } bAspectRatio; |
| |
| enum class Contrast : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None = 2, |
| VeryLow = 3, |
| Low = 4, |
| MediumLow = 5, |
| Medium = 6, |
| MediumHigh = 7, |
| High = 8, |
| VeryHigh = 9, |
| } bContrast; |
| |
| enum class Topology : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Roman_Disconnected = 2, |
| Roman_Trailing = 3, |
| Roman_Connected = 4, |
| Cursive_Disconnected = 5, |
| Cursive_Trailing = 6, |
| Cursive_Connected = 7, |
| Blackletter_Disconnected = 8, |
| Blackletter_Trailing = 9, |
| Blackletter_Connected = 10, |
| } bTopology; |
| |
| enum class Form : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Upright_NoWrapping = 2, |
| Upright_SomeWrapping = 3, |
| Upright_MoreWrapping = 4, |
| Upright_ExtremeWrapping = 5, |
| Oblique_NoWrapping = 6, |
| Oblique_SomeWrapping = 7, |
| Oblique_MoreWrapping = 8, |
| Oblique_ExtremeWrapping = 9, |
| Exaggerated_NoWrapping = 10, |
| Exaggerated_SomeWrapping = 11, |
| Exaggerated_MoreWrapping = 12, |
| Exaggerated_ExtremeWrapping = 13, |
| } bForm; |
| |
| enum class Finials : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None_NoLoops = 2, |
| None_ClosedLoops = 3, |
| None_OpenLoops = 4, |
| Sharp_NoLoops = 5, |
| Sharp_ClosedLoops = 6, |
| Sharp_OpenLoops = 7, |
| Tapered_NoLoops = 8, |
| Tapered_ClosedLoops = 9, |
| Tapered_OpenLoops = 10, |
| Round_NoLoops = 11, |
| Round_ClosedLoops = 12, |
| Round_OpenLoops = 13, |
| } bFinials; |
| |
| enum class XAscent : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| VeryLow = 2, |
| Low = 3, |
| Medium = 4, |
| High = 5, |
| VeryHigh = 6, |
| } bXAscent; |
| } script; |
| |
| struct Decorative { |
| enum class Class : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Derivative = 2, |
| NonStandard_Topology = 3, |
| NonStandard_Elements = 4, |
| NonStandard_Aspect = 5, |
| Initials = 6, |
| Cartoon = 7, |
| PictureStems = 8, |
| Ornamented = 9, |
| TextAndBackground = 10, |
| Collage = 11, |
| Montage = 12, |
| } bClass; |
| |
| enum class Weight : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| VeryLight = 2, |
| Light = 3, |
| Thin = 4, |
| Book = 5, |
| Medium = 6, |
| Demi = 7, |
| Bold = 8, |
| Heavy = 9, |
| Black = 10, |
| ExtraBlack = 11, |
| } bWeight; |
| |
| enum class Aspect : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| SuperCondensed = 2, |
| VeryCondensed = 3, |
| Condensed = 4, |
| Normal = 5, |
| Extended = 6, |
| VeryExtended = 7, |
| SuperExtended = 8, |
| Monospaced = 9, |
| } bAspect; |
| |
| enum class Contrast : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None = 2, |
| VeryLow = 3, |
| Low = 4, |
| MediumLow = 5, |
| Medium = 6, |
| MediumHigh = 7, |
| High = 8, |
| VeryHigh = 9, |
| HorizontalLow = 10, |
| HorizontalMedium = 11, |
| HorizontalHigh = 12, |
| Broken = 13, |
| } bContrast; |
| |
| enum class SerifVariant : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Cove = 2, |
| ObtuseCove = 3, |
| SquareCove = 4, |
| ObtuseSquareCove = 5, |
| Square = 6, |
| Thin = 7, |
| Oval = 8, |
| Exaggerated = 9, |
| Triangle = 10, |
| NormalSans = 11, |
| ObtuseSans = 12, |
| PerpendicularSans = 13, |
| Flared = 14, |
| Rounded = 15, |
| Script = 16, |
| } bSerifVariant; |
| |
| enum class Treatment : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None_StandardSolidFill = 2, |
| White_NoFill = 3, |
| PatternedFill = 4, |
| ComplexFill = 5, |
| ShapedFill = 6, |
| DrawnDistressed = 7, |
| } bTreatment; |
| |
| enum class Lining : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| None = 2, |
| Inline = 3, |
| Outline = 4, |
| Engraved = 5, |
| Shadow = 6, |
| Relief = 7, |
| Backdrop = 8, |
| } bLining; |
| |
| enum class Topology : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Standard = 2, |
| Square = 3, |
| MultipleSegment = 4, |
| DecoWacoMidlines = 5, |
| UnevenWeighting = 6, |
| DiverseArms = 7, |
| DiverseForms = 8, |
| LombardicForms = 9, |
| UpperCaseInLowerCase = 10, |
| ImpliedTopology = 11, |
| HorseshoeEandA = 12, |
| Cursive = 13, |
| Blackletter = 14, |
| SwashVariance = 15, |
| } bTopology; |
| |
| enum class RangeOfCharacters : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| ExtendedCollection = 2, |
| Litterals = 3, |
| NoLowerCase = 4, |
| SmallCaps = 5, |
| } bRangeOfCharacters; |
| } decorative; |
| |
| struct Pictoral { |
| enum class Kind : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| Montages = 2, |
| Pictures = 3, |
| Shapes = 4, |
| Scientific = 5, |
| Music = 6, |
| Expert = 7, |
| Patterns = 8, |
| Boarders = 9, |
| Icons = 10, |
| Logos = 11, |
| IndustrySpecific = 12, |
| } bKind; |
| |
| enum class Weight : SK_OT_BYTE { |
| NoFit = 1, |
| } bWeight; |
| |
| enum class Spacing : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| ProportionalSpaced = 2, |
| Monospaced = 3, |
| } bSpacing; |
| |
| enum class AspectRatioAndContrast : SK_OT_BYTE { |
| NoFit = 1, |
| } bAspectRatioAndContrast; |
| |
| enum class AspectRatio94 : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| NoWidth = 2, |
| ExceptionallyWide = 3, |
| SuperWide = 4, |
| VeryWide = 5, |
| Wide = 6, |
| Normal = 7, |
| Narrow = 8, |
| VeryNarrow = 9, |
| } bAspectRatio94; |
| |
| enum class AspectRatio119 : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| NoWidth = 2, |
| ExceptionallyWide = 3, |
| SuperWide = 4, |
| VeryWide = 5, |
| Wide = 6, |
| Normal = 7, |
| Narrow = 8, |
| VeryNarrow = 9, |
| } bAspectRatio119; |
| |
| enum class AspectRatio157 : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| NoWidth = 2, |
| ExceptionallyWide = 3, |
| SuperWide = 4, |
| VeryWide = 5, |
| Wide = 6, |
| Normal = 7, |
| Narrow = 8, |
| VeryNarrow = 9, |
| } bAspectRatio157; |
| |
| enum class AspectRatio163 : SK_OT_BYTE { |
| Any = 0, |
| NoFit = 1, |
| NoWidth = 2, |
| ExceptionallyWide = 3, |
| SuperWide = 4, |
| VeryWide = 5, |
| Wide = 6, |
| Normal = 7, |
| Narrow = 8, |
| VeryNarrow = 9, |
| } bAspectRatio163; |
| } pictoral; |
| } data; |
| }; |
| |
| #pragma pack(pop) |
| |
| |
| static_assert(sizeof(SkPanose) == 10, "sizeof_SkPanose_not_10"); |
| |
| #endif |