Home | History | Annotate | Download | only in sfnt
      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 "SkOTTableTypes.h"
     12 
     13 #pragma pack(push, 1)
     14 
     15 struct 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 
    140 static_assert(sizeof(SkIBMFamilyClass) == 2, "sizeof_SkIBMFamilyClass_not_2");
    141 
    142 #endif
    143