/*
* 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 "SkOTTableTypes.h"
#include "SkTypedEnum.h"
#pragma pack(push, 1)
struct SkIBMFamilyClass {
SK_TYPED_ENUM(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
SK_SEQ_END,
(familyClass)SK_SEQ_END)
union SubClass {
struct OldstyleSerifs {
SK_TYPED_ENUM(Value, 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))
SK_SEQ_END,
(value)SK_SEQ_END)
} oldstyleSerifs;
struct TransitionalSerifs {
SK_TYPED_ENUM(Value, SK_OT_BYTE,
((NoClassification, 0))
((DirectLine, 1))
((Script, 2))
//3-14 reserved for future use
((Miscellaneous, 15))
SK_SEQ_END,
(value)SK_SEQ_END)
} transitionalSerifs;
struct ModernSerifs {
SK_TYPED_ENUM(Value, SK_OT_BYTE,
((NoClassification, 0))
((Italian, 1))
((Script, 2))
//3-14 reserved for future use
((Miscellaneous, 15))
SK_SEQ_END,
(value)SK_SEQ_END)
} modernSerifs;
struct ClarendonSerifs {
SK_TYPED_ENUM(Value, 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))
SK_SEQ_END,
(value)SK_SEQ_END)
} clarendonSerifs;
struct SlabSerifs {
SK_TYPED_ENUM(Value, SK_OT_BYTE,
((NoClassification, 0))
((Monotone, 1))
((Humanist, 2))
((Geometric, 3))
((Swiss, 4))
((Typewriter, 5))
//6-14 reserved for future use
((Miscellaneous, 15))
SK_SEQ_END,
(value)SK_SEQ_END)
} slabSerifs;
struct FreeformSerifs {
SK_TYPED_ENUM(Value, SK_OT_BYTE,
((NoClassification, 0))
((Modern, 1))
//2-14 reserved for future use
((Miscellaneous, 15))
SK_SEQ_END,
(value)SK_SEQ_END)
} freeformSerifs;
struct SansSerif {
SK_TYPED_ENUM(Value, 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))
SK_SEQ_END,
(value)SK_SEQ_END)
} sansSerif;
struct Ornamentals {
SK_TYPED_ENUM(Value, SK_OT_BYTE,
((NoClassification, 0))
((Engraver, 1))
((BlackLetter, 2))
((Decorative, 3))
((ThreeDimensional, 4))
//5-14 reserved for future use
((Miscellaneous, 15))
SK_SEQ_END,
(value)SK_SEQ_END)
} ornamentals;
struct Scripts {
SK_TYPED_ENUM(Value, 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))
SK_SEQ_END,
(value)SK_SEQ_END)
} scripts;
struct Symbolic {
SK_TYPED_ENUM(Value, 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))
SK_SEQ_END,
(value)SK_SEQ_END)
} symbolic;
} familySubClass;
};
#pragma pack(pop)
static_assert(sizeof(SkIBMFamilyClass) == 2, "sizeof_SkIBMFamilyClass_not_2");
#endif