180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru/* 280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Copyright 2012 Google Inc. 380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * 480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * Use of this source code is governed by a BSD-style license that can be 580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru * found in the LICENSE file. 680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru */ 780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#ifndef SkOTTable_OS_2_V3_DEFINED 980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#define SkOTTable_OS_2_V3_DEFINED 1080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkEndian.h" 1280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkIBMFamilyClass.h" 1380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkOTTableTypes.h" 1480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkPanose.h" 1580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#include "SkTypedEnum.h" 1680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#pragma pack(push, 1) 1880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 1980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Querustruct SkOTTableOS2_V3 { 2080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT version; 21363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(3); 22363e546ed626b6dbbc42f5db87b3594bc0b5944bDerek Sollenberger 2380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT xAvgCharWidth; 2480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct WeightClass { 2580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_TYPED_ENUM(Value, SK_OT_USHORT, 2680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Thin, SkTEndian_SwapBE16(100))) 2780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((ExtraLight, SkTEndian_SwapBE16(200))) 2880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Light, SkTEndian_SwapBE16(300))) 2980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Normal, SkTEndian_SwapBE16(400))) 3080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Medium, SkTEndian_SwapBE16(500))) 3180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((SemiBold, SkTEndian_SwapBE16(600))) 3280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Bold, SkTEndian_SwapBE16(700))) 3380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((ExtraBold, SkTEndian_SwapBE16(800))) 3480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Black, SkTEndian_SwapBE16(900))) 3580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_SEQ_END, 3680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_SEQ_END) 3780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT value; 3880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } usWeightClass; 3980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct WidthClass { 4080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_TYPED_ENUM(Value, SK_OT_USHORT, 4180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((UltraCondensed, SkTEndian_SwapBE16(1))) 4280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((ExtraCondensed, SkTEndian_SwapBE16(2))) 4380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Condensed, SkTEndian_SwapBE16(3))) 4480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((SemiCondensed, SkTEndian_SwapBE16(4))) 4580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Medium, SkTEndian_SwapBE16(5))) 4680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((SemiExpanded, SkTEndian_SwapBE16(6))) 4780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((Expanded, SkTEndian_SwapBE16(7))) 4880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((ExtraExpanded, SkTEndian_SwapBE16(8))) 4980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ((UltraExpanded, SkTEndian_SwapBE16(9))) 5080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_SEQ_END, 5180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru (value)SK_SEQ_END) 5280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } usWidthClass; 5380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru union Type { 5480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Field { 5580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //8-15 5680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 5780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru NoSubsetting, 5880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Bitmap, 5980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved10, 6080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved11, 6180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved12, 6280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved13, 6380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved14, 6480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved15) 6580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //0-7 6680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 6780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved00, 6880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Restricted, 6980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru PreviewPrint, 7080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Editable, 7180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved04, 7280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved05, 7380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved06, 7480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved07) 7580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } field; 7680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Raw { 7780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0); 7880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1); 7980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2); 8080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3); 8180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT NoSubsettingMask = SkTEndian_SwapBE16(1 << 8); 8280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT BitmapMask = SkTEndian_SwapBE16(1 << 9); 8380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT value; 8480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } raw; 8580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } fsType; 8680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySubscriptXSize; 8780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySubscriptYSize; 8880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySubscriptXOffset; 8980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySubscriptYOffset; 9080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySuperscriptXSize; 9180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySuperscriptYSize; 9280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySuperscriptXOffset; 9380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT ySuperscriptYOffset; 9480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT yStrikeoutSize; 9580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT yStrikeoutPosition; 9680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkIBMFamilyClass sFamilyClass; 9780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SkPanose panose; 9880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru union UnicodeRange { 9980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Field { 10080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 24-31 10180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 10280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Thai, 10380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Lao, 10480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Georgian, 10580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved027, 10680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru HangulJamo, 10780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru LatinExtendedAdditional, 10880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru GreekExtended, 10980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru GeneralPunctuation) 11080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 16-23 11180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 11280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Bengali, 11380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Gurmukhi, 11480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Gujarati, 11580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Oriya, 11680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Tamil, 11780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Telugu, 11880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Kannada, 11980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Malayalam) 12080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 8-15 12180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 12280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved008, 12380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Cyrillic, 12480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Armenian, 12580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Hebrew, 12680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved012, 12780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Arabic, 12880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved014, 12980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Devanagari) 13080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 0-7 13180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 13280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru BasicLatin, 13380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Latin1Supplement, 13480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru LatinExtendedA, 13580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru LatinExtendedB, 13680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru IPAExtensions, 13780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SpacingModifierLetters, 13880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CombiningDiacriticalMarks, 13980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru GreekAndCoptic) 14080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 14180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 24-31 14280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 14380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Hangul, 14480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru NonPlane0, 14580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved058, 14680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CJKUnifiedIdeographs, 14780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru PrivateUseArea, 14880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CJKCompatibilityIdeographs, 14980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru AlphabeticPresentationForms, 15080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ArabicPresentationFormsA) 15180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 16-23 15280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 15380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CJKSymbolsAndPunctuation, 15480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Hiragana, 15580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Katakana, 15680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Bopomofo, 15780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru HangulCompatibilityJamo, 15880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved053, 15980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru EnclosedCJKLettersAndMonths, 16080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CJKCompatibility) 16180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 8-15 16280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 16380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ControlPictures, 16480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru OpticalCharacterRecognition, 16580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru EnclosedAlphanumerics, 16680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru BoxDrawing, 16780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru BlockElements, 16880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru GeometricShapes, 16980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MiscellaneousSymbols, 17080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Dingbats) 17180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 0-7 17280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 17380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SuperscriptsAndSubscripts, 17480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CurrencySymbols, 17580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CombiningDiacriticalMarksForSymbols, 17680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru LetterlikeSymbols, 17780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru NumberForms, 17880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Arrows, 17980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MathematicalOperators, 18080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MiscellaneousTechnical) 18180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 18280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l2 24-31 18380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 18480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MusicalSymbols, 18580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MathematicalAlphanumericSymbols, 18680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru PrivateUse, 18780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru VariationSelectors, 18880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Tags, 18980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved093, 19080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved094, 19180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved095) 19280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l2 16-23 19380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 19480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Khmer, 19580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Mongolian, 19680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Braille, 19780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Yi, 19880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Tagalog_Hanunoo_Buhid_Tagbanwa, 19980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru OldItalic, 20080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Gothic, 20180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Deseret) 20280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l2 8-15 20380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 20480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Thaana, 20580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Sinhala, 20680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Myanmar, 20780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Ethiopic, 20880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Cherokee, 20980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru UnifiedCanadianSyllabics, 21080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Ogham, 21180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Runic) 21280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l2 0-7 21380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 21480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CombiningHalfMarks, 21580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru CJKCompatibilityForms, 21680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SmallFormVariants, 21780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ArabicPresentationFormsB, 21880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru HalfwidthAndFullwidthForms, 21980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Specials, 22080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Tibetan, 22180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Syriac) 22280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 22380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l3 24-31 22480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 22580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved120, 22680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved121, 22780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved122, 22880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved123, 22980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved124, 23080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved125, 23180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved126, 23280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved127) 23380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l3 16-23 23480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 23580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved112, 23680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved113, 23780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved114, 23880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved115, 23980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved116, 24080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved117, 24180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved118, 24280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved119) 24380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l3 8-15 24480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 24580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved104, 24680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved105, 24780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved106, 24880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved107, 24980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved108, 25080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved109, 25180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved110, 25280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved111) 25380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l3 0-7 25480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 25580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved096, 25680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved097, 25780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved098, 25880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved099, 25980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved100, 26080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved101, 26180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved102, 26280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved103) 26380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } field; 26480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Raw { 26580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct l0 { 26680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0); 26780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1); 26880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2); 26980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3); 27080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4); 27180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5); 27280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6); 27380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GreekAndCopticMask = SkTEndian_SwapBE32(1 << 7); 27480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 27580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9); 27680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10); 27780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HebrewMask = SkTEndian_SwapBE32(1 << 11); 27880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 27980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ArabicMask = SkTEndian_SwapBE32(1 << 13); 28080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 28180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15); 28280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16); 28380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17); 28480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18); 28580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19); 28680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20); 28780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21); 28880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22); 28980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23); 29080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24); 29180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25); 29280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GeorgianMask = SkTEndian_SwapBE32(1 << 26); 29380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 29480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28); 29580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29); 29680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30); 29780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31); 29880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 29980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct l1 { 30080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32)); 30180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32)); 30280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32)); 30380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32)); 30480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32)); 30580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32)); 30680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32)); 30780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32)); 30880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32)); 30980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32)); 31080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32)); 31180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32)); 31280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32)); 31380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32)); 31480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32)); 31580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32)); 31680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32)); 31780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32)); 31880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32)); 31980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32)); 32080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32)); 32180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 32280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32)); 32380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32)); 32480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32)); 32580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG NonPlane0Mask = SkTEndian_SwapBE32(1 << (57 - 32)); 32680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //Reserved 32780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32)); 32880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32)); 32980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32)); 33080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32)); 33180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32)); 33280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 33380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct l2 { 33480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64)); 33580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64)); 33680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64)); 33780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64)); 33880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64)); 33980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64)); 34080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG TibetanMask = SkTEndian_SwapBE32(1 << (70 - 64)); 34180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SyriacMask = SkTEndian_SwapBE32(1 << (71 - 64)); 34280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ThaanaMask = SkTEndian_SwapBE32(1 << (72 - 64)); 34380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SinhalaMask = SkTEndian_SwapBE32(1 << (73 - 64)); 34480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MyanmarMask = SkTEndian_SwapBE32(1 << (74 - 64)); 34580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG EthiopicMask = SkTEndian_SwapBE32(1 << (75 - 64)); 34680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG CherokeeMask = SkTEndian_SwapBE32(1 << (76 - 64)); 34780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkTEndian_SwapBE32(1 << (77 - 64)); 34880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG OghamMask = SkTEndian_SwapBE32(1 << (78 - 64)); 34980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG RunicMask = SkTEndian_SwapBE32(1 << (79 - 64)); 35080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG KhmerMask = SkTEndian_SwapBE32(1 << (80 - 64)); 35180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MongolianMask = SkTEndian_SwapBE32(1 << (81 - 64)); 35280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG BrailleMask = SkTEndian_SwapBE32(1 << (82 - 64)); 35380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG YiMask = SkTEndian_SwapBE32(1 << (83 - 64)); 35480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkTEndian_SwapBE32(1 << (84 - 64)); 35580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG OldItalicMask = SkTEndian_SwapBE32(1 << (85 - 64)); 35680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG GothicMask = SkTEndian_SwapBE32(1 << (86 - 64)); 35780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG DeseretMask = SkTEndian_SwapBE32(1 << (87 - 64)); 35880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MusicalSymbolsMask = SkTEndian_SwapBE32(1 << (88 - 64)); 35980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkTEndian_SwapBE32(1 << (89 - 64)); 36080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG PrivateUseMask = SkTEndian_SwapBE32(1 << (90 - 64)); 36180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG VariationSelectorsMask = SkTEndian_SwapBE32(1 << (91 - 64)); 36280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG TagsMask = SkTEndian_SwapBE32(1 << (92 - 64)); 36380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 36480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_ULONG value[4]; 36580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } raw; 36680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } ulUnicodeRange; 36780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_CHAR achVendID[4]; 36880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru union Selection { 36980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Field { 37080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //8-15 37180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 37280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved08, 37380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved09, 37480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved10, 37580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved11, 37680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved12, 37780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved13, 37880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved14, 37980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved15) 38080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //0-7 38180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 38280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Italic, 38380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Underscore, 38480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Negative, 38580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Outlined, 38680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Strikeout, 38780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Bold, 38880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Regular, 38980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved07) 39080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } field; 39180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Raw { 39280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0); 39380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1); 39480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2); 39580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3); 39680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4); 39780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5); 39880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6); 39980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT value; 40080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } raw; 40180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } fsSelection; 40280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usFirstCharIndex; 40380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usLastCharIndex; 40480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //version0 40580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT sTypoAscender; 40680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT sTypoDescender; 40780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT sTypoLineGap; 40880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usWinAscent; 40980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usWinDescent; 41080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //version1 41180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru union CodePageRange { 41280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Field { 41380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 24-31 41480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 41580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved24, 41680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved25, 41780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved26, 41880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved27, 41980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved28, 42080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MacintoshCharacterSet, 42180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru OEMCharacterSet, 42280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SymbolCharacterSet) 42380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 16-23 42480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 42580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Thai_874, 42680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru JISJapan_932, 42780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ChineseSimplified_936, 42880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru KoreanWansung_949, 42980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru ChineseTraditional_950, 43080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru KoreanJohab_1361, 43180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved22, 43280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved23) 43380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 8-15 43480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 43580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Vietnamese, 43680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved09, 43780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved10, 43880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved11, 43980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved12, 44080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved13, 44180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved14, 44280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved15) 44380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l0 0-7 44480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 44580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Latin1_1252, 44680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Latin2EasternEurope_1250, 44780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Cyrillic_1251, 44880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Greek_1253, 44980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Turkish_1254, 45080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Hebrew_1255, 45180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Arabic_1256, 45280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru WindowsBaltic_1257) 45380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 45480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 24-31 45580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 45680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru IBMTurkish_857, 45780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru IBMCyrillic_855, 45880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Latin2_852, 45980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSBaltic_775, 46080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Greek_737, 46180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Arabic_708, 46280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru WELatin1_850, 46380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru US_437) 46480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 16-23 46580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 46680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru IBMGreek_869, 46780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSRussian_866, 46880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSNordic_865, 46980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Arabic_864, 47080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSCanadianFrench_863, 47180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Hebrew_862, 47280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSIcelandic_861, 47380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru MSDOSPortuguese_860) 47480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 8-15 47580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 47680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved40, 47780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved41, 47880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved42, 47980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved43, 48080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved44, 48180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved45, 48280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved46, 48380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved47) 48480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //l1 0-7 48580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_BYTE_BITFIELD( 48680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved32, 48780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved33, 48880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved34, 48980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved35, 49080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved36, 49180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved37, 49280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved38, 49380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru Reserved39) 49480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } field; 49580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct Raw { 49680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct l0 { 49780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0); 49880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1); 49980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2); 50080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3); 50180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4); 50280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5); 50380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6); 50480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7); 50580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Vietnamese_1258Mask = SkTEndian_SwapBE32(1 << 8); 50680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16); 50780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17); 50880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18); 50980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19); 51080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20); 51180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21); 51280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29); 51380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30); 51480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31); 51580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 51680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru struct l1 { 51780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32)); 51880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32)); 51980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32)); 52080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32)); 52180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32)); 52280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32)); 52380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32)); 52480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32)); 52580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32)); 52680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32)); 52780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32)); 52880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32)); 52980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32)); 53080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32)); 53180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32)); 53280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32)); 53380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru }; 53480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_ULONG value[2]; 53580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } raw; 53680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru } ulCodePageRange; 53780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru //version2 53880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT sxHeight; 53980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_SHORT sCapHeight; 54080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usDefaultChar; 54180bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usBreakChar; 54280bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru SK_OT_USHORT usMaxContext; 54380bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru}; 54480bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 54580bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#pragma pack(pop) 54680bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 54780bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 54880bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste QueruSK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V3) == 96, sizeof_SkOTTableOS2_V3_not_96); 54980bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru 55080bacfeb4bda06541e8695bd502229727bccfeaJean-Baptiste Queru#endif 551