/* * 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_V4_DEFINED #define SkOTTable_OS_2_V4_DEFINED #include "SkEndian.h" #include "SkIBMFamilyClass.h" #include "SkOTTableTypes.h" #include "SkPanose.h" #include "SkTypedEnum.h" #pragma pack(push, 1) struct SkOTTableOS2_V4 { SK_OT_USHORT version; static const SK_OT_USHORT version4 = SkTEndian_SwapBE16(4); 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( NoSubsetting, Bitmap, 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); static const SK_OT_USHORT NoSubsettingMask = SkTEndian_SwapBE16(1 << 8); static const SK_OT_USHORT BitmapMask = SkTEndian_SwapBE16(1 << 9); 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; union UnicodeRange { struct Field { //l0 24-31 SK_OT_BYTE_BITFIELD( Thai, Lao, Georgian, Balinese, HangulJamo, LatinExtendedAdditional, GreekExtended, GeneralPunctuation) //l0 16-23 SK_OT_BYTE_BITFIELD( Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam) //l0 8-15 SK_OT_BYTE_BITFIELD( Coptic, Cyrillic, Armenian, Hebrew, Vai, Arabic, NKo, Devanagari) //l0 0-7 SK_OT_BYTE_BITFIELD( BasicLatin, Latin1Supplement, LatinExtendedA, LatinExtendedB, IPAExtensions, SpacingModifierLetters, CombiningDiacriticalMarks, GreekAndCoptic) //l1 24-31 SK_OT_BYTE_BITFIELD( Hangul, NonPlane0, Phoenician, CJKUnifiedIdeographs, PrivateUseArea, CJKCompatibilityIdeographs, AlphabeticPresentationForms, ArabicPresentationFormsA) //l1 16-23 SK_OT_BYTE_BITFIELD( CJKSymbolsAndPunctuation, Hiragana, Katakana, Bopomofo, HangulCompatibilityJamo, PhagsPa, EnclosedCJKLettersAndMonths, CJKCompatibility) //l1 8-15 SK_OT_BYTE_BITFIELD( ControlPictures, OpticalCharacterRecognition, EnclosedAlphanumerics, BoxDrawing, BlockElements, GeometricShapes, MiscellaneousSymbols, Dingbats) //l1 0-7 SK_OT_BYTE_BITFIELD( SuperscriptsAndSubscripts, CurrencySymbols, CombiningDiacriticalMarksForSymbols, LetterlikeSymbols, NumberForms, Arrows, MathematicalOperators, MiscellaneousTechnical) //l2 24-31 SK_OT_BYTE_BITFIELD( MusicalSymbols, MathematicalAlphanumericSymbols, PrivateUse, VariationSelectors, Tags, Limbu, TaiLe, NewTaiLue) //l2 16-23 SK_OT_BYTE_BITFIELD( Khmer, Mongolian, Braille, Yi, Tagalog_Hanunoo_Buhid_Tagbanwa, OldItalic, Gothic, Deseret) //l2 8-15 SK_OT_BYTE_BITFIELD( Thaana, Sinhala, Myanmar, Ethiopic, Cherokee, UnifiedCanadianSyllabics, Ogham, Runic) //l2 0-7 SK_OT_BYTE_BITFIELD( CombiningHalfMarks, CJKCompatibilityForms, SmallFormVariants, ArabicPresentationFormsB, HalfwidthAndFullwidthForms, Specials, Tibetan, Syriac) //l3 24-31 SK_OT_BYTE_BITFIELD( PhaistosDisc, Carian_Lycian_Lydian, DominoTiles_MahjongTiles, Reserved123, Reserved124, Reserved125, Reserved126, Reserved127) //l3 16-23 SK_OT_BYTE_BITFIELD( Sundanese, Lepcha, OlChiki, Saurashtra, KayahLi, Rejang, Cham, AncientSymbols) //l3 8-15 SK_OT_BYTE_BITFIELD( OldPersian, Shavian, Osmanya, CypriotSyllabary, Kharoshthi, TaiXuanJingSymbols, Cuneiform, CountingRodNumerals) //l3 0-7 SK_OT_BYTE_BITFIELD( Buginese, Glagolitic, Tifinagh, YijingHexagramSymbols, SylotiNagri, LinearB_AegeanNumbers, AncientGreekNumbers, Ugaritic) } field; struct Raw { struct l0 { static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0); static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1); static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2); static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3); static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4); static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5); static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6); static const SK_OT_ULONG GreekAndCopticMask = SkTEndian_SwapBE32(1 << 7); static const SK_OT_ULONG CopticMask = SkTEndian_SwapBE32(1 << 8); static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9); static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10); static const SK_OT_ULONG HebrewMask = SkTEndian_SwapBE32(1 << 11); static const SK_OT_ULONG VaiMask = SkTEndian_SwapBE32(1 << 12); static const SK_OT_ULONG ArabicMask = SkTEndian_SwapBE32(1 << 13); static const SK_OT_ULONG NKoMask = SkTEndian_SwapBE32(1 << 14); static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15); static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16); static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17); static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18); static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19); static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20); static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21); static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22); static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23); static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24); static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25); static const SK_OT_ULONG GeorgianMask = SkTEndian_SwapBE32(1 << 26); static const SK_OT_ULONG BalineseMask = SkTEndian_SwapBE32(1 << 27); static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28); static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29); static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30); static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31); }; struct l1 { static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32)); static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32)); static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32)); static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32)); static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32)); static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32)); static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32)); static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32)); static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32)); static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32)); static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32)); static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32)); static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32)); static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32)); static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32)); static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32)); static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32)); static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32)); static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32)); static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32)); static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32)); static const SK_OT_ULONG PhagsPaMask = SkTEndian_SwapBE32(1 << (53 - 32)); static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32)); static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32)); static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32)); static const SK_OT_ULONG NonPlane0Mask = SkTEndian_SwapBE32(1 << (57 - 32)); static const SK_OT_ULONG PhoenicianMask = SkTEndian_SwapBE32(1 << (58 - 32)); static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32)); static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32)); static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32)); static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32)); static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32)); }; struct l2 { static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64)); static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64)); static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64)); static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64)); static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64)); static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64)); static const SK_OT_ULONG TibetanMask = SkTEndian_SwapBE32(1 << (70 - 64)); static const SK_OT_ULONG SyriacMask = SkTEndian_SwapBE32(1 << (71 - 64)); static const SK_OT_ULONG ThaanaMask = SkTEndian_SwapBE32(1 << (72 - 64)); static const SK_OT_ULONG SinhalaMask = SkTEndian_SwapBE32(1 << (73 - 64)); static const SK_OT_ULONG MyanmarMask = SkTEndian_SwapBE32(1 << (74 - 64)); static const SK_OT_ULONG EthiopicMask = SkTEndian_SwapBE32(1 << (75 - 64)); static const SK_OT_ULONG CherokeeMask = SkTEndian_SwapBE32(1 << (76 - 64)); static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkTEndian_SwapBE32(1 << (77 - 64)); static const SK_OT_ULONG OghamMask = SkTEndian_SwapBE32(1 << (78 - 64)); static const SK_OT_ULONG RunicMask = SkTEndian_SwapBE32(1 << (79 - 64)); static const SK_OT_ULONG KhmerMask = SkTEndian_SwapBE32(1 << (80 - 64)); static const SK_OT_ULONG MongolianMask = SkTEndian_SwapBE32(1 << (81 - 64)); static const SK_OT_ULONG BrailleMask = SkTEndian_SwapBE32(1 << (82 - 64)); static const SK_OT_ULONG YiMask = SkTEndian_SwapBE32(1 << (83 - 64)); static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkTEndian_SwapBE32(1 << (84 - 64)); static const SK_OT_ULONG OldItalicMask = SkTEndian_SwapBE32(1 << (85 - 64)); static const SK_OT_ULONG GothicMask = SkTEndian_SwapBE32(1 << (86 - 64)); static const SK_OT_ULONG DeseretMask = SkTEndian_SwapBE32(1 << (87 - 64)); static const SK_OT_ULONG MusicalSymbolsMask = SkTEndian_SwapBE32(1 << (88 - 64)); static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkTEndian_SwapBE32(1 << (89 - 64)); static const SK_OT_ULONG PrivateUseMask = SkTEndian_SwapBE32(1 << (90 - 64)); static const SK_OT_ULONG VariationSelectorsMask = SkTEndian_SwapBE32(1 << (91 - 64)); static const SK_OT_ULONG TagsMask = SkTEndian_SwapBE32(1 << (92 - 64)); static const SK_OT_ULONG LimbuMask = SkTEndian_SwapBE32(1 << (93 - 64)); static const SK_OT_ULONG TaiLeMask = SkTEndian_SwapBE32(1 << (94 - 64)); static const SK_OT_ULONG NewTaiLueMask = SkTEndian_SwapBE32(1 << (95 - 64)); }; struct l3 { static const SK_OT_ULONG BugineseMask = SkTEndian_SwapBE32(1 << (96 - 96)); static const SK_OT_ULONG GlagoliticMask = SkTEndian_SwapBE32(1 << (97 - 96)); static const SK_OT_ULONG TifinaghMask = SkTEndian_SwapBE32(1 << (98 - 96)); static const SK_OT_ULONG YijingHexagramSymbolsMask = SkTEndian_SwapBE32(1 << (99 - 96)); static const SK_OT_ULONG SylotiNagriMask = SkTEndian_SwapBE32(1 << (100 - 96)); static const SK_OT_ULONG LinearB_AegeanNumbersMask = SkTEndian_SwapBE32(1 << (101 - 96)); static const SK_OT_ULONG AncientGreekNumbersMask = SkTEndian_SwapBE32(1 << (102 - 96)); static const SK_OT_ULONG UgariticMask = SkTEndian_SwapBE32(1 << (103 - 96)); static const SK_OT_ULONG OldPersianMask = SkTEndian_SwapBE32(1 << (104 - 96)); static const SK_OT_ULONG ShavianMask = SkTEndian_SwapBE32(1 << (105 - 96)); static const SK_OT_ULONG OsmanyaMask = SkTEndian_SwapBE32(1 << (106 - 96)); static const SK_OT_ULONG CypriotSyllabaryMask = SkTEndian_SwapBE32(1 << (107 - 96)); static const SK_OT_ULONG KharoshthiMask = SkTEndian_SwapBE32(1 << (108 - 96)); static const SK_OT_ULONG TaiXuanJingSymbolsMask = SkTEndian_SwapBE32(1 << (109 - 96)); static const SK_OT_ULONG CuneiformMask = SkTEndian_SwapBE32(1 << (110 - 96)); static const SK_OT_ULONG CountingRodNumeralsMask = SkTEndian_SwapBE32(1 << (111 - 96)); static const SK_OT_ULONG SundaneseMask = SkTEndian_SwapBE32(1 << (112 - 96)); static const SK_OT_ULONG LepchaMask = SkTEndian_SwapBE32(1 << (113 - 96)); static const SK_OT_ULONG OlChikiMask = SkTEndian_SwapBE32(1 << (114 - 96)); static const SK_OT_ULONG SaurashtraMask = SkTEndian_SwapBE32(1 << (115 - 96)); static const SK_OT_ULONG KayahLiMask = SkTEndian_SwapBE32(1 << (116 - 96)); static const SK_OT_ULONG RejangMask = SkTEndian_SwapBE32(1 << (117 - 96)); static const SK_OT_ULONG ChamMask = SkTEndian_SwapBE32(1 << (118 - 96)); static const SK_OT_ULONG AncientSymbolsMask = SkTEndian_SwapBE32(1 << (119 - 96)); static const SK_OT_ULONG PhaistosDiscMask = SkTEndian_SwapBE32(1 << (120 - 96)); static const SK_OT_ULONG Carian_Lycian_LydianMask = SkTEndian_SwapBE32(1 << (121 - 96)); static const SK_OT_ULONG DominoTiles_MahjongTilesMask = SkTEndian_SwapBE32(1 << (122 - 96)); }; SK_OT_ULONG value[4]; } raw; } ulUnicodeRange; SK_OT_CHAR achVendID[4]; union Selection { struct Field { //8-15 SK_OT_BYTE_BITFIELD( WWS, Oblique, Reserved10, Reserved11, Reserved12, Reserved13, Reserved14, Reserved15) //0-7 SK_OT_BYTE_BITFIELD( Italic, Underscore, Negative, Outlined, Strikeout, Bold, Regular, UseTypoMetrics) } 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); static const SK_OT_USHORT UseTypoMetricsMask = SkTEndian_SwapBE16(1 << 7); static const SK_OT_USHORT WWSMask = SkTEndian_SwapBE16(1 << 8); static const SK_OT_USHORT ObliqueMask = SkTEndian_SwapBE16(1 << 9); 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; //version1 union CodePageRange { struct Field { //l0 24-31 SK_OT_BYTE_BITFIELD( Reserved24, Reserved25, Reserved26, Reserved27, Reserved28, MacintoshCharacterSet, OEMCharacterSet, SymbolCharacterSet) //l0 16-23 SK_OT_BYTE_BITFIELD( Thai_874, JISJapan_932, ChineseSimplified_936, KoreanWansung_949, ChineseTraditional_950, KoreanJohab_1361, Reserved22, Reserved23) //l0 8-15 SK_OT_BYTE_BITFIELD( Vietnamese, Reserved09, Reserved10, Reserved11, Reserved12, Reserved13, Reserved14, Reserved15) //l0 0-7 SK_OT_BYTE_BITFIELD( Latin1_1252, Latin2EasternEurope_1250, Cyrillic_1251, Greek_1253, Turkish_1254, Hebrew_1255, Arabic_1256, WindowsBaltic_1257) //l1 24-31 SK_OT_BYTE_BITFIELD( IBMTurkish_857, IBMCyrillic_855, Latin2_852, MSDOSBaltic_775, Greek_737, Arabic_708, WELatin1_850, US_437) //l1 16-23 SK_OT_BYTE_BITFIELD( IBMGreek_869, MSDOSRussian_866, MSDOSNordic_865, Arabic_864, MSDOSCanadianFrench_863, Hebrew_862, MSDOSIcelandic_861, MSDOSPortuguese_860) //l1 8-15 SK_OT_BYTE_BITFIELD( Reserved40, Reserved41, Reserved42, Reserved43, Reserved44, Reserved45, Reserved46, Reserved47) //l1 0-7 SK_OT_BYTE_BITFIELD( Reserved32, Reserved33, Reserved34, Reserved35, Reserved36, Reserved37, Reserved38, Reserved39) } field; struct Raw { struct l0 { static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0); static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1); static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2); static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3); static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4); static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5); static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6); static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7); static const SK_OT_ULONG Vietnamese_1258Mask = SkTEndian_SwapBE32(1 << 8); static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16); static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17); static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18); static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19); static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20); static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21); static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29); static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30); static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31); }; struct l1 { static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32)); static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32)); static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32)); static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32)); static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32)); static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32)); static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32)); static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32)); static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32)); static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32)); static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32)); static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32)); static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32)); static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32)); static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32)); static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32)); }; SK_OT_ULONG value[2]; } raw; } ulCodePageRange; //version2 SK_OT_SHORT sxHeight; SK_OT_SHORT sCapHeight; SK_OT_USHORT usDefaultChar; SK_OT_USHORT usBreakChar; SK_OT_USHORT usMaxContext; }; #pragma pack(pop) SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V4) == 96, sizeof_SkOTTableOS2_V4_not_96); #endif