| /* | |
| * 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 |