diff options
Diffstat (limited to 'sfnt/SkPanose.h')
-rw-r--r-- | sfnt/SkPanose.h | 639 |
1 files changed, 639 insertions, 0 deletions
diff --git a/sfnt/SkPanose.h b/sfnt/SkPanose.h new file mode 100644 index 00000000..873c093f --- /dev/null +++ b/sfnt/SkPanose.h @@ -0,0 +1,639 @@ +/* + * 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" +#include "SkTypedEnum.h" + +#pragma pack(push, 1) + +struct SkPanose { + //This value changes the meaning of the following 9 bytes. + struct FamilyType { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((TextAndDisplay, 2)) + ((Script, 3)) + ((Decorative, 4)) + ((Pictoral, 5)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bFamilyType; + + union Data { + struct TextAndDisplay { + struct SerifStyle { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bSerifStyle; + + struct Weight { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bWeight; + + struct Proportion { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((OldStyle, 2)) + ((Modern, 3)) + ((EvenWidth, 4)) + ((Expanded, 5)) + ((Condensed, 6)) + ((VeryExpanded, 7)) + ((VeryCondensed, 8)) + ((Monospaced, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bProportion; + + struct Contrast { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((None, 2)) + ((VeryLow, 3)) + ((Low, 4)) + ((MediumLow, 5)) + ((Medium, 6)) + ((MediumHigh, 7)) + ((High, 8)) + ((VeryHigh, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bContrast; + +#ifdef SK_WIN_PANOSE + //This is what Windows (and FontForge and Apple TT spec) define. + //The Impact font uses 9. + struct StrokeVariation { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((GradualDiagonal, 2)) + ((GradualTransitional, 3)) + ((GradualVertical, 4)) + ((GradualHorizontal, 5)) + ((RapidVertical, 6)) + ((RapidHorizontal, 7)) + ((InstantVertical, 8)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bStrokeVariation; +#else + //Stroke variation description in OT OS/2 ver0,ver1 is incorrect. + //This is what HP Panose says. + struct StrokeVariation { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bStrokeVariation; +#endif + + struct ArmStyle { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bArmStyle; + + struct Letterform { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bLetterform; + + struct Midline { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bMidline; + + struct XHeight { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bXHeight; + } textAndDisplay; + + struct Script { + struct ToolKind { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((FlatNib, 2)) + ((PressurePoint, 3)) + ((Engraved, 4)) + ((Ball, 5)) + ((Brush, 6)) + ((Rough, 7)) + ((FeltPen, 8)) + ((WildBrush, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bToolKind; + + struct Weight { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bWeight; + + struct Spacing { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((ProportionalSpaced, 2)) + ((Monospaced, 3)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bSpacing; + + struct AspectRatio { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((VeryCondensed, 2)) + ((Condensed, 3)) + ((Normal, 4)) + ((Expanded, 5)) + ((VeryExpanded, 6)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatio; + + struct Contrast { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((None, 2)) + ((VeryLow, 3)) + ((Low, 4)) + ((MediumLow, 5)) + ((Medium, 6)) + ((MediumHigh, 7)) + ((High, 8)) + ((VeryHigh, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bContrast; + + struct Topology { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bTopology; + + struct Form { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bForm; + + struct Finials { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bFinials; + + struct XAscent { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((VeryLow, 2)) + ((Low, 3)) + ((Medium, 4)) + ((High, 5)) + ((VeryHigh, 6)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bXAscent; + } script; + + struct Decorative { + struct Class { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bClass; + + struct Weight { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bWeight; + + struct Aspect { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((SuperCondensed, 2)) + ((VeryCondensed, 3)) + ((Condensed, 4)) + ((Normal, 5)) + ((Extended, 6)) + ((VeryExtended, 7)) + ((SuperExtended, 8)) + ((Monospaced, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspect; + + struct Contrast { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bContrast; + + struct SerifVariant { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bSerifVariant; + + struct Treatment { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((None_StandardSolidFill, 2)) + ((White_NoFill, 3)) + ((PatternedFill, 4)) + ((ComplexFill, 5)) + ((ShapedFill, 6)) + ((DrawnDistressed, 7)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bTreatment; + + struct Lining { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((None, 2)) + ((Inline, 3)) + ((Outline, 4)) + ((Engraved, 5)) + ((Shadow, 6)) + ((Relief, 7)) + ((Backdrop, 8)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bLining; + + struct Topology { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bTopology; + + struct RangeOfCharacters { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((ExtendedCollection, 2)) + ((Litterals, 3)) + ((NoLowerCase, 4)) + ((SmallCaps, 5)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bRangeOfCharacters; + } decorative; + + struct Pictoral { + struct Kind { + SK_TYPED_ENUM(Value, 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)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bKind; + + struct Weight { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((NoFit, 1)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bWeight; + + struct Spacing { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((ProportionalSpaced, 2)) + ((Monospaced, 3)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bSpacing; + + struct AspectRatioAndContrast { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((NoFit, 1)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatioAndContrast; + + struct AspectRatio94 { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((NoWidth, 2)) + ((ExceptionallyWide, 3)) + ((SuperWide, 4)) + ((VeryWide, 5)) + ((Wide, 6)) + ((Normal, 7)) + ((Narrow, 8)) + ((VeryNarrow, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatio94; + + struct AspectRatio119 { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((NoWidth, 2)) + ((ExceptionallyWide, 3)) + ((SuperWide, 4)) + ((VeryWide, 5)) + ((Wide, 6)) + ((Normal, 7)) + ((Narrow, 8)) + ((VeryNarrow, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatio119; + + struct AspectRatio157 { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((NoWidth, 2)) + ((ExceptionallyWide, 3)) + ((SuperWide, 4)) + ((VeryWide, 5)) + ((Wide, 6)) + ((Normal, 7)) + ((Narrow, 8)) + ((VeryNarrow, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatio157; + + struct AspectRatio163 { + SK_TYPED_ENUM(Value, SK_OT_BYTE, + ((Any, 0)) + ((NoFit, 1)) + ((NoWidth, 2)) + ((ExceptionallyWide, 3)) + ((SuperWide, 4)) + ((VeryWide, 5)) + ((Wide, 6)) + ((Normal, 7)) + ((Narrow, 8)) + ((VeryNarrow, 9)) + SK_SEQ_END, + (value)SK_SEQ_END) + } bAspectRatio163; + } pictoral; + } data; +}; + +#pragma pack(pop) + + +SK_COMPILE_ASSERT(sizeof(SkPanose) == 10, sizeof_SkPanose_not_10); + +#endif |