summaryrefslogtreecommitdiff
path: root/sfnt/SkPanose.h
diff options
context:
space:
mode:
Diffstat (limited to 'sfnt/SkPanose.h')
-rw-r--r--sfnt/SkPanose.h639
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