/* * 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" #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