michael@0: /* michael@0: * Copyright 2012 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #ifndef SkOTTable_OS_2_V2_DEFINED michael@0: #define SkOTTable_OS_2_V2_DEFINED michael@0: michael@0: #include "SkEndian.h" michael@0: #include "SkIBMFamilyClass.h" michael@0: #include "SkOTTableTypes.h" michael@0: #include "SkPanose.h" michael@0: #include "SkTypedEnum.h" michael@0: michael@0: #pragma pack(push, 1) michael@0: michael@0: struct SkOTTableOS2_V2 { michael@0: SK_OT_USHORT version; michael@0: static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(2); michael@0: michael@0: SK_OT_SHORT xAvgCharWidth; michael@0: struct WeightClass { michael@0: SK_TYPED_ENUM(Value, SK_OT_USHORT, michael@0: ((Thin, SkTEndian_SwapBE16(100))) michael@0: ((ExtraLight, SkTEndian_SwapBE16(200))) michael@0: ((Light, SkTEndian_SwapBE16(300))) michael@0: ((Normal, SkTEndian_SwapBE16(400))) michael@0: ((Medium, SkTEndian_SwapBE16(500))) michael@0: ((SemiBold, SkTEndian_SwapBE16(600))) michael@0: ((Bold, SkTEndian_SwapBE16(700))) michael@0: ((ExtraBold, SkTEndian_SwapBE16(800))) michael@0: ((Black, SkTEndian_SwapBE16(900))) michael@0: SK_SEQ_END, michael@0: SK_SEQ_END) michael@0: SK_OT_USHORT value; michael@0: } usWeightClass; michael@0: struct WidthClass { michael@0: SK_TYPED_ENUM(Value, SK_OT_USHORT, michael@0: ((UltraCondensed, SkTEndian_SwapBE16(1))) michael@0: ((ExtraCondensed, SkTEndian_SwapBE16(2))) michael@0: ((Condensed, SkTEndian_SwapBE16(3))) michael@0: ((SemiCondensed, SkTEndian_SwapBE16(4))) michael@0: ((Medium, SkTEndian_SwapBE16(5))) michael@0: ((SemiExpanded, SkTEndian_SwapBE16(6))) michael@0: ((Expanded, SkTEndian_SwapBE16(7))) michael@0: ((ExtraExpanded, SkTEndian_SwapBE16(8))) michael@0: ((UltraExpanded, SkTEndian_SwapBE16(9))), michael@0: (value)SK_SEQ_END) michael@0: } usWidthClass; michael@0: union Type { michael@0: struct Field { michael@0: //8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: NoSubsetting, michael@0: Bitmap, michael@0: Reserved10, michael@0: Reserved11, michael@0: Reserved12, michael@0: Reserved13, michael@0: Reserved14, michael@0: Reserved15) michael@0: //0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved00, michael@0: Restricted, michael@0: PreviewPrint, michael@0: Editable, michael@0: Reserved04, michael@0: Reserved05, michael@0: Reserved06, michael@0: Reserved07) michael@0: } field; michael@0: struct Raw { michael@0: static const SK_OT_USHORT Installable = 0; michael@0: static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value; michael@0: static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value; michael@0: static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value; michael@0: static const SK_OT_USHORT NoSubsettingMask = SkOTSetUSHORTBit<8>::value; michael@0: static const SK_OT_USHORT BitmapMask = SkOTSetUSHORTBit<9>::value; michael@0: SK_OT_USHORT value; michael@0: } raw; michael@0: } fsType; michael@0: SK_OT_SHORT ySubscriptXSize; michael@0: SK_OT_SHORT ySubscriptYSize; michael@0: SK_OT_SHORT ySubscriptXOffset; michael@0: SK_OT_SHORT ySubscriptYOffset; michael@0: SK_OT_SHORT ySuperscriptXSize; michael@0: SK_OT_SHORT ySuperscriptYSize; michael@0: SK_OT_SHORT ySuperscriptXOffset; michael@0: SK_OT_SHORT ySuperscriptYOffset; michael@0: SK_OT_SHORT yStrikeoutSize; michael@0: SK_OT_SHORT yStrikeoutPosition; michael@0: SkIBMFamilyClass sFamilyClass; michael@0: SkPanose panose; michael@0: union UnicodeRange { michael@0: struct Field { michael@0: //l0 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Thai, michael@0: Lao, michael@0: Georgian, michael@0: Reserved027, michael@0: HangulJamo, michael@0: LatinExtendedAdditional, michael@0: GreekExtended, michael@0: GeneralPunctuation) michael@0: //l0 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Bengali, michael@0: Gurmukhi, michael@0: Gujarati, michael@0: Oriya, michael@0: Tamil, michael@0: Telugu, michael@0: Kannada, michael@0: Malayalam) michael@0: //l0 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved008, michael@0: Cyrillic, michael@0: Armenian, michael@0: Hebrew, michael@0: Reserved012, michael@0: Arabic, michael@0: Reserved014, michael@0: Devanagari) michael@0: //l0 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: BasicLatin, michael@0: Latin1Supplement, michael@0: LatinExtendedA, michael@0: LatinExtendedB, michael@0: IPAExtensions, michael@0: SpacingModifierLetters, michael@0: CombiningDiacriticalMarks, michael@0: Greek) michael@0: michael@0: //l1 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Hangul, michael@0: Surrogates, michael@0: Reserved058, michael@0: CJKUnifiedIdeographs, michael@0: PrivateUseArea, michael@0: CJKCompatibilityIdeographs, michael@0: AlphabeticPresentationForms, michael@0: ArabicPresentationFormsA) michael@0: //l1 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: CJKSymbolsAndPunctuation, michael@0: Hiragana, michael@0: Katakana, michael@0: Bopomofo, michael@0: HangulCompatibilityJamo, michael@0: CJKMiscellaneous, michael@0: EnclosedCJKLettersAndMonths, michael@0: CJKCompatibility) michael@0: //l1 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: ControlPictures, michael@0: OpticalCharacterRecognition, michael@0: EnclosedAlphanumerics, michael@0: BoxDrawing, michael@0: BlockElements, michael@0: GeometricShapes, michael@0: MiscellaneousSymbols, michael@0: Dingbats) michael@0: //l1 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: SuperscriptsAndSubscripts, michael@0: CurrencySymbols, michael@0: CombiningDiacriticalMarksForSymbols, michael@0: LetterlikeSymbols, michael@0: NumberForms, michael@0: Arrows, michael@0: MathematicalOperators, michael@0: MiscellaneousTechnical) michael@0: michael@0: //l2 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved088, michael@0: Reserved089, michael@0: Reserved090, michael@0: Reserved091, michael@0: Reserved092, michael@0: Reserved093, michael@0: Reserved094, michael@0: Reserved095) michael@0: //l2 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Khmer, michael@0: Mongolian, michael@0: Braille, michael@0: Yi, michael@0: Reserved084, michael@0: Reserved085, michael@0: Reserved086, michael@0: Reserved087) michael@0: //l2 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Thaana, michael@0: Sinhala, michael@0: Myanmar, michael@0: Ethiopic, michael@0: Cherokee, michael@0: UnifiedCanadianSyllabics, michael@0: Ogham, michael@0: Runic) michael@0: //l2 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: CombiningHalfMarks, michael@0: CJKCompatibilityForms, michael@0: SmallFormVariants, michael@0: ArabicPresentationFormsB, michael@0: HalfwidthAndFullwidthForms, michael@0: Specials, michael@0: Tibetan, michael@0: Syriac) michael@0: michael@0: //l3 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved120, michael@0: Reserved121, michael@0: Reserved122, michael@0: Reserved123, michael@0: Reserved124, michael@0: Reserved125, michael@0: Reserved126, michael@0: Reserved127) michael@0: //l3 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved112, michael@0: Reserved113, michael@0: Reserved114, michael@0: Reserved115, michael@0: Reserved116, michael@0: Reserved117, michael@0: Reserved118, michael@0: Reserved119) michael@0: //l3 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved104, michael@0: Reserved105, michael@0: Reserved106, michael@0: Reserved107, michael@0: Reserved108, michael@0: Reserved109, michael@0: Reserved110, michael@0: Reserved111) michael@0: //l3 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved096, michael@0: Reserved097, michael@0: Reserved098, michael@0: Reserved099, michael@0: Reserved100, michael@0: Reserved101, michael@0: Reserved102, michael@0: Reserved103) michael@0: } field; michael@0: struct Raw { michael@0: struct l0 { michael@0: static const SK_OT_ULONG BasicLatinMask = SkOTSetULONGBit<0>::value; michael@0: static const SK_OT_ULONG Latin1SupplementMask = SkOTSetULONGBit<1>::value; michael@0: static const SK_OT_ULONG LatinExtendedAMask = SkOTSetULONGBit<2>::value; michael@0: static const SK_OT_ULONG LatinExtendedBMask = SkOTSetULONGBit<3>::value; michael@0: static const SK_OT_ULONG IPAExtensionsMask = SkOTSetULONGBit<4>::value; michael@0: static const SK_OT_ULONG SpacingModifierLettersMask = SkOTSetULONGBit<5>::value; michael@0: static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkOTSetULONGBit<6>::value; michael@0: static const SK_OT_ULONG GreekMask = SkOTSetULONGBit<7>::value; michael@0: //Reserved michael@0: static const SK_OT_ULONG CyrillicMask = SkOTSetULONGBit<9>::value; michael@0: static const SK_OT_ULONG ArmenianMask = SkOTSetULONGBit<10>::value; michael@0: static const SK_OT_ULONG HebrewMask = SkOTSetULONGBit<11>::value; michael@0: //Reserved michael@0: static const SK_OT_ULONG ArabicMask = SkOTSetULONGBit<13>::value; michael@0: //Reserved michael@0: static const SK_OT_ULONG DevanagariMask = SkOTSetULONGBit<15>::value; michael@0: static const SK_OT_ULONG BengaliMask = SkOTSetULONGBit<16>::value; michael@0: static const SK_OT_ULONG GurmukhiMask = SkOTSetULONGBit<17>::value; michael@0: static const SK_OT_ULONG GujaratiMask = SkOTSetULONGBit<18>::value; michael@0: static const SK_OT_ULONG OriyaMask = SkOTSetULONGBit<19>::value; michael@0: static const SK_OT_ULONG TamilMask = SkOTSetULONGBit<20>::value; michael@0: static const SK_OT_ULONG TeluguMask = SkOTSetULONGBit<21>::value; michael@0: static const SK_OT_ULONG KannadaMask = SkOTSetULONGBit<22>::value; michael@0: static const SK_OT_ULONG MalayalamMask = SkOTSetULONGBit<23>::value; michael@0: static const SK_OT_ULONG ThaiMask = SkOTSetULONGBit<24>::value; michael@0: static const SK_OT_ULONG LaoMask = SkOTSetULONGBit<25>::value; michael@0: static const SK_OT_ULONG GeorgianMask = SkOTSetULONGBit<26>::value; michael@0: //Reserved michael@0: static const SK_OT_ULONG HangulJamoMask = SkOTSetULONGBit<28>::value; michael@0: static const SK_OT_ULONG LatinExtendedAdditionalMask = SkOTSetULONGBit<29>::value; michael@0: static const SK_OT_ULONG GreekExtendedMask = SkOTSetULONGBit<30>::value; michael@0: static const SK_OT_ULONG GeneralPunctuationMask = SkOTSetULONGBit<31>::value; michael@0: }; michael@0: struct l1 { michael@0: static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkOTSetULONGBit<32 - 32>::value; michael@0: static const SK_OT_ULONG CurrencySymbolsMask = SkOTSetULONGBit<33 - 32>::value; michael@0: static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkOTSetULONGBit<34 - 32>::value; michael@0: static const SK_OT_ULONG LetterlikeSymbolsMask = SkOTSetULONGBit<35 - 32>::value; michael@0: static const SK_OT_ULONG NumberFormsMask = SkOTSetULONGBit<36 - 32>::value; michael@0: static const SK_OT_ULONG ArrowsMask = SkOTSetULONGBit<37 - 32>::value; michael@0: static const SK_OT_ULONG MathematicalOperatorsMask = SkOTSetULONGBit<38 - 32>::value; michael@0: static const SK_OT_ULONG MiscellaneousTechnicalMask = SkOTSetULONGBit<39 - 32>::value; michael@0: static const SK_OT_ULONG ControlPicturesMask = SkOTSetULONGBit<40 - 32>::value; michael@0: static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkOTSetULONGBit<41 - 32>::value; michael@0: static const SK_OT_ULONG EnclosedAlphanumericsMask = SkOTSetULONGBit<42 - 32>::value; michael@0: static const SK_OT_ULONG BoxDrawingMask = SkOTSetULONGBit<43 - 32>::value; michael@0: static const SK_OT_ULONG BlockElementsMask = SkOTSetULONGBit<44 - 32>::value; michael@0: static const SK_OT_ULONG GeometricShapesMask = SkOTSetULONGBit<45 - 32>::value; michael@0: static const SK_OT_ULONG MiscellaneousSymbolsMask = SkOTSetULONGBit<46 - 32>::value; michael@0: static const SK_OT_ULONG DingbatsMask = SkOTSetULONGBit<47 - 32>::value; michael@0: static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkOTSetULONGBit<48 - 32>::value; michael@0: static const SK_OT_ULONG HiraganaMask = SkOTSetULONGBit<49 - 32>::value; michael@0: static const SK_OT_ULONG KatakanaMask = SkOTSetULONGBit<50 - 32>::value; michael@0: static const SK_OT_ULONG BopomofoMask = SkOTSetULONGBit<51 - 32>::value; michael@0: static const SK_OT_ULONG HangulCompatibilityJamoMask = SkOTSetULONGBit<52 - 32>::value; michael@0: static const SK_OT_ULONG CJKMiscellaneousMask = SkOTSetULONGBit<53 - 32>::value; michael@0: static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkOTSetULONGBit<54 - 32>::value; michael@0: static const SK_OT_ULONG CJKCompatibilityMask = SkOTSetULONGBit<55 - 32>::value; michael@0: static const SK_OT_ULONG HangulMask = SkOTSetULONGBit<56 - 32>::value; michael@0: static const SK_OT_ULONG SurrogatesMask = SkOTSetULONGBit<57 - 32>::value; michael@0: //Reserved michael@0: static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkOTSetULONGBit<59 - 32>::value; michael@0: static const SK_OT_ULONG PrivateUseAreaMask = SkOTSetULONGBit<60 - 32>::value; michael@0: static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkOTSetULONGBit<61 - 32>::value; michael@0: static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkOTSetULONGBit<62 - 32>::value; michael@0: static const SK_OT_ULONG ArabicPresentationFormsAMask = SkOTSetULONGBit<63 - 32>::value; michael@0: }; michael@0: struct l2 { michael@0: static const SK_OT_ULONG CombiningHalfMarksMask = SkOTSetULONGBit<64 - 64>::value; michael@0: static const SK_OT_ULONG CJKCompatibilityFormsMask = SkOTSetULONGBit<65 - 64>::value; michael@0: static const SK_OT_ULONG SmallFormVariantsMask = SkOTSetULONGBit<66 - 64>::value; michael@0: static const SK_OT_ULONG ArabicPresentationFormsBMask = SkOTSetULONGBit<67 - 64>::value; michael@0: static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkOTSetULONGBit<68 - 64>::value; michael@0: static const SK_OT_ULONG SpecialsMask = SkOTSetULONGBit<69 - 64>::value; michael@0: static const SK_OT_ULONG TibetanMask = SkOTSetULONGBit<70 - 64>::value; michael@0: static const SK_OT_ULONG SyriacMask = SkOTSetULONGBit<71 - 64>::value; michael@0: static const SK_OT_ULONG ThaanaMask = SkOTSetULONGBit<72 - 64>::value; michael@0: static const SK_OT_ULONG SinhalaMask = SkOTSetULONGBit<73 - 64>::value; michael@0: static const SK_OT_ULONG MyanmarMask = SkOTSetULONGBit<74 - 64>::value; michael@0: static const SK_OT_ULONG EthiopicMask = SkOTSetULONGBit<75 - 64>::value; michael@0: static const SK_OT_ULONG CherokeeMask = SkOTSetULONGBit<76 - 64>::value; michael@0: static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkOTSetULONGBit<77 - 64>::value; michael@0: static const SK_OT_ULONG OghamMask = SkOTSetULONGBit<78 - 64>::value; michael@0: static const SK_OT_ULONG RunicMask = SkOTSetULONGBit<79 - 64>::value; michael@0: static const SK_OT_ULONG KhmerMask = SkOTSetULONGBit<80 - 64>::value; michael@0: static const SK_OT_ULONG MongolianMask = SkOTSetULONGBit<81 - 64>::value; michael@0: static const SK_OT_ULONG BrailleMask = SkOTSetULONGBit<82 - 64>::value; michael@0: static const SK_OT_ULONG YiMask = SkOTSetULONGBit<83 - 64>::value; michael@0: }; michael@0: SK_OT_ULONG value[4]; michael@0: } raw; michael@0: } ulUnicodeRange; michael@0: SK_OT_CHAR achVendID[4]; michael@0: union Selection { michael@0: struct Field { michael@0: //8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved08, michael@0: Reserved09, michael@0: Reserved10, michael@0: Reserved11, michael@0: Reserved12, michael@0: Reserved13, michael@0: Reserved14, michael@0: Reserved15) michael@0: //0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Italic, michael@0: Underscore, michael@0: Negative, michael@0: Outlined, michael@0: Strikeout, michael@0: Bold, michael@0: Regular, michael@0: Reserved07) michael@0: } field; michael@0: struct Raw { michael@0: static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; michael@0: static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; michael@0: static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; michael@0: static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; michael@0: static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; michael@0: static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; michael@0: static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; michael@0: SK_OT_USHORT value; michael@0: } raw; michael@0: } fsSelection; michael@0: SK_OT_USHORT usFirstCharIndex; michael@0: SK_OT_USHORT usLastCharIndex; michael@0: //version0 michael@0: SK_OT_SHORT sTypoAscender; michael@0: SK_OT_SHORT sTypoDescender; michael@0: SK_OT_SHORT sTypoLineGap; michael@0: SK_OT_USHORT usWinAscent; michael@0: SK_OT_USHORT usWinDescent; michael@0: //version1 michael@0: union CodePageRange { michael@0: struct Field { michael@0: //l0 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved24, michael@0: Reserved25, michael@0: Reserved26, michael@0: Reserved27, michael@0: Reserved28, michael@0: MacintoshCharacterSet, michael@0: OEMCharacterSet, michael@0: SymbolCharacterSet) michael@0: //l0 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Thai_874, michael@0: JISJapan_932, michael@0: ChineseSimplified_936, michael@0: KoreanWansung_949, michael@0: ChineseTraditional_950, michael@0: KoreanJohab_1361, michael@0: Reserved22, michael@0: Reserved23) michael@0: //l0 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Vietnamese, michael@0: Reserved09, michael@0: Reserved10, michael@0: Reserved11, michael@0: Reserved12, michael@0: Reserved13, michael@0: Reserved14, michael@0: Reserved15) michael@0: //l0 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Latin1_1252, michael@0: Latin2EasternEurope_1250, michael@0: Cyrillic_1251, michael@0: Greek_1253, michael@0: Turkish_1254, michael@0: Hebrew_1255, michael@0: Arabic_1256, michael@0: WindowsBaltic_1257) michael@0: michael@0: //l1 24-31 michael@0: SK_OT_BYTE_BITFIELD( michael@0: IBMTurkish_857, michael@0: IBMCyrillic_855, michael@0: Latin2_852, michael@0: MSDOSBaltic_775, michael@0: Greek_737, michael@0: Arabic_708, michael@0: WELatin1_850, michael@0: US_437) michael@0: //l1 16-23 michael@0: SK_OT_BYTE_BITFIELD( michael@0: IBMGreek_869, michael@0: MSDOSRussian_866, michael@0: MSDOSNordic_865, michael@0: Arabic_864, michael@0: MSDOSCanadianFrench_863, michael@0: Hebrew_862, michael@0: MSDOSIcelandic_861, michael@0: MSDOSPortuguese_860) michael@0: //l1 8-15 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved40, michael@0: Reserved41, michael@0: Reserved42, michael@0: Reserved43, michael@0: Reserved44, michael@0: Reserved45, michael@0: Reserved46, michael@0: Reserved47) michael@0: //l1 0-7 michael@0: SK_OT_BYTE_BITFIELD( michael@0: Reserved32, michael@0: Reserved33, michael@0: Reserved34, michael@0: Reserved35, michael@0: Reserved36, michael@0: Reserved37, michael@0: Reserved38, michael@0: Reserved39) michael@0: } field; michael@0: struct Raw { michael@0: struct l0 { michael@0: static const SK_OT_ULONG Latin1_1252Mask = SkOTSetULONGBit<0>::value; michael@0: static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkOTSetULONGBit<1>::value; michael@0: static const SK_OT_ULONG Cyrillic_1251Mask = SkOTSetULONGBit<2>::value; michael@0: static const SK_OT_ULONG Greek_1253Mask = SkOTSetULONGBit<3>::value; michael@0: static const SK_OT_ULONG Turkish_1254Mask = SkOTSetULONGBit<4>::value; michael@0: static const SK_OT_ULONG Hebrew_1255Mask = SkOTSetULONGBit<5>::value; michael@0: static const SK_OT_ULONG Arabic_1256Mask = SkOTSetULONGBit<6>::value; michael@0: static const SK_OT_ULONG WindowsBaltic_1257Mask = SkOTSetULONGBit<7>::value; michael@0: static const SK_OT_ULONG Vietnamese_1258Mask = SkOTSetULONGBit<8>::value; michael@0: static const SK_OT_ULONG Thai_874Mask = SkOTSetULONGBit<16>::value; michael@0: static const SK_OT_ULONG JISJapan_932Mask = SkOTSetULONGBit<17>::value; michael@0: static const SK_OT_ULONG ChineseSimplified_936Mask = SkOTSetULONGBit<18>::value; michael@0: static const SK_OT_ULONG KoreanWansung_949Mask = SkOTSetULONGBit<19>::value; michael@0: static const SK_OT_ULONG ChineseTraditional_950Mask = SkOTSetULONGBit<20>::value; michael@0: static const SK_OT_ULONG KoreanJohab_1361Mask = SkOTSetULONGBit<21>::value; michael@0: static const SK_OT_ULONG MacintoshCharacterSetMask = SkOTSetULONGBit<29>::value; michael@0: static const SK_OT_ULONG OEMCharacterSetMask = SkOTSetULONGBit<30>::value; michael@0: static const SK_OT_ULONG SymbolCharacterSetMask = SkOTSetULONGBit<31>::value; michael@0: }; michael@0: struct l1 { michael@0: static const SK_OT_ULONG IBMGreek_869Mask = SkOTSetULONGBit<48 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSRussian_866Mask = SkOTSetULONGBit<49 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSNordic_865Mask = SkOTSetULONGBit<50 - 32>::value; michael@0: static const SK_OT_ULONG Arabic_864Mask = SkOTSetULONGBit<51 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkOTSetULONGBit<52 - 32>::value; michael@0: static const SK_OT_ULONG Hebrew_862Mask = SkOTSetULONGBit<53 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkOTSetULONGBit<55 - 32>::value; michael@0: static const SK_OT_ULONG IBMTurkish_857Mask = SkOTSetULONGBit<56 - 32>::value; michael@0: static const SK_OT_ULONG IBMCyrillic_855Mask = SkOTSetULONGBit<57 - 32>::value; michael@0: static const SK_OT_ULONG Latin2_852Mask = SkOTSetULONGBit<58 - 32>::value; michael@0: static const SK_OT_ULONG MSDOSBaltic_775Mask = SkOTSetULONGBit<59 - 32>::value; michael@0: static const SK_OT_ULONG Greek_737Mask = SkOTSetULONGBit<60 - 32>::value; michael@0: static const SK_OT_ULONG Arabic_708Mask = SkOTSetULONGBit<61 - 32>::value; michael@0: static const SK_OT_ULONG WELatin1_850Mask = SkOTSetULONGBit<62 - 32>::value; michael@0: static const SK_OT_ULONG US_437Mask = SkOTSetULONGBit<63 - 32>::value; michael@0: }; michael@0: SK_OT_ULONG value[2]; michael@0: } raw; michael@0: } ulCodePageRange; michael@0: //version2 michael@0: SK_OT_SHORT sxHeight; michael@0: SK_OT_SHORT sCapHeight; michael@0: SK_OT_USHORT usDefaultChar; michael@0: SK_OT_USHORT usBreakChar; michael@0: SK_OT_USHORT usMaxContext; michael@0: }; michael@0: michael@0: #pragma pack(pop) michael@0: michael@0: michael@0: SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V2) == 96, sizeof_SkOTTableOS2_V2_not_96); michael@0: michael@0: #endif