xref: /aosp_15_r20/external/skia/src/sfnt/SkPanose.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker /*
2*c8dee2aaSAndroid Build Coastguard Worker  * Copyright 2012 Google Inc.
3*c8dee2aaSAndroid Build Coastguard Worker  *
4*c8dee2aaSAndroid Build Coastguard Worker  * Use of this source code is governed by a BSD-style license that can be
5*c8dee2aaSAndroid Build Coastguard Worker  * found in the LICENSE file.
6*c8dee2aaSAndroid Build Coastguard Worker  */
7*c8dee2aaSAndroid Build Coastguard Worker 
8*c8dee2aaSAndroid Build Coastguard Worker #ifndef SkPanose_DEFINED
9*c8dee2aaSAndroid Build Coastguard Worker #define SkPanose_DEFINED
10*c8dee2aaSAndroid Build Coastguard Worker 
11*c8dee2aaSAndroid Build Coastguard Worker #include "src/sfnt/SkOTTableTypes.h"
12*c8dee2aaSAndroid Build Coastguard Worker 
13*c8dee2aaSAndroid Build Coastguard Worker #pragma pack(push, 1)
14*c8dee2aaSAndroid Build Coastguard Worker 
15*c8dee2aaSAndroid Build Coastguard Worker struct SkPanose {
16*c8dee2aaSAndroid Build Coastguard Worker     //This value changes the meaning of the following 9 bytes.
17*c8dee2aaSAndroid Build Coastguard Worker     enum class FamilyType : SK_OT_BYTE {
18*c8dee2aaSAndroid Build Coastguard Worker         Any = 0,
19*c8dee2aaSAndroid Build Coastguard Worker         NoFit = 1,
20*c8dee2aaSAndroid Build Coastguard Worker         TextAndDisplay = 2,
21*c8dee2aaSAndroid Build Coastguard Worker         Script = 3,
22*c8dee2aaSAndroid Build Coastguard Worker         Decorative = 4,
23*c8dee2aaSAndroid Build Coastguard Worker         Pictoral = 5,
24*c8dee2aaSAndroid Build Coastguard Worker     } bFamilyType;
25*c8dee2aaSAndroid Build Coastguard Worker 
26*c8dee2aaSAndroid Build Coastguard Worker     union Data {
27*c8dee2aaSAndroid Build Coastguard Worker         struct TextAndDisplay {
28*c8dee2aaSAndroid Build Coastguard Worker             enum class SerifStyle : SK_OT_BYTE {
29*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
30*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
31*c8dee2aaSAndroid Build Coastguard Worker                 Cove = 2,
32*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseCove = 3,
33*c8dee2aaSAndroid Build Coastguard Worker                 SquareCove = 4,
34*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseSquareCove = 5,
35*c8dee2aaSAndroid Build Coastguard Worker                 Square = 6,
36*c8dee2aaSAndroid Build Coastguard Worker                 Thin = 7,
37*c8dee2aaSAndroid Build Coastguard Worker                 Bone = 8,
38*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated = 9,
39*c8dee2aaSAndroid Build Coastguard Worker                 Triangle = 10,
40*c8dee2aaSAndroid Build Coastguard Worker                 NormalSans = 11,
41*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseSans = 12,
42*c8dee2aaSAndroid Build Coastguard Worker                 PerpSans = 13,
43*c8dee2aaSAndroid Build Coastguard Worker                 Flared = 14,
44*c8dee2aaSAndroid Build Coastguard Worker                 Rounded = 15,
45*c8dee2aaSAndroid Build Coastguard Worker             } bSerifStyle;
46*c8dee2aaSAndroid Build Coastguard Worker 
47*c8dee2aaSAndroid Build Coastguard Worker             enum class Weight : SK_OT_BYTE {
48*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
49*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
50*c8dee2aaSAndroid Build Coastguard Worker                 VeryLight = 2,
51*c8dee2aaSAndroid Build Coastguard Worker                 Light = 3,
52*c8dee2aaSAndroid Build Coastguard Worker                 Thin = 4,
53*c8dee2aaSAndroid Build Coastguard Worker                 Book = 5,
54*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
55*c8dee2aaSAndroid Build Coastguard Worker                 Demi = 7,
56*c8dee2aaSAndroid Build Coastguard Worker                 Bold = 8,
57*c8dee2aaSAndroid Build Coastguard Worker                 Heavy = 9,
58*c8dee2aaSAndroid Build Coastguard Worker                 Black = 10,
59*c8dee2aaSAndroid Build Coastguard Worker                 ExtraBlack = 11,
60*c8dee2aaSAndroid Build Coastguard Worker             } bWeight;
61*c8dee2aaSAndroid Build Coastguard Worker 
62*c8dee2aaSAndroid Build Coastguard Worker             enum class Proportion : SK_OT_BYTE {
63*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
64*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
65*c8dee2aaSAndroid Build Coastguard Worker                 OldStyle = 2,
66*c8dee2aaSAndroid Build Coastguard Worker                 Modern = 3,
67*c8dee2aaSAndroid Build Coastguard Worker                 EvenWidth = 4,
68*c8dee2aaSAndroid Build Coastguard Worker                 Expanded = 5,
69*c8dee2aaSAndroid Build Coastguard Worker                 Condensed = 6,
70*c8dee2aaSAndroid Build Coastguard Worker                 VeryExpanded = 7,
71*c8dee2aaSAndroid Build Coastguard Worker                 VeryCondensed = 8,
72*c8dee2aaSAndroid Build Coastguard Worker                 Monospaced = 9,
73*c8dee2aaSAndroid Build Coastguard Worker             } bProportion;
74*c8dee2aaSAndroid Build Coastguard Worker 
75*c8dee2aaSAndroid Build Coastguard Worker             enum class Contrast : SK_OT_BYTE {
76*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
77*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
78*c8dee2aaSAndroid Build Coastguard Worker                 None = 2,
79*c8dee2aaSAndroid Build Coastguard Worker                 VeryLow = 3,
80*c8dee2aaSAndroid Build Coastguard Worker                 Low = 4,
81*c8dee2aaSAndroid Build Coastguard Worker                 MediumLow = 5,
82*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
83*c8dee2aaSAndroid Build Coastguard Worker                 MediumHigh = 7,
84*c8dee2aaSAndroid Build Coastguard Worker                 High = 8,
85*c8dee2aaSAndroid Build Coastguard Worker                 VeryHigh = 9,
86*c8dee2aaSAndroid Build Coastguard Worker             } bContrast;
87*c8dee2aaSAndroid Build Coastguard Worker 
88*c8dee2aaSAndroid Build Coastguard Worker #ifdef SK_WIN_PANOSE
89*c8dee2aaSAndroid Build Coastguard Worker             //This is what Windows (and FontForge and Apple TT spec) define.
90*c8dee2aaSAndroid Build Coastguard Worker             //The Impact font uses 9.
91*c8dee2aaSAndroid Build Coastguard Worker             enum class StrokeVariation : SK_OT_BYTE {
92*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
93*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
94*c8dee2aaSAndroid Build Coastguard Worker                 GradualDiagonal = 2,
95*c8dee2aaSAndroid Build Coastguard Worker                 GradualTransitional = 3,
96*c8dee2aaSAndroid Build Coastguard Worker                 GradualVertical = 4,
97*c8dee2aaSAndroid Build Coastguard Worker                 GradualHorizontal = 5,
98*c8dee2aaSAndroid Build Coastguard Worker                 RapidVertical = 6,
99*c8dee2aaSAndroid Build Coastguard Worker                 RapidHorizontal = 7,
100*c8dee2aaSAndroid Build Coastguard Worker                 InstantVertical = 8,
101*c8dee2aaSAndroid Build Coastguard Worker             } bStrokeVariation;
102*c8dee2aaSAndroid Build Coastguard Worker #else
103*c8dee2aaSAndroid Build Coastguard Worker             //Stroke variation description in OT OS/2 ver0,ver1 is incorrect.
104*c8dee2aaSAndroid Build Coastguard Worker             //This is what HP Panose says.
105*c8dee2aaSAndroid Build Coastguard Worker             enum class StrokeVariation : SK_OT_BYTE {
106*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
107*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
108*c8dee2aaSAndroid Build Coastguard Worker                 NoVariation = 2,
109*c8dee2aaSAndroid Build Coastguard Worker                 Gradual_Diagonal = 3,
110*c8dee2aaSAndroid Build Coastguard Worker                 Gradual_Transitional = 4,
111*c8dee2aaSAndroid Build Coastguard Worker                 Gradual_Vertical = 5,
112*c8dee2aaSAndroid Build Coastguard Worker                 Gradual_Horizontal = 6,
113*c8dee2aaSAndroid Build Coastguard Worker                 Rapid_Vertical = 7,
114*c8dee2aaSAndroid Build Coastguard Worker                 Rapid_Horizontal = 8,
115*c8dee2aaSAndroid Build Coastguard Worker                 Instant_Vertical = 9,
116*c8dee2aaSAndroid Build Coastguard Worker                 Instant_Horizontal = 10,
117*c8dee2aaSAndroid Build Coastguard Worker             } bStrokeVariation;
118*c8dee2aaSAndroid Build Coastguard Worker #endif
119*c8dee2aaSAndroid Build Coastguard Worker 
120*c8dee2aaSAndroid Build Coastguard Worker             enum class ArmStyle : SK_OT_BYTE {
121*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
122*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
123*c8dee2aaSAndroid Build Coastguard Worker                 StraightArms_Horizontal = 2,
124*c8dee2aaSAndroid Build Coastguard Worker                 StraightArms_Wedge = 3,
125*c8dee2aaSAndroid Build Coastguard Worker                 StraightArms_Vertical = 4,
126*c8dee2aaSAndroid Build Coastguard Worker                 StraightArms_SingleSerif = 5,
127*c8dee2aaSAndroid Build Coastguard Worker                 StraightArms_DoubleSerif = 6,
128*c8dee2aaSAndroid Build Coastguard Worker                 NonStraightArms_Horizontal = 7,
129*c8dee2aaSAndroid Build Coastguard Worker                 NonStraightArms_Wedge = 8,
130*c8dee2aaSAndroid Build Coastguard Worker                 NonStraightArms_Vertical = 9,
131*c8dee2aaSAndroid Build Coastguard Worker                 NonStraightArms_SingleSerif = 10,
132*c8dee2aaSAndroid Build Coastguard Worker                 NonStraightArms_DoubleSerif = 11,
133*c8dee2aaSAndroid Build Coastguard Worker             } bArmStyle;
134*c8dee2aaSAndroid Build Coastguard Worker 
135*c8dee2aaSAndroid Build Coastguard Worker             enum class Letterform : SK_OT_BYTE {
136*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
137*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
138*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Contact = 2,
139*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Weighted = 3,
140*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Boxed = 4,
141*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Flattened = 5,
142*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Rounded = 6,
143*c8dee2aaSAndroid Build Coastguard Worker                 Normal_OffCenter = 7,
144*c8dee2aaSAndroid Build Coastguard Worker                 Normal_Square = 8,
145*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Contact = 9,
146*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Weighted = 10,
147*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Boxed = 11,
148*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Flattened = 12,
149*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Rounded = 13,
150*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_OffCenter = 14,
151*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_Square = 15,
152*c8dee2aaSAndroid Build Coastguard Worker             } bLetterform;
153*c8dee2aaSAndroid Build Coastguard Worker 
154*c8dee2aaSAndroid Build Coastguard Worker             enum class Midline : SK_OT_BYTE {
155*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
156*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
157*c8dee2aaSAndroid Build Coastguard Worker                 Standard_Trimmed = 2,
158*c8dee2aaSAndroid Build Coastguard Worker                 Standard_Pointed = 3,
159*c8dee2aaSAndroid Build Coastguard Worker                 Standard_Serifed = 4,
160*c8dee2aaSAndroid Build Coastguard Worker                 High_Trimmed = 5,
161*c8dee2aaSAndroid Build Coastguard Worker                 High_Pointed = 6,
162*c8dee2aaSAndroid Build Coastguard Worker                 High_Serifed = 7,
163*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Trimmed = 8,
164*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Pointed = 9,
165*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Serifed = 10,
166*c8dee2aaSAndroid Build Coastguard Worker                 Low_Trimmed = 11,
167*c8dee2aaSAndroid Build Coastguard Worker                 Low_Pointed = 12,
168*c8dee2aaSAndroid Build Coastguard Worker                 Low_Serifed = 13,
169*c8dee2aaSAndroid Build Coastguard Worker             } bMidline;
170*c8dee2aaSAndroid Build Coastguard Worker 
171*c8dee2aaSAndroid Build Coastguard Worker             enum class XHeight : SK_OT_BYTE {
172*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
173*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
174*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Small = 2,
175*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Standard = 3,
176*c8dee2aaSAndroid Build Coastguard Worker                 Constant_Large = 4,
177*c8dee2aaSAndroid Build Coastguard Worker                 Ducking_Small = 5,
178*c8dee2aaSAndroid Build Coastguard Worker                 Ducking_Standard = 6,
179*c8dee2aaSAndroid Build Coastguard Worker                 Ducking_Large = 7,
180*c8dee2aaSAndroid Build Coastguard Worker             } bXHeight;
181*c8dee2aaSAndroid Build Coastguard Worker         } textAndDisplay;
182*c8dee2aaSAndroid Build Coastguard Worker 
183*c8dee2aaSAndroid Build Coastguard Worker         struct Script {
184*c8dee2aaSAndroid Build Coastguard Worker             enum class ToolKind : SK_OT_BYTE {
185*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
186*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
187*c8dee2aaSAndroid Build Coastguard Worker                 FlatNib = 2,
188*c8dee2aaSAndroid Build Coastguard Worker                 PressurePoint = 3,
189*c8dee2aaSAndroid Build Coastguard Worker                 Engraved = 4,
190*c8dee2aaSAndroid Build Coastguard Worker                 Ball = 5,
191*c8dee2aaSAndroid Build Coastguard Worker                 Brush = 6,
192*c8dee2aaSAndroid Build Coastguard Worker                 Rough = 7,
193*c8dee2aaSAndroid Build Coastguard Worker                 FeltPen = 8,
194*c8dee2aaSAndroid Build Coastguard Worker                 WildBrush = 9,
195*c8dee2aaSAndroid Build Coastguard Worker             } bToolKind;
196*c8dee2aaSAndroid Build Coastguard Worker 
197*c8dee2aaSAndroid Build Coastguard Worker             enum class Weight : SK_OT_BYTE {
198*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
199*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
200*c8dee2aaSAndroid Build Coastguard Worker                 VeryLight = 2,
201*c8dee2aaSAndroid Build Coastguard Worker                 Light = 3,
202*c8dee2aaSAndroid Build Coastguard Worker                 Thin = 4,
203*c8dee2aaSAndroid Build Coastguard Worker                 Book = 5,
204*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
205*c8dee2aaSAndroid Build Coastguard Worker                 Demi = 7,
206*c8dee2aaSAndroid Build Coastguard Worker                 Bold = 8,
207*c8dee2aaSAndroid Build Coastguard Worker                 Heavy = 9,
208*c8dee2aaSAndroid Build Coastguard Worker                 Black = 10,
209*c8dee2aaSAndroid Build Coastguard Worker                 ExtraBlack = 11,
210*c8dee2aaSAndroid Build Coastguard Worker             } bWeight;
211*c8dee2aaSAndroid Build Coastguard Worker 
212*c8dee2aaSAndroid Build Coastguard Worker             enum class Spacing : SK_OT_BYTE {
213*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
214*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
215*c8dee2aaSAndroid Build Coastguard Worker                 ProportionalSpaced = 2,
216*c8dee2aaSAndroid Build Coastguard Worker                 Monospaced = 3,
217*c8dee2aaSAndroid Build Coastguard Worker             } bSpacing;
218*c8dee2aaSAndroid Build Coastguard Worker 
219*c8dee2aaSAndroid Build Coastguard Worker             enum class AspectRatio : SK_OT_BYTE {
220*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
221*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
222*c8dee2aaSAndroid Build Coastguard Worker                 VeryCondensed = 2,
223*c8dee2aaSAndroid Build Coastguard Worker                 Condensed = 3,
224*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 4,
225*c8dee2aaSAndroid Build Coastguard Worker                 Expanded = 5,
226*c8dee2aaSAndroid Build Coastguard Worker                 VeryExpanded = 6,
227*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatio;
228*c8dee2aaSAndroid Build Coastguard Worker 
229*c8dee2aaSAndroid Build Coastguard Worker             enum class Contrast : SK_OT_BYTE {
230*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
231*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
232*c8dee2aaSAndroid Build Coastguard Worker                 None = 2,
233*c8dee2aaSAndroid Build Coastguard Worker                 VeryLow = 3,
234*c8dee2aaSAndroid Build Coastguard Worker                 Low = 4,
235*c8dee2aaSAndroid Build Coastguard Worker                 MediumLow = 5,
236*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
237*c8dee2aaSAndroid Build Coastguard Worker                 MediumHigh = 7,
238*c8dee2aaSAndroid Build Coastguard Worker                 High = 8,
239*c8dee2aaSAndroid Build Coastguard Worker                 VeryHigh = 9,
240*c8dee2aaSAndroid Build Coastguard Worker             } bContrast;
241*c8dee2aaSAndroid Build Coastguard Worker 
242*c8dee2aaSAndroid Build Coastguard Worker             enum class Topology : SK_OT_BYTE {
243*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
244*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
245*c8dee2aaSAndroid Build Coastguard Worker                 Roman_Disconnected = 2,
246*c8dee2aaSAndroid Build Coastguard Worker                 Roman_Trailing = 3,
247*c8dee2aaSAndroid Build Coastguard Worker                 Roman_Connected = 4,
248*c8dee2aaSAndroid Build Coastguard Worker                 Cursive_Disconnected = 5,
249*c8dee2aaSAndroid Build Coastguard Worker                 Cursive_Trailing = 6,
250*c8dee2aaSAndroid Build Coastguard Worker                 Cursive_Connected = 7,
251*c8dee2aaSAndroid Build Coastguard Worker                 Blackletter_Disconnected = 8,
252*c8dee2aaSAndroid Build Coastguard Worker                 Blackletter_Trailing = 9,
253*c8dee2aaSAndroid Build Coastguard Worker                 Blackletter_Connected = 10,
254*c8dee2aaSAndroid Build Coastguard Worker             } bTopology;
255*c8dee2aaSAndroid Build Coastguard Worker 
256*c8dee2aaSAndroid Build Coastguard Worker             enum class Form : SK_OT_BYTE {
257*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
258*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
259*c8dee2aaSAndroid Build Coastguard Worker                 Upright_NoWrapping = 2,
260*c8dee2aaSAndroid Build Coastguard Worker                 Upright_SomeWrapping = 3,
261*c8dee2aaSAndroid Build Coastguard Worker                 Upright_MoreWrapping = 4,
262*c8dee2aaSAndroid Build Coastguard Worker                 Upright_ExtremeWrapping = 5,
263*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_NoWrapping = 6,
264*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_SomeWrapping = 7,
265*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_MoreWrapping = 8,
266*c8dee2aaSAndroid Build Coastguard Worker                 Oblique_ExtremeWrapping = 9,
267*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated_NoWrapping = 10,
268*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated_SomeWrapping = 11,
269*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated_MoreWrapping = 12,
270*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated_ExtremeWrapping = 13,
271*c8dee2aaSAndroid Build Coastguard Worker             } bForm;
272*c8dee2aaSAndroid Build Coastguard Worker 
273*c8dee2aaSAndroid Build Coastguard Worker             enum class Finials : SK_OT_BYTE {
274*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
275*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
276*c8dee2aaSAndroid Build Coastguard Worker                 None_NoLoops = 2,
277*c8dee2aaSAndroid Build Coastguard Worker                 None_ClosedLoops = 3,
278*c8dee2aaSAndroid Build Coastguard Worker                 None_OpenLoops = 4,
279*c8dee2aaSAndroid Build Coastguard Worker                 Sharp_NoLoops = 5,
280*c8dee2aaSAndroid Build Coastguard Worker                 Sharp_ClosedLoops = 6,
281*c8dee2aaSAndroid Build Coastguard Worker                 Sharp_OpenLoops = 7,
282*c8dee2aaSAndroid Build Coastguard Worker                 Tapered_NoLoops = 8,
283*c8dee2aaSAndroid Build Coastguard Worker                 Tapered_ClosedLoops = 9,
284*c8dee2aaSAndroid Build Coastguard Worker                 Tapered_OpenLoops = 10,
285*c8dee2aaSAndroid Build Coastguard Worker                 Round_NoLoops = 11,
286*c8dee2aaSAndroid Build Coastguard Worker                 Round_ClosedLoops = 12,
287*c8dee2aaSAndroid Build Coastguard Worker                 Round_OpenLoops = 13,
288*c8dee2aaSAndroid Build Coastguard Worker             } bFinials;
289*c8dee2aaSAndroid Build Coastguard Worker 
290*c8dee2aaSAndroid Build Coastguard Worker             enum class XAscent : SK_OT_BYTE {
291*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
292*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
293*c8dee2aaSAndroid Build Coastguard Worker                 VeryLow = 2,
294*c8dee2aaSAndroid Build Coastguard Worker                 Low = 3,
295*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 4,
296*c8dee2aaSAndroid Build Coastguard Worker                 High = 5,
297*c8dee2aaSAndroid Build Coastguard Worker                 VeryHigh = 6,
298*c8dee2aaSAndroid Build Coastguard Worker             } bXAscent;
299*c8dee2aaSAndroid Build Coastguard Worker         } script;
300*c8dee2aaSAndroid Build Coastguard Worker 
301*c8dee2aaSAndroid Build Coastguard Worker         struct Decorative {
302*c8dee2aaSAndroid Build Coastguard Worker             enum class Class : SK_OT_BYTE {
303*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
304*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
305*c8dee2aaSAndroid Build Coastguard Worker                 Derivative = 2,
306*c8dee2aaSAndroid Build Coastguard Worker                 NonStandard_Topology = 3,
307*c8dee2aaSAndroid Build Coastguard Worker                 NonStandard_Elements = 4,
308*c8dee2aaSAndroid Build Coastguard Worker                 NonStandard_Aspect = 5,
309*c8dee2aaSAndroid Build Coastguard Worker                 Initials = 6,
310*c8dee2aaSAndroid Build Coastguard Worker                 Cartoon = 7,
311*c8dee2aaSAndroid Build Coastguard Worker                 PictureStems = 8,
312*c8dee2aaSAndroid Build Coastguard Worker                 Ornamented = 9,
313*c8dee2aaSAndroid Build Coastguard Worker                 TextAndBackground = 10,
314*c8dee2aaSAndroid Build Coastguard Worker                 Collage = 11,
315*c8dee2aaSAndroid Build Coastguard Worker                 Montage = 12,
316*c8dee2aaSAndroid Build Coastguard Worker             } bClass;
317*c8dee2aaSAndroid Build Coastguard Worker 
318*c8dee2aaSAndroid Build Coastguard Worker             enum class Weight : SK_OT_BYTE {
319*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
320*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
321*c8dee2aaSAndroid Build Coastguard Worker                 VeryLight = 2,
322*c8dee2aaSAndroid Build Coastguard Worker                 Light = 3,
323*c8dee2aaSAndroid Build Coastguard Worker                 Thin = 4,
324*c8dee2aaSAndroid Build Coastguard Worker                 Book = 5,
325*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
326*c8dee2aaSAndroid Build Coastguard Worker                 Demi = 7,
327*c8dee2aaSAndroid Build Coastguard Worker                 Bold = 8,
328*c8dee2aaSAndroid Build Coastguard Worker                 Heavy = 9,
329*c8dee2aaSAndroid Build Coastguard Worker                 Black = 10,
330*c8dee2aaSAndroid Build Coastguard Worker                 ExtraBlack = 11,
331*c8dee2aaSAndroid Build Coastguard Worker             } bWeight;
332*c8dee2aaSAndroid Build Coastguard Worker 
333*c8dee2aaSAndroid Build Coastguard Worker             enum class Aspect : SK_OT_BYTE {
334*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
335*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
336*c8dee2aaSAndroid Build Coastguard Worker                 SuperCondensed = 2,
337*c8dee2aaSAndroid Build Coastguard Worker                 VeryCondensed = 3,
338*c8dee2aaSAndroid Build Coastguard Worker                 Condensed = 4,
339*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 5,
340*c8dee2aaSAndroid Build Coastguard Worker                 Extended = 6,
341*c8dee2aaSAndroid Build Coastguard Worker                 VeryExtended = 7,
342*c8dee2aaSAndroid Build Coastguard Worker                 SuperExtended = 8,
343*c8dee2aaSAndroid Build Coastguard Worker                 Monospaced = 9,
344*c8dee2aaSAndroid Build Coastguard Worker             } bAspect;
345*c8dee2aaSAndroid Build Coastguard Worker 
346*c8dee2aaSAndroid Build Coastguard Worker             enum class Contrast : SK_OT_BYTE {
347*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
348*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
349*c8dee2aaSAndroid Build Coastguard Worker                 None = 2,
350*c8dee2aaSAndroid Build Coastguard Worker                 VeryLow = 3,
351*c8dee2aaSAndroid Build Coastguard Worker                 Low = 4,
352*c8dee2aaSAndroid Build Coastguard Worker                 MediumLow = 5,
353*c8dee2aaSAndroid Build Coastguard Worker                 Medium = 6,
354*c8dee2aaSAndroid Build Coastguard Worker                 MediumHigh = 7,
355*c8dee2aaSAndroid Build Coastguard Worker                 High = 8,
356*c8dee2aaSAndroid Build Coastguard Worker                 VeryHigh = 9,
357*c8dee2aaSAndroid Build Coastguard Worker                 HorizontalLow = 10,
358*c8dee2aaSAndroid Build Coastguard Worker                 HorizontalMedium = 11,
359*c8dee2aaSAndroid Build Coastguard Worker                 HorizontalHigh = 12,
360*c8dee2aaSAndroid Build Coastguard Worker                 Broken = 13,
361*c8dee2aaSAndroid Build Coastguard Worker             } bContrast;
362*c8dee2aaSAndroid Build Coastguard Worker 
363*c8dee2aaSAndroid Build Coastguard Worker             enum class SerifVariant : SK_OT_BYTE {
364*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
365*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
366*c8dee2aaSAndroid Build Coastguard Worker                 Cove = 2,
367*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseCove = 3,
368*c8dee2aaSAndroid Build Coastguard Worker                 SquareCove = 4,
369*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseSquareCove = 5,
370*c8dee2aaSAndroid Build Coastguard Worker                 Square = 6,
371*c8dee2aaSAndroid Build Coastguard Worker                 Thin = 7,
372*c8dee2aaSAndroid Build Coastguard Worker                 Oval = 8,
373*c8dee2aaSAndroid Build Coastguard Worker                 Exaggerated = 9,
374*c8dee2aaSAndroid Build Coastguard Worker                 Triangle = 10,
375*c8dee2aaSAndroid Build Coastguard Worker                 NormalSans = 11,
376*c8dee2aaSAndroid Build Coastguard Worker                 ObtuseSans = 12,
377*c8dee2aaSAndroid Build Coastguard Worker                 PerpendicularSans = 13,
378*c8dee2aaSAndroid Build Coastguard Worker                 Flared = 14,
379*c8dee2aaSAndroid Build Coastguard Worker                 Rounded = 15,
380*c8dee2aaSAndroid Build Coastguard Worker                 Script = 16,
381*c8dee2aaSAndroid Build Coastguard Worker             } bSerifVariant;
382*c8dee2aaSAndroid Build Coastguard Worker 
383*c8dee2aaSAndroid Build Coastguard Worker             enum class Treatment : SK_OT_BYTE {
384*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
385*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
386*c8dee2aaSAndroid Build Coastguard Worker                 None_StandardSolidFill = 2,
387*c8dee2aaSAndroid Build Coastguard Worker                 White_NoFill = 3,
388*c8dee2aaSAndroid Build Coastguard Worker                 PatternedFill = 4,
389*c8dee2aaSAndroid Build Coastguard Worker                 ComplexFill = 5,
390*c8dee2aaSAndroid Build Coastguard Worker                 ShapedFill = 6,
391*c8dee2aaSAndroid Build Coastguard Worker                 DrawnDistressed = 7,
392*c8dee2aaSAndroid Build Coastguard Worker             } bTreatment;
393*c8dee2aaSAndroid Build Coastguard Worker 
394*c8dee2aaSAndroid Build Coastguard Worker             enum class Lining : SK_OT_BYTE {
395*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
396*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
397*c8dee2aaSAndroid Build Coastguard Worker                 None = 2,
398*c8dee2aaSAndroid Build Coastguard Worker                 Inline = 3,
399*c8dee2aaSAndroid Build Coastguard Worker                 Outline = 4,
400*c8dee2aaSAndroid Build Coastguard Worker                 Engraved = 5,
401*c8dee2aaSAndroid Build Coastguard Worker                 Shadow = 6,
402*c8dee2aaSAndroid Build Coastguard Worker                 Relief = 7,
403*c8dee2aaSAndroid Build Coastguard Worker                 Backdrop = 8,
404*c8dee2aaSAndroid Build Coastguard Worker             } bLining;
405*c8dee2aaSAndroid Build Coastguard Worker 
406*c8dee2aaSAndroid Build Coastguard Worker             enum class Topology : SK_OT_BYTE {
407*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
408*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
409*c8dee2aaSAndroid Build Coastguard Worker                 Standard = 2,
410*c8dee2aaSAndroid Build Coastguard Worker                 Square = 3,
411*c8dee2aaSAndroid Build Coastguard Worker                 MultipleSegment = 4,
412*c8dee2aaSAndroid Build Coastguard Worker                 DecoWacoMidlines = 5,
413*c8dee2aaSAndroid Build Coastguard Worker                 UnevenWeighting = 6,
414*c8dee2aaSAndroid Build Coastguard Worker                 DiverseArms = 7,
415*c8dee2aaSAndroid Build Coastguard Worker                 DiverseForms = 8,
416*c8dee2aaSAndroid Build Coastguard Worker                 LombardicForms = 9,
417*c8dee2aaSAndroid Build Coastguard Worker                 UpperCaseInLowerCase = 10,
418*c8dee2aaSAndroid Build Coastguard Worker                 ImpliedTopology = 11,
419*c8dee2aaSAndroid Build Coastguard Worker                 HorseshoeEandA = 12,
420*c8dee2aaSAndroid Build Coastguard Worker                 Cursive = 13,
421*c8dee2aaSAndroid Build Coastguard Worker                 Blackletter = 14,
422*c8dee2aaSAndroid Build Coastguard Worker                 SwashVariance = 15,
423*c8dee2aaSAndroid Build Coastguard Worker             } bTopology;
424*c8dee2aaSAndroid Build Coastguard Worker 
425*c8dee2aaSAndroid Build Coastguard Worker             enum class RangeOfCharacters : SK_OT_BYTE {
426*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
427*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
428*c8dee2aaSAndroid Build Coastguard Worker                 ExtendedCollection = 2,
429*c8dee2aaSAndroid Build Coastguard Worker                 Litterals = 3,
430*c8dee2aaSAndroid Build Coastguard Worker                 NoLowerCase = 4,
431*c8dee2aaSAndroid Build Coastguard Worker                 SmallCaps = 5,
432*c8dee2aaSAndroid Build Coastguard Worker             } bRangeOfCharacters;
433*c8dee2aaSAndroid Build Coastguard Worker         } decorative;
434*c8dee2aaSAndroid Build Coastguard Worker 
435*c8dee2aaSAndroid Build Coastguard Worker         struct Pictoral {
436*c8dee2aaSAndroid Build Coastguard Worker             enum class Kind : SK_OT_BYTE {
437*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
438*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
439*c8dee2aaSAndroid Build Coastguard Worker                 Montages = 2,
440*c8dee2aaSAndroid Build Coastguard Worker                 Pictures = 3,
441*c8dee2aaSAndroid Build Coastguard Worker                 Shapes = 4,
442*c8dee2aaSAndroid Build Coastguard Worker                 Scientific = 5,
443*c8dee2aaSAndroid Build Coastguard Worker                 Music = 6,
444*c8dee2aaSAndroid Build Coastguard Worker                 Expert = 7,
445*c8dee2aaSAndroid Build Coastguard Worker                 Patterns = 8,
446*c8dee2aaSAndroid Build Coastguard Worker                 Boarders = 9,
447*c8dee2aaSAndroid Build Coastguard Worker                 Icons = 10,
448*c8dee2aaSAndroid Build Coastguard Worker                 Logos = 11,
449*c8dee2aaSAndroid Build Coastguard Worker                 IndustrySpecific = 12,
450*c8dee2aaSAndroid Build Coastguard Worker             } bKind;
451*c8dee2aaSAndroid Build Coastguard Worker 
452*c8dee2aaSAndroid Build Coastguard Worker             enum class Weight : SK_OT_BYTE {
453*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
454*c8dee2aaSAndroid Build Coastguard Worker             } bWeight;
455*c8dee2aaSAndroid Build Coastguard Worker 
456*c8dee2aaSAndroid Build Coastguard Worker             enum class Spacing : SK_OT_BYTE {
457*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
458*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
459*c8dee2aaSAndroid Build Coastguard Worker                 ProportionalSpaced = 2,
460*c8dee2aaSAndroid Build Coastguard Worker                 Monospaced = 3,
461*c8dee2aaSAndroid Build Coastguard Worker             } bSpacing;
462*c8dee2aaSAndroid Build Coastguard Worker 
463*c8dee2aaSAndroid Build Coastguard Worker             enum class AspectRatioAndContrast : SK_OT_BYTE {
464*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
465*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatioAndContrast;
466*c8dee2aaSAndroid Build Coastguard Worker 
467*c8dee2aaSAndroid Build Coastguard Worker             enum class AspectRatio94 : SK_OT_BYTE {
468*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
469*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
470*c8dee2aaSAndroid Build Coastguard Worker                 NoWidth = 2,
471*c8dee2aaSAndroid Build Coastguard Worker                 ExceptionallyWide = 3,
472*c8dee2aaSAndroid Build Coastguard Worker                 SuperWide = 4,
473*c8dee2aaSAndroid Build Coastguard Worker                 VeryWide = 5,
474*c8dee2aaSAndroid Build Coastguard Worker                 Wide = 6,
475*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 7,
476*c8dee2aaSAndroid Build Coastguard Worker                 Narrow = 8,
477*c8dee2aaSAndroid Build Coastguard Worker                 VeryNarrow = 9,
478*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatio94;
479*c8dee2aaSAndroid Build Coastguard Worker 
480*c8dee2aaSAndroid Build Coastguard Worker             enum class AspectRatio119 : SK_OT_BYTE {
481*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
482*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
483*c8dee2aaSAndroid Build Coastguard Worker                 NoWidth = 2,
484*c8dee2aaSAndroid Build Coastguard Worker                 ExceptionallyWide = 3,
485*c8dee2aaSAndroid Build Coastguard Worker                 SuperWide = 4,
486*c8dee2aaSAndroid Build Coastguard Worker                 VeryWide = 5,
487*c8dee2aaSAndroid Build Coastguard Worker                 Wide = 6,
488*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 7,
489*c8dee2aaSAndroid Build Coastguard Worker                 Narrow = 8,
490*c8dee2aaSAndroid Build Coastguard Worker                 VeryNarrow = 9,
491*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatio119;
492*c8dee2aaSAndroid Build Coastguard Worker 
493*c8dee2aaSAndroid Build Coastguard Worker              enum class AspectRatio157 : SK_OT_BYTE {
494*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
495*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
496*c8dee2aaSAndroid Build Coastguard Worker                 NoWidth = 2,
497*c8dee2aaSAndroid Build Coastguard Worker                 ExceptionallyWide = 3,
498*c8dee2aaSAndroid Build Coastguard Worker                 SuperWide = 4,
499*c8dee2aaSAndroid Build Coastguard Worker                 VeryWide = 5,
500*c8dee2aaSAndroid Build Coastguard Worker                 Wide = 6,
501*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 7,
502*c8dee2aaSAndroid Build Coastguard Worker                 Narrow = 8,
503*c8dee2aaSAndroid Build Coastguard Worker                 VeryNarrow = 9,
504*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatio157;
505*c8dee2aaSAndroid Build Coastguard Worker 
506*c8dee2aaSAndroid Build Coastguard Worker             enum class AspectRatio163 : SK_OT_BYTE {
507*c8dee2aaSAndroid Build Coastguard Worker                 Any = 0,
508*c8dee2aaSAndroid Build Coastguard Worker                 NoFit = 1,
509*c8dee2aaSAndroid Build Coastguard Worker                 NoWidth = 2,
510*c8dee2aaSAndroid Build Coastguard Worker                 ExceptionallyWide = 3,
511*c8dee2aaSAndroid Build Coastguard Worker                 SuperWide = 4,
512*c8dee2aaSAndroid Build Coastguard Worker                 VeryWide = 5,
513*c8dee2aaSAndroid Build Coastguard Worker                 Wide = 6,
514*c8dee2aaSAndroid Build Coastguard Worker                 Normal = 7,
515*c8dee2aaSAndroid Build Coastguard Worker                 Narrow = 8,
516*c8dee2aaSAndroid Build Coastguard Worker                 VeryNarrow = 9,
517*c8dee2aaSAndroid Build Coastguard Worker             } bAspectRatio163;
518*c8dee2aaSAndroid Build Coastguard Worker         } pictoral;
519*c8dee2aaSAndroid Build Coastguard Worker     } data;
520*c8dee2aaSAndroid Build Coastguard Worker };
521*c8dee2aaSAndroid Build Coastguard Worker 
522*c8dee2aaSAndroid Build Coastguard Worker #pragma pack(pop)
523*c8dee2aaSAndroid Build Coastguard Worker 
524*c8dee2aaSAndroid Build Coastguard Worker 
525*c8dee2aaSAndroid Build Coastguard Worker static_assert(sizeof(SkPanose) == 10, "sizeof_SkPanose_not_10");
526*c8dee2aaSAndroid Build Coastguard Worker 
527*c8dee2aaSAndroid Build Coastguard Worker #endif
528