1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2012 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#ifndef SkIBMFamilyClass_DEFINED
9cb93a386Sopenharmony_ci#define SkIBMFamilyClass_DEFINED
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci#include "src/sfnt/SkOTTableTypes.h"
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ci#pragma pack(push, 1)
14cb93a386Sopenharmony_ci
15cb93a386Sopenharmony_cistruct SkIBMFamilyClass {
16cb93a386Sopenharmony_ci    enum class Class : SK_OT_BYTE {
17cb93a386Sopenharmony_ci        NoClassification = 0,
18cb93a386Sopenharmony_ci        OldstyleSerifs = 1,
19cb93a386Sopenharmony_ci        TransitionalSerifs = 2,
20cb93a386Sopenharmony_ci        ModernSerifs = 3,
21cb93a386Sopenharmony_ci        ClarendonSerifs = 4,
22cb93a386Sopenharmony_ci        SlabSerifs = 5,
23cb93a386Sopenharmony_ci        //6 reserved for future use
24cb93a386Sopenharmony_ci        FreeformSerifs = 7,
25cb93a386Sopenharmony_ci        SansSerif = 8,
26cb93a386Sopenharmony_ci        Ornamentals = 9,
27cb93a386Sopenharmony_ci        Scripts = 10,
28cb93a386Sopenharmony_ci        //11 reserved for future use
29cb93a386Sopenharmony_ci        Symbolic = 12,
30cb93a386Sopenharmony_ci        //13-15 reserved for future use
31cb93a386Sopenharmony_ci    } familyClass;
32cb93a386Sopenharmony_ci    union SubClass {
33cb93a386Sopenharmony_ci        enum class OldstyleSerifs : SK_OT_BYTE {
34cb93a386Sopenharmony_ci            NoClassification = 0,
35cb93a386Sopenharmony_ci            IBMRoundedLegibility = 1,
36cb93a386Sopenharmony_ci            Garalde = 2,
37cb93a386Sopenharmony_ci            Venetian = 3,
38cb93a386Sopenharmony_ci            ModifiedVenetian = 4,
39cb93a386Sopenharmony_ci            DutchModern = 5,
40cb93a386Sopenharmony_ci            DutchTraditional = 6,
41cb93a386Sopenharmony_ci            Contemporary = 7,
42cb93a386Sopenharmony_ci            Calligraphic = 8,
43cb93a386Sopenharmony_ci            //9-14 reserved for future use
44cb93a386Sopenharmony_ci            Miscellaneous = 15,
45cb93a386Sopenharmony_ci        } oldstyleSerifs;
46cb93a386Sopenharmony_ci        enum class TransitionalSerifs : SK_OT_BYTE {
47cb93a386Sopenharmony_ci            NoClassification = 0,
48cb93a386Sopenharmony_ci            DirectLine = 1,
49cb93a386Sopenharmony_ci            Script = 2,
50cb93a386Sopenharmony_ci            //3-14 reserved for future use
51cb93a386Sopenharmony_ci            Miscellaneous = 15,
52cb93a386Sopenharmony_ci        } transitionalSerifs;
53cb93a386Sopenharmony_ci        enum class ModernSerifs : SK_OT_BYTE {
54cb93a386Sopenharmony_ci            NoClassification = 0,
55cb93a386Sopenharmony_ci            Italian = 1,
56cb93a386Sopenharmony_ci            Script = 2,
57cb93a386Sopenharmony_ci            //3-14 reserved for future use
58cb93a386Sopenharmony_ci            Miscellaneous = 15,
59cb93a386Sopenharmony_ci        } modernSerifs;
60cb93a386Sopenharmony_ci        enum class ClarendonSerifs : SK_OT_BYTE {
61cb93a386Sopenharmony_ci            NoClassification = 0,
62cb93a386Sopenharmony_ci            Clarendon = 1,
63cb93a386Sopenharmony_ci            Modern = 2,
64cb93a386Sopenharmony_ci            Traditional = 3,
65cb93a386Sopenharmony_ci            Newspaper = 4,
66cb93a386Sopenharmony_ci            StubSerif = 5,
67cb93a386Sopenharmony_ci            Monotone = 6,
68cb93a386Sopenharmony_ci            Typewriter = 7,
69cb93a386Sopenharmony_ci            //8-14 reserved for future use
70cb93a386Sopenharmony_ci            Miscellaneous = 15,
71cb93a386Sopenharmony_ci        } clarendonSerifs;
72cb93a386Sopenharmony_ci        enum class SlabSerifs : SK_OT_BYTE {
73cb93a386Sopenharmony_ci            NoClassification = 0,
74cb93a386Sopenharmony_ci            Monotone = 1,
75cb93a386Sopenharmony_ci            Humanist = 2,
76cb93a386Sopenharmony_ci            Geometric = 3,
77cb93a386Sopenharmony_ci            Swiss = 4,
78cb93a386Sopenharmony_ci            Typewriter = 5,
79cb93a386Sopenharmony_ci            //6-14 reserved for future use
80cb93a386Sopenharmony_ci            Miscellaneous = 15,
81cb93a386Sopenharmony_ci        } slabSerifs;
82cb93a386Sopenharmony_ci        enum class FreeformSerifs : SK_OT_BYTE {
83cb93a386Sopenharmony_ci            NoClassification = 0,
84cb93a386Sopenharmony_ci            Modern = 1,
85cb93a386Sopenharmony_ci            //2-14 reserved for future use
86cb93a386Sopenharmony_ci            Miscellaneous = 15,
87cb93a386Sopenharmony_ci        } freeformSerifs;
88cb93a386Sopenharmony_ci        enum class SansSerif : SK_OT_BYTE {
89cb93a386Sopenharmony_ci            NoClassification = 0,
90cb93a386Sopenharmony_ci            IBMNeoGrotesqueGothic = 1,
91cb93a386Sopenharmony_ci            Humanist = 2,
92cb93a386Sopenharmony_ci            LowXRoundGeometric = 3,
93cb93a386Sopenharmony_ci            HighXRoundGeometric = 4,
94cb93a386Sopenharmony_ci            NeoGrotesqueGothic = 5,
95cb93a386Sopenharmony_ci            ModifiedNeoGrotesqueGothic = 6,
96cb93a386Sopenharmony_ci            //7-8 reserved for future use
97cb93a386Sopenharmony_ci            TypewriterGothic = 9,
98cb93a386Sopenharmony_ci            Matrix = 10,
99cb93a386Sopenharmony_ci            //11-14 reserved for future use
100cb93a386Sopenharmony_ci            Miscellaneous = 15,
101cb93a386Sopenharmony_ci        } sansSerif;
102cb93a386Sopenharmony_ci        enum class Ornamentals : SK_OT_BYTE {
103cb93a386Sopenharmony_ci            NoClassification = 0,
104cb93a386Sopenharmony_ci            Engraver = 1,
105cb93a386Sopenharmony_ci            BlackLetter = 2,
106cb93a386Sopenharmony_ci            Decorative = 3,
107cb93a386Sopenharmony_ci            ThreeDimensional = 4,
108cb93a386Sopenharmony_ci            //5-14 reserved for future use
109cb93a386Sopenharmony_ci            Miscellaneous = 15,
110cb93a386Sopenharmony_ci        } ornamentals;
111cb93a386Sopenharmony_ci        enum class Scripts : SK_OT_BYTE {
112cb93a386Sopenharmony_ci            NoClassification = 0,
113cb93a386Sopenharmony_ci            Uncial = 1,
114cb93a386Sopenharmony_ci            Brush_Joined = 2,
115cb93a386Sopenharmony_ci            Formal_Joined = 3,
116cb93a386Sopenharmony_ci            Monotone_Joined = 4,
117cb93a386Sopenharmony_ci            Calligraphic = 5,
118cb93a386Sopenharmony_ci            Brush_Unjoined = 6,
119cb93a386Sopenharmony_ci            Formal_Unjoined = 7,
120cb93a386Sopenharmony_ci            Monotone_Unjoined = 8,
121cb93a386Sopenharmony_ci            //9-14 reserved for future use
122cb93a386Sopenharmony_ci            Miscellaneous = 15,
123cb93a386Sopenharmony_ci        } scripts;
124cb93a386Sopenharmony_ci        enum class Symbolic : SK_OT_BYTE {
125cb93a386Sopenharmony_ci            NoClassification = 0,
126cb93a386Sopenharmony_ci            //1-2 reserved for future use
127cb93a386Sopenharmony_ci            MixedSerif = 3,
128cb93a386Sopenharmony_ci            //4-5 reserved for future use
129cb93a386Sopenharmony_ci            OldstyleSerif = 6,
130cb93a386Sopenharmony_ci            NeoGrotesqueSansSerif = 7,
131cb93a386Sopenharmony_ci            //8-14 reserved for future use
132cb93a386Sopenharmony_ci            Miscellaneous = 15,
133cb93a386Sopenharmony_ci        } symbolic;
134cb93a386Sopenharmony_ci    } familySubClass;
135cb93a386Sopenharmony_ci};
136cb93a386Sopenharmony_ci
137cb93a386Sopenharmony_ci#pragma pack(pop)
138cb93a386Sopenharmony_ci
139cb93a386Sopenharmony_ci
140cb93a386Sopenharmony_cistatic_assert(sizeof(SkIBMFamilyClass) == 2, "sizeof_SkIBMFamilyClass_not_2");
141cb93a386Sopenharmony_ci
142cb93a386Sopenharmony_ci#endif
143