blob: 190952b084310d3b9712017d1bf74dabd6b4e676 [file] [log] [blame]
bungeman@google.comf8d1aee2012-02-02 19:15:21 +00001/*
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 "SkOTTableTypes.h"
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000012
13#pragma pack(push, 1)
14
15struct SkIBMFamilyClass {
bungeman8fd23a82016-08-16 12:27:49 -070016 enum Class : SK_OT_BYTE {
17 NoClassification = 0,
18 OldstyleSerifs = 1,
19 TransitionalSerifs = 2,
20 ModernSerifs = 3,
21 ClarendonSerifs = 4,
22 SlabSerifs = 5,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000023 //6 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070024 FreeformSerifs = 7,
25 SansSerif = 8,
26 Ornamentals = 9,
27 Scripts = 10,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000028 //11 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070029 Symbolic = 12,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000030 //13-15 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070031 } familyClass;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000032 union SubClass {
33 struct OldstyleSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070034 enum Value : SK_OT_BYTE {
35 NoClassification = 0,
36 IBMRoundedLegibility = 1,
37 Garalde = 2,
38 Venetian = 3,
39 ModifiedVenetian = 4,
40 DutchModern = 5,
41 DutchTraditional = 6,
42 Contemporary = 7,
43 Calligraphic = 8,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000044 //9-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070045 Miscellaneous = 15,
46 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000047 } oldstyleSerifs;
48 struct TransitionalSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070049 enum Value : SK_OT_BYTE {
50 NoClassification = 0,
51 DirectLine = 1,
52 Script = 2,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000053 //3-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070054 Miscellaneous = 15,
55 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000056 } transitionalSerifs;
57 struct ModernSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070058 enum Value : SK_OT_BYTE {
59 NoClassification = 0,
60 Italian = 1,
61 Script = 2,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000062 //3-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070063 Miscellaneous = 15,
64 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000065 } modernSerifs;
66 struct ClarendonSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070067 enum Value : SK_OT_BYTE {
68 NoClassification = 0,
69 Clarendon = 1,
70 Modern = 2,
71 Traditional = 3,
72 Newspaper = 4,
73 StubSerif = 5,
74 Monotone = 6,
75 Typewriter = 7,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000076 //8-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070077 Miscellaneous = 15,
78 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000079 } clarendonSerifs;
80 struct SlabSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070081 enum Value : SK_OT_BYTE {
82 NoClassification = 0,
83 Monotone = 1,
84 Humanist = 2,
85 Geometric = 3,
86 Swiss = 4,
87 Typewriter = 5,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000088 //6-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070089 Miscellaneous = 15,
90 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000091 } slabSerifs;
92 struct FreeformSerifs {
bungeman8fd23a82016-08-16 12:27:49 -070093 enum Value : SK_OT_BYTE {
94 NoClassification = 0,
95 Modern = 1,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000096 //2-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -070097 Miscellaneous = 15,
98 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +000099 } freeformSerifs;
100 struct SansSerif {
bungeman8fd23a82016-08-16 12:27:49 -0700101 enum Value : SK_OT_BYTE {
102 NoClassification = 0,
103 IBMNeoGrotesqueGothic = 1,
104 Humanist = 2,
105 LowXRoundGeometric = 3,
106 HighXRoundGeometric = 4,
107 NeoGrotesqueGothic = 5,
108 ModifiedNeoGrotesqueGothic = 6,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000109 //7-8 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700110 TypewriterGothic = 9,
111 Matrix = 10,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000112 //11-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700113 Miscellaneous = 15,
114 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000115 } sansSerif;
116 struct Ornamentals {
bungeman8fd23a82016-08-16 12:27:49 -0700117 enum Value : SK_OT_BYTE {
118 NoClassification = 0,
119 Engraver = 1,
120 BlackLetter = 2,
121 Decorative = 3,
122 ThreeDimensional = 4,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000123 //5-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700124 Miscellaneous = 15,
125 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000126 } ornamentals;
127 struct Scripts {
bungeman8fd23a82016-08-16 12:27:49 -0700128 enum Value : SK_OT_BYTE {
129 NoClassification = 0,
130 Uncial = 1,
131 Brush_Joined = 2,
132 Formal_Joined = 3,
133 Monotone_Joined = 4,
134 Calligraphic = 5,
135 Brush_Unjoined = 6,
136 Formal_Unjoined = 7,
137 Monotone_Unjoined = 8,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000138 //9-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700139 Miscellaneous = 15,
140 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000141 } scripts;
142 struct Symbolic {
bungeman8fd23a82016-08-16 12:27:49 -0700143 enum Value : SK_OT_BYTE {
144 NoClassification = 0,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000145 //1-2 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700146 MixedSerif = 3,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000147 //4-5 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700148 OldstyleSerif = 6,
149 NeoGrotesqueSansSerif = 7,
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000150 //8-14 reserved for future use
bungeman8fd23a82016-08-16 12:27:49 -0700151 Miscellaneous = 15,
152 } value;
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000153 } symbolic;
154 } familySubClass;
155};
156
157#pragma pack(pop)
158
159
bungeman99fe8222015-08-20 07:57:51 -0700160static_assert(sizeof(SkIBMFamilyClass) == 2, "sizeof_SkIBMFamilyClass_not_2");
bungeman@google.comf8d1aee2012-02-02 19:15:21 +0000161
162#endif