1f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com/* 2f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com * Copyright 2012 Google Inc. 3f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com * 4f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com * Use of this source code is governed by a BSD-style license that can be 5f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com * found in the LICENSE file. 6f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com */ 7f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 8f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#ifndef SkOTTable_OS_2_V4_DEFINED 9f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#define SkOTTable_OS_2_V4_DEFINED 10f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 11f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#include "SkEndian.h" 12f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#include "SkIBMFamilyClass.h" 13f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#include "SkOTTableTypes.h" 14f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#include "SkPanose.h" 15f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#include "SkTypedEnum.h" 16f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 17f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#pragma pack(push, 1) 18f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 19f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.comstruct SkOTTableOS2_V4 { 20f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT version; 21a544f29496758de6ed2ebf5a53558574019c9da1bungeman@google.com static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(4); 22b0a327e9390da5865d4c56db5e5259adc3380d37skia.committer@gmail.com 23f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT xAvgCharWidth; 24f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct WeightClass { 25f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 26f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Thin, SkTEndian_SwapBE16(100))) 27f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((ExtraLight, SkTEndian_SwapBE16(200))) 28f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Light, SkTEndian_SwapBE16(300))) 29f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Normal, SkTEndian_SwapBE16(400))) 30f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Medium, SkTEndian_SwapBE16(500))) 31f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((SemiBold, SkTEndian_SwapBE16(600))) 32f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Bold, SkTEndian_SwapBE16(700))) 33f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((ExtraBold, SkTEndian_SwapBE16(800))) 34f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Black, SkTEndian_SwapBE16(900))) 35f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_SEQ_END, 36f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_SEQ_END) 37f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT value; 38f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } usWeightClass; 39f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct WidthClass { 40f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 41f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((UltraCondensed, SkTEndian_SwapBE16(1))) 42f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((ExtraCondensed, SkTEndian_SwapBE16(2))) 43f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Condensed, SkTEndian_SwapBE16(3))) 44f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((SemiCondensed, SkTEndian_SwapBE16(4))) 45f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Medium, SkTEndian_SwapBE16(5))) 46f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((SemiExpanded, SkTEndian_SwapBE16(6))) 47f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((Expanded, SkTEndian_SwapBE16(7))) 48f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((ExtraExpanded, SkTEndian_SwapBE16(8))) 49f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ((UltraExpanded, SkTEndian_SwapBE16(9))) 50f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_SEQ_END, 51f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com (value)SK_SEQ_END) 52f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } usWidthClass; 53f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com union Type { 54f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Field { 55f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //8-15 56f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 57f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com NoSubsetting, 58f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Bitmap, 59f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved10, 60f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved11, 61f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved12, 62f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved13, 63f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved14, 64f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved15) 65f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //0-7 66f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 67f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved00, 68f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Restricted, 69f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com PreviewPrint, 70f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Editable, 71f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved04, 72f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved05, 73f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved06, 74f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved07) 75f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } field; 76f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Raw { 77562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT Installable = 0; 78562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value; 79562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value; 80562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value; 81562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT NoSubsettingMask = SkOTSetUSHORTBit<8>::value; 82562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT BitmapMask = SkOTSetUSHORTBit<9>::value; 83f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT value; 84f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } raw; 85f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } fsType; 86f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySubscriptXSize; 87f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySubscriptYSize; 88f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySubscriptXOffset; 89f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySubscriptYOffset; 90f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySuperscriptXSize; 91f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySuperscriptYSize; 92f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySuperscriptXOffset; 93f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT ySuperscriptYOffset; 94f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT yStrikeoutSize; 95f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT yStrikeoutPosition; 96f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SkIBMFamilyClass sFamilyClass; 97f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SkPanose panose; 98f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com union UnicodeRange { 99f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Field { 100f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 24-31 101f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 102f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Thai, 103f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Lao, 104f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Georgian, 105f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Balinese, 106f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com HangulJamo, 107f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com LatinExtendedAdditional, 108f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com GreekExtended, 109f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com GeneralPunctuation) 110f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 16-23 111f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 112f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Bengali, 113f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Gurmukhi, 114f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Gujarati, 115f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Oriya, 116f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Tamil, 117f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Telugu, 118f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Kannada, 119f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Malayalam) 120f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 8-15 121f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 122f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Coptic, 123f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Cyrillic, 124f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Armenian, 125f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Hebrew, 126f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Vai, 127f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Arabic, 128f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com NKo, 129f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Devanagari) 130f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 0-7 131f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 132f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com BasicLatin, 133f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Latin1Supplement, 134f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com LatinExtendedA, 135f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com LatinExtendedB, 136f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com IPAExtensions, 137f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SpacingModifierLetters, 138f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CombiningDiacriticalMarks, 139f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com GreekAndCoptic) 140f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 141f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 24-31 142f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 143f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Hangul, 144f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com NonPlane0, 145f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Phoenician, 146f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CJKUnifiedIdeographs, 147f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com PrivateUseArea, 148f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CJKCompatibilityIdeographs, 149f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com AlphabeticPresentationForms, 150f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ArabicPresentationFormsA) 151f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 16-23 152f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 153f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CJKSymbolsAndPunctuation, 154f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Hiragana, 155f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Katakana, 156f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Bopomofo, 157f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com HangulCompatibilityJamo, 158f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com PhagsPa, 159f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com EnclosedCJKLettersAndMonths, 160f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CJKCompatibility) 161f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 8-15 162f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 163f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ControlPictures, 164f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com OpticalCharacterRecognition, 165f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com EnclosedAlphanumerics, 166f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com BoxDrawing, 167f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com BlockElements, 168f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com GeometricShapes, 169f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MiscellaneousSymbols, 170f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Dingbats) 171f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 0-7 172f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 173f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SuperscriptsAndSubscripts, 174f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CurrencySymbols, 175f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CombiningDiacriticalMarksForSymbols, 176f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com LetterlikeSymbols, 177f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com NumberForms, 178f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Arrows, 179f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MathematicalOperators, 180f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MiscellaneousTechnical) 181f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 182f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l2 24-31 183f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 184f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MusicalSymbols, 185f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MathematicalAlphanumericSymbols, 186f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com PrivateUse, 187f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com VariationSelectors, 188f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Tags, 189f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Limbu, 190f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com TaiLe, 191f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com NewTaiLue) 192f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l2 16-23 193f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 194f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Khmer, 195f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Mongolian, 196f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Braille, 197f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Yi, 198f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Tagalog_Hanunoo_Buhid_Tagbanwa, 199f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com OldItalic, 200f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Gothic, 201f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Deseret) 202f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l2 8-15 203f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 204f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Thaana, 205f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Sinhala, 206f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Myanmar, 207f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Ethiopic, 208f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Cherokee, 209f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com UnifiedCanadianSyllabics, 210f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Ogham, 211f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Runic) 212f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l2 0-7 213f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 214f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CombiningHalfMarks, 215f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CJKCompatibilityForms, 216f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SmallFormVariants, 217f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ArabicPresentationFormsB, 218f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com HalfwidthAndFullwidthForms, 219f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Specials, 220f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Tibetan, 221f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Syriac) 222f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 223f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l3 24-31 224f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 225f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com PhaistosDisc, 226f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Carian_Lycian_Lydian, 227f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com DominoTiles_MahjongTiles, 228f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved123, 229f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved124, 230f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved125, 231f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved126, 232f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved127) 233f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l3 16-23 234f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 235f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Sundanese, 236f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Lepcha, 237f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com OlChiki, 238f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Saurashtra, 239f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com KayahLi, 240f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Rejang, 241f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Cham, 242f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com AncientSymbols) 243f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l3 8-15 244f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 245f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com OldPersian, 246f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Shavian, 247f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Osmanya, 248f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CypriotSyllabary, 249f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Kharoshthi, 250f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com TaiXuanJingSymbols, 251f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Cuneiform, 252f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com CountingRodNumerals) 253f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l3 0-7 254f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 255f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Buginese, 256f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Glagolitic, 257f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Tifinagh, 258f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com YijingHexagramSymbols, 259f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SylotiNagri, 260f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com LinearB_AegeanNumbers, 261f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com AncientGreekNumbers, 262f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Ugaritic) 263f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } field; 264f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Raw { 265f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l0 { 266562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BasicLatinMask = SkOTSetULONGBit<0>::value; 267562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Latin1SupplementMask = SkOTSetULONGBit<1>::value; 268562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LatinExtendedAMask = SkOTSetULONGBit<2>::value; 269562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LatinExtendedBMask = SkOTSetULONGBit<3>::value; 270562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG IPAExtensionsMask = SkOTSetULONGBit<4>::value; 271562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SpacingModifierLettersMask = SkOTSetULONGBit<5>::value; 272562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkOTSetULONGBit<6>::value; 273562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GreekAndCopticMask = SkOTSetULONGBit<7>::value; 274562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CopticMask = SkOTSetULONGBit<8>::value; 275562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CyrillicMask = SkOTSetULONGBit<9>::value; 276562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ArmenianMask = SkOTSetULONGBit<10>::value; 277562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HebrewMask = SkOTSetULONGBit<11>::value; 278562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG VaiMask = SkOTSetULONGBit<12>::value; 279562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ArabicMask = SkOTSetULONGBit<13>::value; 280562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG NKoMask = SkOTSetULONGBit<14>::value; 281562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG DevanagariMask = SkOTSetULONGBit<15>::value; 282562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BengaliMask = SkOTSetULONGBit<16>::value; 283562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GurmukhiMask = SkOTSetULONGBit<17>::value; 284562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GujaratiMask = SkOTSetULONGBit<18>::value; 285562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OriyaMask = SkOTSetULONGBit<19>::value; 286562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TamilMask = SkOTSetULONGBit<20>::value; 287562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TeluguMask = SkOTSetULONGBit<21>::value; 288562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KannadaMask = SkOTSetULONGBit<22>::value; 289562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MalayalamMask = SkOTSetULONGBit<23>::value; 290562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ThaiMask = SkOTSetULONGBit<24>::value; 291562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LaoMask = SkOTSetULONGBit<25>::value; 292562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GeorgianMask = SkOTSetULONGBit<26>::value; 293562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BalineseMask = SkOTSetULONGBit<27>::value; 294562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HangulJamoMask = SkOTSetULONGBit<28>::value; 295562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LatinExtendedAdditionalMask = SkOTSetULONGBit<29>::value; 296562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GreekExtendedMask = SkOTSetULONGBit<30>::value; 297562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GeneralPunctuationMask = SkOTSetULONGBit<31>::value; 298f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 299f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l1 { 300562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkOTSetULONGBit<32 - 32>::value; 301562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CurrencySymbolsMask = SkOTSetULONGBit<33 - 32>::value; 302562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkOTSetULONGBit<34 - 32>::value; 303562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LetterlikeSymbolsMask = SkOTSetULONGBit<35 - 32>::value; 304562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG NumberFormsMask = SkOTSetULONGBit<36 - 32>::value; 305562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ArrowsMask = SkOTSetULONGBit<37 - 32>::value; 306562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MathematicalOperatorsMask = SkOTSetULONGBit<38 - 32>::value; 307562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MiscellaneousTechnicalMask = SkOTSetULONGBit<39 - 32>::value; 308562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ControlPicturesMask = SkOTSetULONGBit<40 - 32>::value; 309562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkOTSetULONGBit<41 - 32>::value; 310562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG EnclosedAlphanumericsMask = SkOTSetULONGBit<42 - 32>::value; 311562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BoxDrawingMask = SkOTSetULONGBit<43 - 32>::value; 312562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BlockElementsMask = SkOTSetULONGBit<44 - 32>::value; 313562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GeometricShapesMask = SkOTSetULONGBit<45 - 32>::value; 314562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MiscellaneousSymbolsMask = SkOTSetULONGBit<46 - 32>::value; 315562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG DingbatsMask = SkOTSetULONGBit<47 - 32>::value; 316562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkOTSetULONGBit<48 - 32>::value; 317562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HiraganaMask = SkOTSetULONGBit<49 - 32>::value; 318562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KatakanaMask = SkOTSetULONGBit<50 - 32>::value; 319562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BopomofoMask = SkOTSetULONGBit<51 - 32>::value; 320562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HangulCompatibilityJamoMask = SkOTSetULONGBit<52 - 32>::value; 321562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG PhagsPaMask = SkOTSetULONGBit<53 - 32>::value; 322562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkOTSetULONGBit<54 - 32>::value; 323562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CJKCompatibilityMask = SkOTSetULONGBit<55 - 32>::value; 324562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HangulMask = SkOTSetULONGBit<56 - 32>::value; 325562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG NonPlane0Mask = SkOTSetULONGBit<57 - 32>::value; 326562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG PhoenicianMask = SkOTSetULONGBit<58 - 32>::value; 327562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkOTSetULONGBit<59 - 32>::value; 328562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG PrivateUseAreaMask = SkOTSetULONGBit<60 - 32>::value; 329562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkOTSetULONGBit<61 - 32>::value; 330562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkOTSetULONGBit<62 - 32>::value; 331562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ArabicPresentationFormsAMask = SkOTSetULONGBit<63 - 32>::value; 332f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 333f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l2 { 334562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CombiningHalfMarksMask = SkOTSetULONGBit<64 - 64>::value; 335562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CJKCompatibilityFormsMask = SkOTSetULONGBit<65 - 64>::value; 336562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SmallFormVariantsMask = SkOTSetULONGBit<66 - 64>::value; 337562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ArabicPresentationFormsBMask = SkOTSetULONGBit<67 - 64>::value; 338562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkOTSetULONGBit<68 - 64>::value; 339562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SpecialsMask = SkOTSetULONGBit<69 - 64>::value; 340562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TibetanMask = SkOTSetULONGBit<70 - 64>::value; 341562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SyriacMask = SkOTSetULONGBit<71 - 64>::value; 342562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ThaanaMask = SkOTSetULONGBit<72 - 64>::value; 343562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SinhalaMask = SkOTSetULONGBit<73 - 64>::value; 344562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MyanmarMask = SkOTSetULONGBit<74 - 64>::value; 345562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG EthiopicMask = SkOTSetULONGBit<75 - 64>::value; 346562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CherokeeMask = SkOTSetULONGBit<76 - 64>::value; 347562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkOTSetULONGBit<77 - 64>::value; 348562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OghamMask = SkOTSetULONGBit<78 - 64>::value; 349562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG RunicMask = SkOTSetULONGBit<79 - 64>::value; 350562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KhmerMask = SkOTSetULONGBit<80 - 64>::value; 351562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MongolianMask = SkOTSetULONGBit<81 - 64>::value; 352562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BrailleMask = SkOTSetULONGBit<82 - 64>::value; 353562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG YiMask = SkOTSetULONGBit<83 - 64>::value; 354562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkOTSetULONGBit<84 - 64>::value; 355562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OldItalicMask = SkOTSetULONGBit<85 - 64>::value; 356562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GothicMask = SkOTSetULONGBit<86 - 64>::value; 357562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG DeseretMask = SkOTSetULONGBit<87 - 64>::value; 358562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MusicalSymbolsMask = SkOTSetULONGBit<88 - 64>::value; 359562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkOTSetULONGBit<89 - 64>::value; 360562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG PrivateUseMask = SkOTSetULONGBit<90 - 64>::value; 361562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG VariationSelectorsMask = SkOTSetULONGBit<91 - 64>::value; 362562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TagsMask = SkOTSetULONGBit<92 - 64>::value; 363562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LimbuMask = SkOTSetULONGBit<93 - 64>::value; 364562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TaiLeMask = SkOTSetULONGBit<94 - 64>::value; 365562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG NewTaiLueMask = SkOTSetULONGBit<95 - 64>::value; 366f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 367f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l3 { 368562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG BugineseMask = SkOTSetULONGBit<96 - 96>::value; 369562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG GlagoliticMask = SkOTSetULONGBit<97 - 96>::value; 370562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TifinaghMask = SkOTSetULONGBit<98 - 96>::value; 371562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG YijingHexagramSymbolsMask = SkOTSetULONGBit<99 - 96>::value; 372562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SylotiNagriMask = SkOTSetULONGBit<100 - 96>::value; 373562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LinearB_AegeanNumbersMask = SkOTSetULONGBit<101 - 96>::value; 374562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG AncientGreekNumbersMask = SkOTSetULONGBit<102 - 96>::value; 375562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG UgariticMask = SkOTSetULONGBit<103 - 96>::value; 376562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OldPersianMask = SkOTSetULONGBit<104 - 96>::value; 377562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ShavianMask = SkOTSetULONGBit<105 - 96>::value; 378562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OsmanyaMask = SkOTSetULONGBit<106 - 96>::value; 379562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CypriotSyllabaryMask = SkOTSetULONGBit<107 - 96>::value; 380562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KharoshthiMask = SkOTSetULONGBit<108 - 96>::value; 381562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG TaiXuanJingSymbolsMask = SkOTSetULONGBit<109 - 96>::value; 382562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CuneiformMask = SkOTSetULONGBit<110 - 96>::value; 383562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG CountingRodNumeralsMask = SkOTSetULONGBit<111 - 96>::value; 384562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SundaneseMask = SkOTSetULONGBit<112 - 96>::value; 385562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG LepchaMask = SkOTSetULONGBit<113 - 96>::value; 386562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OlChikiMask = SkOTSetULONGBit<114 - 96>::value; 387562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SaurashtraMask = SkOTSetULONGBit<115 - 96>::value; 388562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KayahLiMask = SkOTSetULONGBit<116 - 96>::value; 389562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG RejangMask = SkOTSetULONGBit<117 - 96>::value; 390562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ChamMask = SkOTSetULONGBit<118 - 96>::value; 391562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG AncientSymbolsMask = SkOTSetULONGBit<119 - 96>::value; 392562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG PhaistosDiscMask = SkOTSetULONGBit<120 - 96>::value; 393562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Carian_Lycian_LydianMask = SkOTSetULONGBit<121 - 96>::value; 394562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG DominoTiles_MahjongTilesMask = SkOTSetULONGBit<122 - 96>::value; 395f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 396f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_ULONG value[4]; 397f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } raw; 398f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } ulUnicodeRange; 399f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_CHAR achVendID[4]; 400f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com union Selection { 401f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Field { 402f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //8-15 403f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 404f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com WWS, 405f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Oblique, 406f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved10, 407f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved11, 408f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved12, 409f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved13, 410f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved14, 411f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved15) 412f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //0-7 413f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 414f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Italic, 415f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Underscore, 416f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Negative, 417f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Outlined, 418f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Strikeout, 419f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Bold, 420f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Regular, 421f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com UseTypoMetrics) 422f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } field; 423f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Raw { 424562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; 425562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; 426562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; 427562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; 428562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; 429562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; 430562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; 431562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT UseTypoMetricsMask = SkOTSetUSHORTBit<7>::value; 432562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT WWSMask = SkOTSetUSHORTBit<8>::value; 433562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_USHORT ObliqueMask = SkOTSetUSHORTBit<9>::value; 434f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT value; 435f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } raw; 436f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } fsSelection; 437f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usFirstCharIndex; 438f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usLastCharIndex; 439f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //version0 440f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT sTypoAscender; 441f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT sTypoDescender; 442f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT sTypoLineGap; 443f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usWinAscent; 444f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usWinDescent; 445f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //version1 446f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com union CodePageRange { 447f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Field { 448f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 24-31 449f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 450f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved24, 451f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved25, 452f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved26, 453f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved27, 454f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved28, 455f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MacintoshCharacterSet, 456f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com OEMCharacterSet, 457f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SymbolCharacterSet) 458f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 16-23 459f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 460f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Thai_874, 461f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com JISJapan_932, 462f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ChineseSimplified_936, 463f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com KoreanWansung_949, 464f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com ChineseTraditional_950, 465f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com KoreanJohab_1361, 466f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved22, 467f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved23) 468f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 8-15 469f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 470f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Vietnamese, 471f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved09, 472f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved10, 473f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved11, 474f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved12, 475f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved13, 476f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved14, 477f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved15) 478f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l0 0-7 479f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 480f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Latin1_1252, 481f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Latin2EasternEurope_1250, 482f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Cyrillic_1251, 483f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Greek_1253, 484f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Turkish_1254, 485f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Hebrew_1255, 486f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Arabic_1256, 487f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com WindowsBaltic_1257) 488f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 489f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 24-31 490f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 491f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com IBMTurkish_857, 492f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com IBMCyrillic_855, 493f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Latin2_852, 494f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSBaltic_775, 495f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Greek_737, 496f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Arabic_708, 497f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com WELatin1_850, 498f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com US_437) 499f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 16-23 500f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 501f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com IBMGreek_869, 502f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSRussian_866, 503f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSNordic_865, 504f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Arabic_864, 505f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSCanadianFrench_863, 506f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Hebrew_862, 507f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSIcelandic_861, 508f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com MSDOSPortuguese_860) 509f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 8-15 510f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 511f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved40, 512f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved41, 513f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved42, 514f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved43, 515f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved44, 516f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved45, 517f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved46, 518f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved47) 519f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //l1 0-7 520f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_BYTE_BITFIELD( 521f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved32, 522f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved33, 523f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved34, 524f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved35, 525f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved36, 526f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved37, 527f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved38, 528f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com Reserved39) 529f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } field; 530f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct Raw { 531f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l0 { 532562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Latin1_1252Mask = SkOTSetULONGBit<0>::value; 533562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkOTSetULONGBit<1>::value; 534562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Cyrillic_1251Mask = SkOTSetULONGBit<2>::value; 535562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Greek_1253Mask = SkOTSetULONGBit<3>::value; 536562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Turkish_1254Mask = SkOTSetULONGBit<4>::value; 537562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Hebrew_1255Mask = SkOTSetULONGBit<5>::value; 538562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Arabic_1256Mask = SkOTSetULONGBit<6>::value; 539562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG WindowsBaltic_1257Mask = SkOTSetULONGBit<7>::value; 540562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Vietnamese_1258Mask = SkOTSetULONGBit<8>::value; 541562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Thai_874Mask = SkOTSetULONGBit<16>::value; 542562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG JISJapan_932Mask = SkOTSetULONGBit<17>::value; 543562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ChineseSimplified_936Mask = SkOTSetULONGBit<18>::value; 544562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KoreanWansung_949Mask = SkOTSetULONGBit<19>::value; 545562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG ChineseTraditional_950Mask = SkOTSetULONGBit<20>::value; 546562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG KoreanJohab_1361Mask = SkOTSetULONGBit<21>::value; 547562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MacintoshCharacterSetMask = SkOTSetULONGBit<29>::value; 548562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG OEMCharacterSetMask = SkOTSetULONGBit<30>::value; 549562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG SymbolCharacterSetMask = SkOTSetULONGBit<31>::value; 550f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 551f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com struct l1 { 552562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG IBMGreek_869Mask = SkOTSetULONGBit<48 - 32>::value; 553562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSRussian_866Mask = SkOTSetULONGBit<49 - 32>::value; 554562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSNordic_865Mask = SkOTSetULONGBit<50 - 32>::value; 555562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Arabic_864Mask = SkOTSetULONGBit<51 - 32>::value; 556562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkOTSetULONGBit<52 - 32>::value; 557562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Hebrew_862Mask = SkOTSetULONGBit<53 - 32>::value; 558562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value; 559562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkOTSetULONGBit<55 - 32>::value; 560562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG IBMTurkish_857Mask = SkOTSetULONGBit<56 - 32>::value; 561562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG IBMCyrillic_855Mask = SkOTSetULONGBit<57 - 32>::value; 562562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Latin2_852Mask = SkOTSetULONGBit<58 - 32>::value; 563562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG MSDOSBaltic_775Mask = SkOTSetULONGBit<59 - 32>::value; 564562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Greek_737Mask = SkOTSetULONGBit<60 - 32>::value; 565562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG Arabic_708Mask = SkOTSetULONGBit<61 - 32>::value; 566562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG WELatin1_850Mask = SkOTSetULONGBit<62 - 32>::value; 567562b2e67a29f24db4c258aa2fa59cd7b4ee15174bungeman@google.com static const SK_OT_ULONG US_437Mask = SkOTSetULONGBit<63 - 32>::value; 568f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com }; 569f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_ULONG value[2]; 570f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } raw; 571f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com } ulCodePageRange; 572f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com //version2 573f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT sxHeight; 574f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_SHORT sCapHeight; 575f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usDefaultChar; 576f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usBreakChar; 577f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com SK_OT_USHORT usMaxContext; 578f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com}; 579f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 580f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#pragma pack(pop) 581f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 582f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 583f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.comSK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V4) == 96, sizeof_SkOTTableOS2_V4_not_96); 584f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com 585f8d1aee2526a384a570b082b17f3a19fe72bd15ebungeman@google.com#endif 586