| /* |
| * 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 SkOTTable_OS_2_V0_DEFINED |
| #define SkOTTable_OS_2_V0_DEFINED |
| |
| #include "SkEndian.h" |
| #include "SkIBMFamilyClass.h" |
| #include "SkOTTableTypes.h" |
| #include "SkPanose.h" |
| #include "SkTypedEnum.h" |
| |
| #pragma pack(push, 1) |
| |
| struct SkOTTableOS2_V0 { |
| SK_OT_USHORT version; |
| //SkOTTableOS2_VA::VERSION and SkOTTableOS2_V0::VERSION are both 0. |
| //The only way to differentiate these two versions is by the size of the table. |
| static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(0); |
| |
| SK_OT_SHORT xAvgCharWidth; |
| struct WeightClass { |
| SK_TYPED_ENUM(Value, SK_OT_USHORT, |
| ((Thin, SkTEndian_SwapBE16(100))) |
| ((ExtraLight, SkTEndian_SwapBE16(200))) |
| ((Light, SkTEndian_SwapBE16(300))) |
| ((Normal, SkTEndian_SwapBE16(400))) |
| ((Medium, SkTEndian_SwapBE16(500))) |
| ((SemiBold, SkTEndian_SwapBE16(600))) |
| ((Bold, SkTEndian_SwapBE16(700))) |
| ((ExtraBold, SkTEndian_SwapBE16(800))) |
| ((Black, SkTEndian_SwapBE16(900))) |
| SK_SEQ_END, |
| SK_SEQ_END) |
| SK_OT_USHORT value; |
| } usWeightClass; |
| struct WidthClass { |
| SK_TYPED_ENUM(Value, SK_OT_USHORT, |
| ((UltraCondensed, SkTEndian_SwapBE16(1))) |
| ((ExtraCondensed, SkTEndian_SwapBE16(2))) |
| ((Condensed, SkTEndian_SwapBE16(3))) |
| ((SemiCondensed, SkTEndian_SwapBE16(4))) |
| ((Medium, SkTEndian_SwapBE16(5))) |
| ((SemiExpanded, SkTEndian_SwapBE16(6))) |
| ((Expanded, SkTEndian_SwapBE16(7))) |
| ((ExtraExpanded, SkTEndian_SwapBE16(8))) |
| ((UltraExpanded, SkTEndian_SwapBE16(9))) |
| SK_SEQ_END, |
| (value)SK_SEQ_END) |
| } usWidthClass; |
| union Type { |
| struct Field { |
| //8-15 |
| SK_OT_BYTE_BITFIELD( |
| Reserved08, |
| Reserved09, |
| Reserved10, |
| Reserved11, |
| Reserved12, |
| Reserved13, |
| Reserved14, |
| Reserved15) |
| //0-7 |
| SK_OT_BYTE_BITFIELD( |
| Reserved00, |
| Restricted, |
| PreviewPrint, |
| Editable, |
| Reserved04, |
| Reserved05, |
| Reserved06, |
| Reserved07) |
| } field; |
| struct Raw { |
| static const SK_OT_USHORT Installable = 0; |
| static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value; |
| static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value; |
| static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value; |
| SK_OT_USHORT value; |
| } raw; |
| } fsType; |
| SK_OT_SHORT ySubscriptXSize; |
| SK_OT_SHORT ySubscriptYSize; |
| SK_OT_SHORT ySubscriptXOffset; |
| SK_OT_SHORT ySubscriptYOffset; |
| SK_OT_SHORT ySuperscriptXSize; |
| SK_OT_SHORT ySuperscriptYSize; |
| SK_OT_SHORT ySuperscriptXOffset; |
| SK_OT_SHORT ySuperscriptYOffset; |
| SK_OT_SHORT yStrikeoutSize; |
| SK_OT_SHORT yStrikeoutPosition; |
| SkIBMFamilyClass sFamilyClass; |
| SkPanose panose; |
| SK_OT_ULONG ulCharRange[4]; |
| SK_OT_CHAR achVendID[4]; |
| union Selection { |
| struct Field { |
| //8-15 |
| SK_OT_BYTE_BITFIELD( |
| Reserved08, |
| Reserved09, |
| Reserved10, |
| Reserved11, |
| Reserved12, |
| Reserved13, |
| Reserved14, |
| Reserved15) |
| //0-7 |
| SK_OT_BYTE_BITFIELD( |
| Italic, |
| Underscore, |
| Negative, |
| Outlined, |
| Strikeout, |
| Bold, |
| Regular, |
| Reserved07) |
| } field; |
| struct Raw { |
| static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; |
| static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; |
| static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; |
| static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; |
| static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; |
| static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; |
| static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; |
| SK_OT_USHORT value; |
| } raw; |
| } fsSelection; |
| SK_OT_USHORT usFirstCharIndex; |
| SK_OT_USHORT usLastCharIndex; |
| //version0 |
| SK_OT_SHORT sTypoAscender; |
| SK_OT_SHORT sTypoDescender; |
| SK_OT_SHORT sTypoLineGap; |
| SK_OT_USHORT usWinAscent; |
| SK_OT_USHORT usWinDescent; |
| }; |
| |
| #pragma pack(pop) |
| |
| |
| static_assert(sizeof(SkOTTableOS2_V0) == 78, "sizeof_SkOTTableOS2_V0_not_78"); |
| |
| #endif |