blob: 8ad1dbeaf4e49813fb46bcf70225311e7994d5d1 [file] [log] [blame]
/*
* 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 SkIBMFamilyClass_DEFINED
#define SkIBMFamilyClass_DEFINED
#include "src/sfnt/SkOTTableTypes.h"
#pragma pack(push, 1)
struct SkIBMFamilyClass {
enum class Class : SK_OT_BYTE {
NoClassification = 0,
OldstyleSerifs = 1,
TransitionalSerifs = 2,
ModernSerifs = 3,
ClarendonSerifs = 4,
SlabSerifs = 5,
//6 reserved for future use
FreeformSerifs = 7,
SansSerif = 8,
Ornamentals = 9,
Scripts = 10,
//11 reserved for future use
Symbolic = 12,
//13-15 reserved for future use
} familyClass;
union SubClass {
enum class OldstyleSerifs : SK_OT_BYTE {
NoClassification = 0,
IBMRoundedLegibility = 1,
Garalde = 2,
Venetian = 3,
ModifiedVenetian = 4,
DutchModern = 5,
DutchTraditional = 6,
Contemporary = 7,
Calligraphic = 8,
//9-14 reserved for future use
Miscellaneous = 15,
} oldstyleSerifs;
enum class TransitionalSerifs : SK_OT_BYTE {
NoClassification = 0,
DirectLine = 1,
Script = 2,
//3-14 reserved for future use
Miscellaneous = 15,
} transitionalSerifs;
enum class ModernSerifs : SK_OT_BYTE {
NoClassification = 0,
Italian = 1,
Script = 2,
//3-14 reserved for future use
Miscellaneous = 15,
} modernSerifs;
enum class ClarendonSerifs : SK_OT_BYTE {
NoClassification = 0,
Clarendon = 1,
Modern = 2,
Traditional = 3,
Newspaper = 4,
StubSerif = 5,
Monotone = 6,
Typewriter = 7,
//8-14 reserved for future use
Miscellaneous = 15,
} clarendonSerifs;
enum class SlabSerifs : SK_OT_BYTE {
NoClassification = 0,
Monotone = 1,
Humanist = 2,
Geometric = 3,
Swiss = 4,
Typewriter = 5,
//6-14 reserved for future use
Miscellaneous = 15,
} slabSerifs;
enum class FreeformSerifs : SK_OT_BYTE {
NoClassification = 0,
Modern = 1,
//2-14 reserved for future use
Miscellaneous = 15,
} freeformSerifs;
enum class SansSerif : SK_OT_BYTE {
NoClassification = 0,
IBMNeoGrotesqueGothic = 1,
Humanist = 2,
LowXRoundGeometric = 3,
HighXRoundGeometric = 4,
NeoGrotesqueGothic = 5,
ModifiedNeoGrotesqueGothic = 6,
//7-8 reserved for future use
TypewriterGothic = 9,
Matrix = 10,
//11-14 reserved for future use
Miscellaneous = 15,
} sansSerif;
enum class Ornamentals : SK_OT_BYTE {
NoClassification = 0,
Engraver = 1,
BlackLetter = 2,
Decorative = 3,
ThreeDimensional = 4,
//5-14 reserved for future use
Miscellaneous = 15,
} ornamentals;
enum class Scripts : SK_OT_BYTE {
NoClassification = 0,
Uncial = 1,
Brush_Joined = 2,
Formal_Joined = 3,
Monotone_Joined = 4,
Calligraphic = 5,
Brush_Unjoined = 6,
Formal_Unjoined = 7,
Monotone_Unjoined = 8,
//9-14 reserved for future use
Miscellaneous = 15,
} scripts;
enum class Symbolic : SK_OT_BYTE {
NoClassification = 0,
//1-2 reserved for future use
MixedSerif = 3,
//4-5 reserved for future use
OldstyleSerif = 6,
NeoGrotesqueSansSerif = 7,
//8-14 reserved for future use
Miscellaneous = 15,
} symbolic;
} familySubClass;
};
#pragma pack(pop)
static_assert(sizeof(SkIBMFamilyClass) == 2, "sizeof_SkIBMFamilyClass_not_2");
#endif