| /* |
| * 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 = SkTEndian_SwapBE16(0); |
| static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1); |
| static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2); |
| static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3); |
| 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 = SkTEndian_SwapBE16(1 << 0); |
| static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1); |
| static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2); |
| static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3); |
| static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4); |
| static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5); |
| static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6); |
| 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) |
| |
| |
| SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V0) == 78, sizeof_SkOTTableOS2_V0_not_78); |
| |
| #endif |