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