123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527 |
- /*
- * 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 "src/sfnt/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
|