1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2012 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#ifndef SkOTTable_OS_2_V4_DEFINED
9cb93a386Sopenharmony_ci#define SkOTTable_OS_2_V4_DEFINED
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci#include "src/core/SkEndian.h"
12cb93a386Sopenharmony_ci#include "src/sfnt/SkIBMFamilyClass.h"
13cb93a386Sopenharmony_ci#include "src/sfnt/SkOTTableTypes.h"
14cb93a386Sopenharmony_ci#include "src/sfnt/SkPanose.h"
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_ci#pragma pack(push, 1)
17cb93a386Sopenharmony_ci
18cb93a386Sopenharmony_cistruct SkOTTableOS2_V4 {
19cb93a386Sopenharmony_ci    SK_OT_USHORT version;
20cb93a386Sopenharmony_ci    static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(4);
21cb93a386Sopenharmony_ci
22cb93a386Sopenharmony_ci    SK_OT_SHORT xAvgCharWidth;
23cb93a386Sopenharmony_ci    struct WeightClass {
24cb93a386Sopenharmony_ci        enum Value : SK_OT_USHORT {
25cb93a386Sopenharmony_ci            Thin = SkTEndian_SwapBE16(100),
26cb93a386Sopenharmony_ci            ExtraLight = SkTEndian_SwapBE16(200),
27cb93a386Sopenharmony_ci            Light = SkTEndian_SwapBE16(300),
28cb93a386Sopenharmony_ci            Normal = SkTEndian_SwapBE16(400),
29cb93a386Sopenharmony_ci            Medium = SkTEndian_SwapBE16(500),
30cb93a386Sopenharmony_ci            SemiBold = SkTEndian_SwapBE16(600),
31cb93a386Sopenharmony_ci            Bold = SkTEndian_SwapBE16(700),
32cb93a386Sopenharmony_ci            ExtraBold = SkTEndian_SwapBE16(800),
33cb93a386Sopenharmony_ci            Black = SkTEndian_SwapBE16(900),
34cb93a386Sopenharmony_ci        };
35cb93a386Sopenharmony_ci        SK_OT_USHORT value;
36cb93a386Sopenharmony_ci    } usWeightClass;
37cb93a386Sopenharmony_ci    struct WidthClass {
38cb93a386Sopenharmony_ci        enum Value : SK_OT_USHORT {
39cb93a386Sopenharmony_ci            UltraCondensed = SkTEndian_SwapBE16(1),
40cb93a386Sopenharmony_ci            ExtraCondensed = SkTEndian_SwapBE16(2),
41cb93a386Sopenharmony_ci            Condensed = SkTEndian_SwapBE16(3),
42cb93a386Sopenharmony_ci            SemiCondensed = SkTEndian_SwapBE16(4),
43cb93a386Sopenharmony_ci            Medium = SkTEndian_SwapBE16(5),
44cb93a386Sopenharmony_ci            SemiExpanded = SkTEndian_SwapBE16(6),
45cb93a386Sopenharmony_ci            Expanded = SkTEndian_SwapBE16(7),
46cb93a386Sopenharmony_ci            ExtraExpanded = SkTEndian_SwapBE16(8),
47cb93a386Sopenharmony_ci            UltraExpanded = SkTEndian_SwapBE16(9),
48cb93a386Sopenharmony_ci        } value;
49cb93a386Sopenharmony_ci    } usWidthClass;
50cb93a386Sopenharmony_ci    union Type {
51cb93a386Sopenharmony_ci        struct Field {
52cb93a386Sopenharmony_ci            //8-15
53cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
54cb93a386Sopenharmony_ci                NoSubsetting,
55cb93a386Sopenharmony_ci                Bitmap,
56cb93a386Sopenharmony_ci                Reserved10,
57cb93a386Sopenharmony_ci                Reserved11,
58cb93a386Sopenharmony_ci                Reserved12,
59cb93a386Sopenharmony_ci                Reserved13,
60cb93a386Sopenharmony_ci                Reserved14,
61cb93a386Sopenharmony_ci                Reserved15)
62cb93a386Sopenharmony_ci            //0-7
63cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
64cb93a386Sopenharmony_ci                Reserved00,
65cb93a386Sopenharmony_ci                Restricted,
66cb93a386Sopenharmony_ci                PreviewPrint,
67cb93a386Sopenharmony_ci                Editable,
68cb93a386Sopenharmony_ci                Reserved04,
69cb93a386Sopenharmony_ci                Reserved05,
70cb93a386Sopenharmony_ci                Reserved06,
71cb93a386Sopenharmony_ci                Reserved07)
72cb93a386Sopenharmony_ci        } field;
73cb93a386Sopenharmony_ci        struct Raw {
74cb93a386Sopenharmony_ci            static const SK_OT_USHORT Installable = 0;
75cb93a386Sopenharmony_ci            static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value;
76cb93a386Sopenharmony_ci            static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value;
77cb93a386Sopenharmony_ci            static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value;
78cb93a386Sopenharmony_ci            static const SK_OT_USHORT NoSubsettingMask = SkOTSetUSHORTBit<8>::value;
79cb93a386Sopenharmony_ci            static const SK_OT_USHORT BitmapMask = SkOTSetUSHORTBit<9>::value;
80cb93a386Sopenharmony_ci            SK_OT_USHORT value;
81cb93a386Sopenharmony_ci        } raw;
82cb93a386Sopenharmony_ci    } fsType;
83cb93a386Sopenharmony_ci    SK_OT_SHORT ySubscriptXSize;
84cb93a386Sopenharmony_ci    SK_OT_SHORT ySubscriptYSize;
85cb93a386Sopenharmony_ci    SK_OT_SHORT ySubscriptXOffset;
86cb93a386Sopenharmony_ci    SK_OT_SHORT ySubscriptYOffset;
87cb93a386Sopenharmony_ci    SK_OT_SHORT ySuperscriptXSize;
88cb93a386Sopenharmony_ci    SK_OT_SHORT ySuperscriptYSize;
89cb93a386Sopenharmony_ci    SK_OT_SHORT ySuperscriptXOffset;
90cb93a386Sopenharmony_ci    SK_OT_SHORT ySuperscriptYOffset;
91cb93a386Sopenharmony_ci    SK_OT_SHORT yStrikeoutSize;
92cb93a386Sopenharmony_ci    SK_OT_SHORT yStrikeoutPosition;
93cb93a386Sopenharmony_ci    SkIBMFamilyClass sFamilyClass;
94cb93a386Sopenharmony_ci    SkPanose panose;
95cb93a386Sopenharmony_ci    union UnicodeRange {
96cb93a386Sopenharmony_ci        struct Field {
97cb93a386Sopenharmony_ci            //l0 24-31
98cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
99cb93a386Sopenharmony_ci                Thai,
100cb93a386Sopenharmony_ci                Lao,
101cb93a386Sopenharmony_ci                Georgian,
102cb93a386Sopenharmony_ci                Balinese,
103cb93a386Sopenharmony_ci                HangulJamo,
104cb93a386Sopenharmony_ci                LatinExtendedAdditional,
105cb93a386Sopenharmony_ci                GreekExtended,
106cb93a386Sopenharmony_ci                GeneralPunctuation)
107cb93a386Sopenharmony_ci            //l0 16-23
108cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
109cb93a386Sopenharmony_ci                Bengali,
110cb93a386Sopenharmony_ci                Gurmukhi,
111cb93a386Sopenharmony_ci                Gujarati,
112cb93a386Sopenharmony_ci                Oriya,
113cb93a386Sopenharmony_ci                Tamil,
114cb93a386Sopenharmony_ci                Telugu,
115cb93a386Sopenharmony_ci                Kannada,
116cb93a386Sopenharmony_ci                Malayalam)
117cb93a386Sopenharmony_ci            //l0 8-15
118cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
119cb93a386Sopenharmony_ci                Coptic,
120cb93a386Sopenharmony_ci                Cyrillic,
121cb93a386Sopenharmony_ci                Armenian,
122cb93a386Sopenharmony_ci                Hebrew,
123cb93a386Sopenharmony_ci                Vai,
124cb93a386Sopenharmony_ci                Arabic,
125cb93a386Sopenharmony_ci                NKo,
126cb93a386Sopenharmony_ci                Devanagari)
127cb93a386Sopenharmony_ci            //l0 0-7
128cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
129cb93a386Sopenharmony_ci                BasicLatin,
130cb93a386Sopenharmony_ci                Latin1Supplement,
131cb93a386Sopenharmony_ci                LatinExtendedA,
132cb93a386Sopenharmony_ci                LatinExtendedB,
133cb93a386Sopenharmony_ci                IPAExtensions,
134cb93a386Sopenharmony_ci                SpacingModifierLetters,
135cb93a386Sopenharmony_ci                CombiningDiacriticalMarks,
136cb93a386Sopenharmony_ci                GreekAndCoptic)
137cb93a386Sopenharmony_ci
138cb93a386Sopenharmony_ci            //l1 24-31
139cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
140cb93a386Sopenharmony_ci                Hangul,
141cb93a386Sopenharmony_ci                NonPlane0,
142cb93a386Sopenharmony_ci                Phoenician,
143cb93a386Sopenharmony_ci                CJKUnifiedIdeographs,
144cb93a386Sopenharmony_ci                PrivateUseArea,
145cb93a386Sopenharmony_ci                CJKCompatibilityIdeographs,
146cb93a386Sopenharmony_ci                AlphabeticPresentationForms,
147cb93a386Sopenharmony_ci                ArabicPresentationFormsA)
148cb93a386Sopenharmony_ci            //l1 16-23
149cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
150cb93a386Sopenharmony_ci                CJKSymbolsAndPunctuation,
151cb93a386Sopenharmony_ci                Hiragana,
152cb93a386Sopenharmony_ci                Katakana,
153cb93a386Sopenharmony_ci                Bopomofo,
154cb93a386Sopenharmony_ci                HangulCompatibilityJamo,
155cb93a386Sopenharmony_ci                PhagsPa,
156cb93a386Sopenharmony_ci                EnclosedCJKLettersAndMonths,
157cb93a386Sopenharmony_ci                CJKCompatibility)
158cb93a386Sopenharmony_ci            //l1 8-15
159cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
160cb93a386Sopenharmony_ci                ControlPictures,
161cb93a386Sopenharmony_ci                OpticalCharacterRecognition,
162cb93a386Sopenharmony_ci                EnclosedAlphanumerics,
163cb93a386Sopenharmony_ci                BoxDrawing,
164cb93a386Sopenharmony_ci                BlockElements,
165cb93a386Sopenharmony_ci                GeometricShapes,
166cb93a386Sopenharmony_ci                MiscellaneousSymbols,
167cb93a386Sopenharmony_ci                Dingbats)
168cb93a386Sopenharmony_ci            //l1 0-7
169cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
170cb93a386Sopenharmony_ci                SuperscriptsAndSubscripts,
171cb93a386Sopenharmony_ci                CurrencySymbols,
172cb93a386Sopenharmony_ci                CombiningDiacriticalMarksForSymbols,
173cb93a386Sopenharmony_ci                LetterlikeSymbols,
174cb93a386Sopenharmony_ci                NumberForms,
175cb93a386Sopenharmony_ci                Arrows,
176cb93a386Sopenharmony_ci                MathematicalOperators,
177cb93a386Sopenharmony_ci                MiscellaneousTechnical)
178cb93a386Sopenharmony_ci
179cb93a386Sopenharmony_ci            //l2 24-31
180cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
181cb93a386Sopenharmony_ci                MusicalSymbols,
182cb93a386Sopenharmony_ci                MathematicalAlphanumericSymbols,
183cb93a386Sopenharmony_ci                PrivateUse,
184cb93a386Sopenharmony_ci                VariationSelectors,
185cb93a386Sopenharmony_ci                Tags,
186cb93a386Sopenharmony_ci                Limbu,
187cb93a386Sopenharmony_ci                TaiLe,
188cb93a386Sopenharmony_ci                NewTaiLue)
189cb93a386Sopenharmony_ci            //l2 16-23
190cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
191cb93a386Sopenharmony_ci                Khmer,
192cb93a386Sopenharmony_ci                Mongolian,
193cb93a386Sopenharmony_ci                Braille,
194cb93a386Sopenharmony_ci                Yi,
195cb93a386Sopenharmony_ci                Tagalog_Hanunoo_Buhid_Tagbanwa,
196cb93a386Sopenharmony_ci                OldItalic,
197cb93a386Sopenharmony_ci                Gothic,
198cb93a386Sopenharmony_ci                Deseret)
199cb93a386Sopenharmony_ci            //l2 8-15
200cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
201cb93a386Sopenharmony_ci                Thaana,
202cb93a386Sopenharmony_ci                Sinhala,
203cb93a386Sopenharmony_ci                Myanmar,
204cb93a386Sopenharmony_ci                Ethiopic,
205cb93a386Sopenharmony_ci                Cherokee,
206cb93a386Sopenharmony_ci                UnifiedCanadianSyllabics,
207cb93a386Sopenharmony_ci                Ogham,
208cb93a386Sopenharmony_ci                Runic)
209cb93a386Sopenharmony_ci            //l2 0-7
210cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
211cb93a386Sopenharmony_ci                CombiningHalfMarks,
212cb93a386Sopenharmony_ci                CJKCompatibilityForms,
213cb93a386Sopenharmony_ci                SmallFormVariants,
214cb93a386Sopenharmony_ci                ArabicPresentationFormsB,
215cb93a386Sopenharmony_ci                HalfwidthAndFullwidthForms,
216cb93a386Sopenharmony_ci                Specials,
217cb93a386Sopenharmony_ci                Tibetan,
218cb93a386Sopenharmony_ci                Syriac)
219cb93a386Sopenharmony_ci
220cb93a386Sopenharmony_ci            //l3 24-31
221cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
222cb93a386Sopenharmony_ci                PhaistosDisc,
223cb93a386Sopenharmony_ci                Carian_Lycian_Lydian,
224cb93a386Sopenharmony_ci                DominoTiles_MahjongTiles,
225cb93a386Sopenharmony_ci                Reserved123,
226cb93a386Sopenharmony_ci                Reserved124,
227cb93a386Sopenharmony_ci                Reserved125,
228cb93a386Sopenharmony_ci                Reserved126,
229cb93a386Sopenharmony_ci                Reserved127)
230cb93a386Sopenharmony_ci            //l3 16-23
231cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
232cb93a386Sopenharmony_ci                Sundanese,
233cb93a386Sopenharmony_ci                Lepcha,
234cb93a386Sopenharmony_ci                OlChiki,
235cb93a386Sopenharmony_ci                Saurashtra,
236cb93a386Sopenharmony_ci                KayahLi,
237cb93a386Sopenharmony_ci                Rejang,
238cb93a386Sopenharmony_ci                Cham,
239cb93a386Sopenharmony_ci                AncientSymbols)
240cb93a386Sopenharmony_ci            //l3 8-15
241cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
242cb93a386Sopenharmony_ci                OldPersian,
243cb93a386Sopenharmony_ci                Shavian,
244cb93a386Sopenharmony_ci                Osmanya,
245cb93a386Sopenharmony_ci                CypriotSyllabary,
246cb93a386Sopenharmony_ci                Kharoshthi,
247cb93a386Sopenharmony_ci                TaiXuanJingSymbols,
248cb93a386Sopenharmony_ci                Cuneiform,
249cb93a386Sopenharmony_ci                CountingRodNumerals)
250cb93a386Sopenharmony_ci            //l3 0-7
251cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
252cb93a386Sopenharmony_ci                Buginese,
253cb93a386Sopenharmony_ci                Glagolitic,
254cb93a386Sopenharmony_ci                Tifinagh,
255cb93a386Sopenharmony_ci                YijingHexagramSymbols,
256cb93a386Sopenharmony_ci                SylotiNagri,
257cb93a386Sopenharmony_ci                LinearB_AegeanNumbers,
258cb93a386Sopenharmony_ci                AncientGreekNumbers,
259cb93a386Sopenharmony_ci                Ugaritic)
260cb93a386Sopenharmony_ci        } field;
261cb93a386Sopenharmony_ci        struct Raw {
262cb93a386Sopenharmony_ci            struct l0 {
263cb93a386Sopenharmony_ci                static const SK_OT_ULONG BasicLatinMask = SkOTSetULONGBit<0>::value;
264cb93a386Sopenharmony_ci                static const SK_OT_ULONG Latin1SupplementMask = SkOTSetULONGBit<1>::value;
265cb93a386Sopenharmony_ci                static const SK_OT_ULONG LatinExtendedAMask = SkOTSetULONGBit<2>::value;
266cb93a386Sopenharmony_ci                static const SK_OT_ULONG LatinExtendedBMask = SkOTSetULONGBit<3>::value;
267cb93a386Sopenharmony_ci                static const SK_OT_ULONG IPAExtensionsMask = SkOTSetULONGBit<4>::value;
268cb93a386Sopenharmony_ci                static const SK_OT_ULONG SpacingModifierLettersMask = SkOTSetULONGBit<5>::value;
269cb93a386Sopenharmony_ci                static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkOTSetULONGBit<6>::value;
270cb93a386Sopenharmony_ci                static const SK_OT_ULONG GreekAndCopticMask = SkOTSetULONGBit<7>::value;
271cb93a386Sopenharmony_ci                static const SK_OT_ULONG CopticMask = SkOTSetULONGBit<8>::value;
272cb93a386Sopenharmony_ci                static const SK_OT_ULONG CyrillicMask = SkOTSetULONGBit<9>::value;
273cb93a386Sopenharmony_ci                static const SK_OT_ULONG ArmenianMask = SkOTSetULONGBit<10>::value;
274cb93a386Sopenharmony_ci                static const SK_OT_ULONG HebrewMask = SkOTSetULONGBit<11>::value;
275cb93a386Sopenharmony_ci                static const SK_OT_ULONG VaiMask = SkOTSetULONGBit<12>::value;
276cb93a386Sopenharmony_ci                static const SK_OT_ULONG ArabicMask = SkOTSetULONGBit<13>::value;
277cb93a386Sopenharmony_ci                static const SK_OT_ULONG NKoMask = SkOTSetULONGBit<14>::value;
278cb93a386Sopenharmony_ci                static const SK_OT_ULONG DevanagariMask = SkOTSetULONGBit<15>::value;
279cb93a386Sopenharmony_ci                static const SK_OT_ULONG BengaliMask = SkOTSetULONGBit<16>::value;
280cb93a386Sopenharmony_ci                static const SK_OT_ULONG GurmukhiMask = SkOTSetULONGBit<17>::value;
281cb93a386Sopenharmony_ci                static const SK_OT_ULONG GujaratiMask = SkOTSetULONGBit<18>::value;
282cb93a386Sopenharmony_ci                static const SK_OT_ULONG OriyaMask = SkOTSetULONGBit<19>::value;
283cb93a386Sopenharmony_ci                static const SK_OT_ULONG TamilMask = SkOTSetULONGBit<20>::value;
284cb93a386Sopenharmony_ci                static const SK_OT_ULONG TeluguMask = SkOTSetULONGBit<21>::value;
285cb93a386Sopenharmony_ci                static const SK_OT_ULONG KannadaMask = SkOTSetULONGBit<22>::value;
286cb93a386Sopenharmony_ci                static const SK_OT_ULONG MalayalamMask = SkOTSetULONGBit<23>::value;
287cb93a386Sopenharmony_ci                static const SK_OT_ULONG ThaiMask = SkOTSetULONGBit<24>::value;
288cb93a386Sopenharmony_ci                static const SK_OT_ULONG LaoMask = SkOTSetULONGBit<25>::value;
289cb93a386Sopenharmony_ci                static const SK_OT_ULONG GeorgianMask = SkOTSetULONGBit<26>::value;
290cb93a386Sopenharmony_ci                static const SK_OT_ULONG BalineseMask = SkOTSetULONGBit<27>::value;
291cb93a386Sopenharmony_ci                static const SK_OT_ULONG HangulJamoMask = SkOTSetULONGBit<28>::value;
292cb93a386Sopenharmony_ci                static const SK_OT_ULONG LatinExtendedAdditionalMask = SkOTSetULONGBit<29>::value;
293cb93a386Sopenharmony_ci                static const SK_OT_ULONG GreekExtendedMask = SkOTSetULONGBit<30>::value;
294cb93a386Sopenharmony_ci                static const SK_OT_ULONG GeneralPunctuationMask = SkOTSetULONGBit<31>::value;
295cb93a386Sopenharmony_ci            };
296cb93a386Sopenharmony_ci            struct l1 {
297cb93a386Sopenharmony_ci                static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkOTSetULONGBit<32 - 32>::value;
298cb93a386Sopenharmony_ci                static const SK_OT_ULONG CurrencySymbolsMask = SkOTSetULONGBit<33 - 32>::value;
299cb93a386Sopenharmony_ci                static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkOTSetULONGBit<34 - 32>::value;
300cb93a386Sopenharmony_ci                static const SK_OT_ULONG LetterlikeSymbolsMask = SkOTSetULONGBit<35 - 32>::value;
301cb93a386Sopenharmony_ci                static const SK_OT_ULONG NumberFormsMask = SkOTSetULONGBit<36 - 32>::value;
302cb93a386Sopenharmony_ci                static const SK_OT_ULONG ArrowsMask = SkOTSetULONGBit<37 - 32>::value;
303cb93a386Sopenharmony_ci                static const SK_OT_ULONG MathematicalOperatorsMask = SkOTSetULONGBit<38 - 32>::value;
304cb93a386Sopenharmony_ci                static const SK_OT_ULONG MiscellaneousTechnicalMask = SkOTSetULONGBit<39 - 32>::value;
305cb93a386Sopenharmony_ci                static const SK_OT_ULONG ControlPicturesMask = SkOTSetULONGBit<40 - 32>::value;
306cb93a386Sopenharmony_ci                static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkOTSetULONGBit<41 - 32>::value;
307cb93a386Sopenharmony_ci                static const SK_OT_ULONG EnclosedAlphanumericsMask = SkOTSetULONGBit<42 - 32>::value;
308cb93a386Sopenharmony_ci                static const SK_OT_ULONG BoxDrawingMask = SkOTSetULONGBit<43 - 32>::value;
309cb93a386Sopenharmony_ci                static const SK_OT_ULONG BlockElementsMask = SkOTSetULONGBit<44 - 32>::value;
310cb93a386Sopenharmony_ci                static const SK_OT_ULONG GeometricShapesMask = SkOTSetULONGBit<45 - 32>::value;
311cb93a386Sopenharmony_ci                static const SK_OT_ULONG MiscellaneousSymbolsMask = SkOTSetULONGBit<46 - 32>::value;
312cb93a386Sopenharmony_ci                static const SK_OT_ULONG DingbatsMask = SkOTSetULONGBit<47 - 32>::value;
313cb93a386Sopenharmony_ci                static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkOTSetULONGBit<48 - 32>::value;
314cb93a386Sopenharmony_ci                static const SK_OT_ULONG HiraganaMask = SkOTSetULONGBit<49 - 32>::value;
315cb93a386Sopenharmony_ci                static const SK_OT_ULONG KatakanaMask = SkOTSetULONGBit<50 - 32>::value;
316cb93a386Sopenharmony_ci                static const SK_OT_ULONG BopomofoMask = SkOTSetULONGBit<51 - 32>::value;
317cb93a386Sopenharmony_ci                static const SK_OT_ULONG HangulCompatibilityJamoMask = SkOTSetULONGBit<52 - 32>::value;
318cb93a386Sopenharmony_ci                static const SK_OT_ULONG PhagsPaMask = SkOTSetULONGBit<53 - 32>::value;
319cb93a386Sopenharmony_ci                static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkOTSetULONGBit<54 - 32>::value;
320cb93a386Sopenharmony_ci                static const SK_OT_ULONG CJKCompatibilityMask = SkOTSetULONGBit<55 - 32>::value;
321cb93a386Sopenharmony_ci                static const SK_OT_ULONG HangulMask = SkOTSetULONGBit<56 - 32>::value;
322cb93a386Sopenharmony_ci                static const SK_OT_ULONG NonPlane0Mask = SkOTSetULONGBit<57 - 32>::value;
323cb93a386Sopenharmony_ci                static const SK_OT_ULONG PhoenicianMask = SkOTSetULONGBit<58 - 32>::value;
324cb93a386Sopenharmony_ci                static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkOTSetULONGBit<59 - 32>::value;
325cb93a386Sopenharmony_ci                static const SK_OT_ULONG PrivateUseAreaMask = SkOTSetULONGBit<60 - 32>::value;
326cb93a386Sopenharmony_ci                static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkOTSetULONGBit<61 - 32>::value;
327cb93a386Sopenharmony_ci                static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkOTSetULONGBit<62 - 32>::value;
328cb93a386Sopenharmony_ci                static const SK_OT_ULONG ArabicPresentationFormsAMask = SkOTSetULONGBit<63 - 32>::value;
329cb93a386Sopenharmony_ci            };
330cb93a386Sopenharmony_ci            struct l2 {
331cb93a386Sopenharmony_ci                static const SK_OT_ULONG CombiningHalfMarksMask = SkOTSetULONGBit<64 - 64>::value;
332cb93a386Sopenharmony_ci                static const SK_OT_ULONG CJKCompatibilityFormsMask = SkOTSetULONGBit<65 - 64>::value;
333cb93a386Sopenharmony_ci                static const SK_OT_ULONG SmallFormVariantsMask = SkOTSetULONGBit<66 - 64>::value;
334cb93a386Sopenharmony_ci                static const SK_OT_ULONG ArabicPresentationFormsBMask = SkOTSetULONGBit<67 - 64>::value;
335cb93a386Sopenharmony_ci                static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkOTSetULONGBit<68 - 64>::value;
336cb93a386Sopenharmony_ci                static const SK_OT_ULONG SpecialsMask = SkOTSetULONGBit<69 - 64>::value;
337cb93a386Sopenharmony_ci                static const SK_OT_ULONG TibetanMask = SkOTSetULONGBit<70 - 64>::value;
338cb93a386Sopenharmony_ci                static const SK_OT_ULONG SyriacMask = SkOTSetULONGBit<71 - 64>::value;
339cb93a386Sopenharmony_ci                static const SK_OT_ULONG ThaanaMask = SkOTSetULONGBit<72 - 64>::value;
340cb93a386Sopenharmony_ci                static const SK_OT_ULONG SinhalaMask = SkOTSetULONGBit<73 - 64>::value;
341cb93a386Sopenharmony_ci                static const SK_OT_ULONG MyanmarMask = SkOTSetULONGBit<74 - 64>::value;
342cb93a386Sopenharmony_ci                static const SK_OT_ULONG EthiopicMask = SkOTSetULONGBit<75 - 64>::value;
343cb93a386Sopenharmony_ci                static const SK_OT_ULONG CherokeeMask = SkOTSetULONGBit<76 - 64>::value;
344cb93a386Sopenharmony_ci                static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkOTSetULONGBit<77 - 64>::value;
345cb93a386Sopenharmony_ci                static const SK_OT_ULONG OghamMask = SkOTSetULONGBit<78 - 64>::value;
346cb93a386Sopenharmony_ci                static const SK_OT_ULONG RunicMask = SkOTSetULONGBit<79 - 64>::value;
347cb93a386Sopenharmony_ci                static const SK_OT_ULONG KhmerMask = SkOTSetULONGBit<80 - 64>::value;
348cb93a386Sopenharmony_ci                static const SK_OT_ULONG MongolianMask = SkOTSetULONGBit<81 - 64>::value;
349cb93a386Sopenharmony_ci                static const SK_OT_ULONG BrailleMask = SkOTSetULONGBit<82 - 64>::value;
350cb93a386Sopenharmony_ci                static const SK_OT_ULONG YiMask = SkOTSetULONGBit<83 - 64>::value;
351cb93a386Sopenharmony_ci                static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkOTSetULONGBit<84 - 64>::value;
352cb93a386Sopenharmony_ci                static const SK_OT_ULONG OldItalicMask = SkOTSetULONGBit<85 - 64>::value;
353cb93a386Sopenharmony_ci                static const SK_OT_ULONG GothicMask = SkOTSetULONGBit<86 - 64>::value;
354cb93a386Sopenharmony_ci                static const SK_OT_ULONG DeseretMask = SkOTSetULONGBit<87 - 64>::value;
355cb93a386Sopenharmony_ci                static const SK_OT_ULONG MusicalSymbolsMask = SkOTSetULONGBit<88 - 64>::value;
356cb93a386Sopenharmony_ci                static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkOTSetULONGBit<89 - 64>::value;
357cb93a386Sopenharmony_ci                static const SK_OT_ULONG PrivateUseMask = SkOTSetULONGBit<90 - 64>::value;
358cb93a386Sopenharmony_ci                static const SK_OT_ULONG VariationSelectorsMask = SkOTSetULONGBit<91 - 64>::value;
359cb93a386Sopenharmony_ci                static const SK_OT_ULONG TagsMask = SkOTSetULONGBit<92 - 64>::value;
360cb93a386Sopenharmony_ci                static const SK_OT_ULONG LimbuMask = SkOTSetULONGBit<93 - 64>::value;
361cb93a386Sopenharmony_ci                static const SK_OT_ULONG TaiLeMask = SkOTSetULONGBit<94 - 64>::value;
362cb93a386Sopenharmony_ci                static const SK_OT_ULONG NewTaiLueMask = SkOTSetULONGBit<95 - 64>::value;
363cb93a386Sopenharmony_ci            };
364cb93a386Sopenharmony_ci            struct l3 {
365cb93a386Sopenharmony_ci                static const SK_OT_ULONG BugineseMask = SkOTSetULONGBit<96 - 96>::value;
366cb93a386Sopenharmony_ci                static const SK_OT_ULONG GlagoliticMask = SkOTSetULONGBit<97 - 96>::value;
367cb93a386Sopenharmony_ci                static const SK_OT_ULONG TifinaghMask = SkOTSetULONGBit<98 - 96>::value;
368cb93a386Sopenharmony_ci                static const SK_OT_ULONG YijingHexagramSymbolsMask = SkOTSetULONGBit<99 - 96>::value;
369cb93a386Sopenharmony_ci                static const SK_OT_ULONG SylotiNagriMask = SkOTSetULONGBit<100 - 96>::value;
370cb93a386Sopenharmony_ci                static const SK_OT_ULONG LinearB_AegeanNumbersMask = SkOTSetULONGBit<101 - 96>::value;
371cb93a386Sopenharmony_ci                static const SK_OT_ULONG AncientGreekNumbersMask = SkOTSetULONGBit<102 - 96>::value;
372cb93a386Sopenharmony_ci                static const SK_OT_ULONG UgariticMask = SkOTSetULONGBit<103 - 96>::value;
373cb93a386Sopenharmony_ci                static const SK_OT_ULONG OldPersianMask = SkOTSetULONGBit<104 - 96>::value;
374cb93a386Sopenharmony_ci                static const SK_OT_ULONG ShavianMask = SkOTSetULONGBit<105 - 96>::value;
375cb93a386Sopenharmony_ci                static const SK_OT_ULONG OsmanyaMask = SkOTSetULONGBit<106 - 96>::value;
376cb93a386Sopenharmony_ci                static const SK_OT_ULONG CypriotSyllabaryMask = SkOTSetULONGBit<107 - 96>::value;
377cb93a386Sopenharmony_ci                static const SK_OT_ULONG KharoshthiMask = SkOTSetULONGBit<108 - 96>::value;
378cb93a386Sopenharmony_ci                static const SK_OT_ULONG TaiXuanJingSymbolsMask = SkOTSetULONGBit<109 - 96>::value;
379cb93a386Sopenharmony_ci                static const SK_OT_ULONG CuneiformMask = SkOTSetULONGBit<110 - 96>::value;
380cb93a386Sopenharmony_ci                static const SK_OT_ULONG CountingRodNumeralsMask = SkOTSetULONGBit<111 - 96>::value;
381cb93a386Sopenharmony_ci                static const SK_OT_ULONG SundaneseMask = SkOTSetULONGBit<112 - 96>::value;
382cb93a386Sopenharmony_ci                static const SK_OT_ULONG LepchaMask = SkOTSetULONGBit<113 - 96>::value;
383cb93a386Sopenharmony_ci                static const SK_OT_ULONG OlChikiMask = SkOTSetULONGBit<114 - 96>::value;
384cb93a386Sopenharmony_ci                static const SK_OT_ULONG SaurashtraMask = SkOTSetULONGBit<115 - 96>::value;
385cb93a386Sopenharmony_ci                static const SK_OT_ULONG KayahLiMask = SkOTSetULONGBit<116 - 96>::value;
386cb93a386Sopenharmony_ci                static const SK_OT_ULONG RejangMask = SkOTSetULONGBit<117 - 96>::value;
387cb93a386Sopenharmony_ci                static const SK_OT_ULONG ChamMask = SkOTSetULONGBit<118 - 96>::value;
388cb93a386Sopenharmony_ci                static const SK_OT_ULONG AncientSymbolsMask = SkOTSetULONGBit<119 - 96>::value;
389cb93a386Sopenharmony_ci                static const SK_OT_ULONG PhaistosDiscMask = SkOTSetULONGBit<120 - 96>::value;
390cb93a386Sopenharmony_ci                static const SK_OT_ULONG Carian_Lycian_LydianMask = SkOTSetULONGBit<121 - 96>::value;
391cb93a386Sopenharmony_ci                static const SK_OT_ULONG DominoTiles_MahjongTilesMask = SkOTSetULONGBit<122 - 96>::value;
392cb93a386Sopenharmony_ci            };
393cb93a386Sopenharmony_ci            SK_OT_ULONG value[4];
394cb93a386Sopenharmony_ci        } raw;
395cb93a386Sopenharmony_ci    } ulUnicodeRange;
396cb93a386Sopenharmony_ci    SK_OT_CHAR achVendID[4];
397cb93a386Sopenharmony_ci    union Selection {
398cb93a386Sopenharmony_ci        struct Field {
399cb93a386Sopenharmony_ci            //8-15
400cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
401cb93a386Sopenharmony_ci                WWS,
402cb93a386Sopenharmony_ci                Oblique,
403cb93a386Sopenharmony_ci                Reserved10,
404cb93a386Sopenharmony_ci                Reserved11,
405cb93a386Sopenharmony_ci                Reserved12,
406cb93a386Sopenharmony_ci                Reserved13,
407cb93a386Sopenharmony_ci                Reserved14,
408cb93a386Sopenharmony_ci                Reserved15)
409cb93a386Sopenharmony_ci            //0-7
410cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
411cb93a386Sopenharmony_ci                Italic,
412cb93a386Sopenharmony_ci                Underscore,
413cb93a386Sopenharmony_ci                Negative,
414cb93a386Sopenharmony_ci                Outlined,
415cb93a386Sopenharmony_ci                Strikeout,
416cb93a386Sopenharmony_ci                Bold,
417cb93a386Sopenharmony_ci                Regular,
418cb93a386Sopenharmony_ci                UseTypoMetrics)
419cb93a386Sopenharmony_ci        } field;
420cb93a386Sopenharmony_ci        struct Raw {
421cb93a386Sopenharmony_ci            static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value;
422cb93a386Sopenharmony_ci            static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value;
423cb93a386Sopenharmony_ci            static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value;
424cb93a386Sopenharmony_ci            static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value;
425cb93a386Sopenharmony_ci            static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value;
426cb93a386Sopenharmony_ci            static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value;
427cb93a386Sopenharmony_ci            static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value;
428cb93a386Sopenharmony_ci            static const SK_OT_USHORT UseTypoMetricsMask = SkOTSetUSHORTBit<7>::value;
429cb93a386Sopenharmony_ci            static const SK_OT_USHORT WWSMask = SkOTSetUSHORTBit<8>::value;
430cb93a386Sopenharmony_ci            static const SK_OT_USHORT ObliqueMask = SkOTSetUSHORTBit<9>::value;
431cb93a386Sopenharmony_ci            SK_OT_USHORT value;
432cb93a386Sopenharmony_ci        } raw;
433cb93a386Sopenharmony_ci    } fsSelection;
434cb93a386Sopenharmony_ci    SK_OT_USHORT usFirstCharIndex;
435cb93a386Sopenharmony_ci    SK_OT_USHORT usLastCharIndex;
436cb93a386Sopenharmony_ci    //version0
437cb93a386Sopenharmony_ci    SK_OT_SHORT sTypoAscender;
438cb93a386Sopenharmony_ci    SK_OT_SHORT sTypoDescender;
439cb93a386Sopenharmony_ci    SK_OT_SHORT sTypoLineGap;
440cb93a386Sopenharmony_ci    SK_OT_USHORT usWinAscent;
441cb93a386Sopenharmony_ci    SK_OT_USHORT usWinDescent;
442cb93a386Sopenharmony_ci    //version1
443cb93a386Sopenharmony_ci    union CodePageRange {
444cb93a386Sopenharmony_ci        struct Field {
445cb93a386Sopenharmony_ci            //l0 24-31
446cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
447cb93a386Sopenharmony_ci                Reserved24,
448cb93a386Sopenharmony_ci                Reserved25,
449cb93a386Sopenharmony_ci                Reserved26,
450cb93a386Sopenharmony_ci                Reserved27,
451cb93a386Sopenharmony_ci                Reserved28,
452cb93a386Sopenharmony_ci                MacintoshCharacterSet,
453cb93a386Sopenharmony_ci                OEMCharacterSet,
454cb93a386Sopenharmony_ci                SymbolCharacterSet)
455cb93a386Sopenharmony_ci            //l0 16-23
456cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
457cb93a386Sopenharmony_ci                Thai_874,
458cb93a386Sopenharmony_ci                JISJapan_932,
459cb93a386Sopenharmony_ci                ChineseSimplified_936,
460cb93a386Sopenharmony_ci                KoreanWansung_949,
461cb93a386Sopenharmony_ci                ChineseTraditional_950,
462cb93a386Sopenharmony_ci                KoreanJohab_1361,
463cb93a386Sopenharmony_ci                Reserved22,
464cb93a386Sopenharmony_ci                Reserved23)
465cb93a386Sopenharmony_ci            //l0 8-15
466cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
467cb93a386Sopenharmony_ci                Vietnamese,
468cb93a386Sopenharmony_ci                Reserved09,
469cb93a386Sopenharmony_ci                Reserved10,
470cb93a386Sopenharmony_ci                Reserved11,
471cb93a386Sopenharmony_ci                Reserved12,
472cb93a386Sopenharmony_ci                Reserved13,
473cb93a386Sopenharmony_ci                Reserved14,
474cb93a386Sopenharmony_ci                Reserved15)
475cb93a386Sopenharmony_ci            //l0 0-7
476cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
477cb93a386Sopenharmony_ci                Latin1_1252,
478cb93a386Sopenharmony_ci                Latin2EasternEurope_1250,
479cb93a386Sopenharmony_ci                Cyrillic_1251,
480cb93a386Sopenharmony_ci                Greek_1253,
481cb93a386Sopenharmony_ci                Turkish_1254,
482cb93a386Sopenharmony_ci                Hebrew_1255,
483cb93a386Sopenharmony_ci                Arabic_1256,
484cb93a386Sopenharmony_ci                WindowsBaltic_1257)
485cb93a386Sopenharmony_ci
486cb93a386Sopenharmony_ci            //l1 24-31
487cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
488cb93a386Sopenharmony_ci                IBMTurkish_857,
489cb93a386Sopenharmony_ci                IBMCyrillic_855,
490cb93a386Sopenharmony_ci                Latin2_852,
491cb93a386Sopenharmony_ci                MSDOSBaltic_775,
492cb93a386Sopenharmony_ci                Greek_737,
493cb93a386Sopenharmony_ci                Arabic_708,
494cb93a386Sopenharmony_ci                WELatin1_850,
495cb93a386Sopenharmony_ci                US_437)
496cb93a386Sopenharmony_ci            //l1 16-23
497cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
498cb93a386Sopenharmony_ci                IBMGreek_869,
499cb93a386Sopenharmony_ci                MSDOSRussian_866,
500cb93a386Sopenharmony_ci                MSDOSNordic_865,
501cb93a386Sopenharmony_ci                Arabic_864,
502cb93a386Sopenharmony_ci                MSDOSCanadianFrench_863,
503cb93a386Sopenharmony_ci                Hebrew_862,
504cb93a386Sopenharmony_ci                MSDOSIcelandic_861,
505cb93a386Sopenharmony_ci                MSDOSPortuguese_860)
506cb93a386Sopenharmony_ci            //l1 8-15
507cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
508cb93a386Sopenharmony_ci                Reserved40,
509cb93a386Sopenharmony_ci                Reserved41,
510cb93a386Sopenharmony_ci                Reserved42,
511cb93a386Sopenharmony_ci                Reserved43,
512cb93a386Sopenharmony_ci                Reserved44,
513cb93a386Sopenharmony_ci                Reserved45,
514cb93a386Sopenharmony_ci                Reserved46,
515cb93a386Sopenharmony_ci                Reserved47)
516cb93a386Sopenharmony_ci            //l1 0-7
517cb93a386Sopenharmony_ci            SK_OT_BYTE_BITFIELD(
518cb93a386Sopenharmony_ci                Reserved32,
519cb93a386Sopenharmony_ci                Reserved33,
520cb93a386Sopenharmony_ci                Reserved34,
521cb93a386Sopenharmony_ci                Reserved35,
522cb93a386Sopenharmony_ci                Reserved36,
523cb93a386Sopenharmony_ci                Reserved37,
524cb93a386Sopenharmony_ci                Reserved38,
525cb93a386Sopenharmony_ci                Reserved39)
526cb93a386Sopenharmony_ci        } field;
527cb93a386Sopenharmony_ci        struct Raw {
528cb93a386Sopenharmony_ci            struct l0 {
529cb93a386Sopenharmony_ci                static const SK_OT_ULONG Latin1_1252Mask = SkOTSetULONGBit<0>::value;
530cb93a386Sopenharmony_ci                static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkOTSetULONGBit<1>::value;
531cb93a386Sopenharmony_ci                static const SK_OT_ULONG Cyrillic_1251Mask = SkOTSetULONGBit<2>::value;
532cb93a386Sopenharmony_ci                static const SK_OT_ULONG Greek_1253Mask = SkOTSetULONGBit<3>::value;
533cb93a386Sopenharmony_ci                static const SK_OT_ULONG Turkish_1254Mask = SkOTSetULONGBit<4>::value;
534cb93a386Sopenharmony_ci                static const SK_OT_ULONG Hebrew_1255Mask = SkOTSetULONGBit<5>::value;
535cb93a386Sopenharmony_ci                static const SK_OT_ULONG Arabic_1256Mask = SkOTSetULONGBit<6>::value;
536cb93a386Sopenharmony_ci                static const SK_OT_ULONG WindowsBaltic_1257Mask = SkOTSetULONGBit<7>::value;
537cb93a386Sopenharmony_ci                static const SK_OT_ULONG Vietnamese_1258Mask = SkOTSetULONGBit<8>::value;
538cb93a386Sopenharmony_ci                static const SK_OT_ULONG Thai_874Mask = SkOTSetULONGBit<16>::value;
539cb93a386Sopenharmony_ci                static const SK_OT_ULONG JISJapan_932Mask = SkOTSetULONGBit<17>::value;
540cb93a386Sopenharmony_ci                static const SK_OT_ULONG ChineseSimplified_936Mask = SkOTSetULONGBit<18>::value;
541cb93a386Sopenharmony_ci                static const SK_OT_ULONG KoreanWansung_949Mask = SkOTSetULONGBit<19>::value;
542cb93a386Sopenharmony_ci                static const SK_OT_ULONG ChineseTraditional_950Mask = SkOTSetULONGBit<20>::value;
543cb93a386Sopenharmony_ci                static const SK_OT_ULONG KoreanJohab_1361Mask = SkOTSetULONGBit<21>::value;
544cb93a386Sopenharmony_ci                static const SK_OT_ULONG MacintoshCharacterSetMask = SkOTSetULONGBit<29>::value;
545cb93a386Sopenharmony_ci                static const SK_OT_ULONG OEMCharacterSetMask = SkOTSetULONGBit<30>::value;
546cb93a386Sopenharmony_ci                static const SK_OT_ULONG SymbolCharacterSetMask = SkOTSetULONGBit<31>::value;
547cb93a386Sopenharmony_ci            };
548cb93a386Sopenharmony_ci            struct l1 {
549cb93a386Sopenharmony_ci                static const SK_OT_ULONG IBMGreek_869Mask = SkOTSetULONGBit<48 - 32>::value;
550cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSRussian_866Mask = SkOTSetULONGBit<49 - 32>::value;
551cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSNordic_865Mask = SkOTSetULONGBit<50 - 32>::value;
552cb93a386Sopenharmony_ci                static const SK_OT_ULONG Arabic_864Mask = SkOTSetULONGBit<51 - 32>::value;
553cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkOTSetULONGBit<52 - 32>::value;
554cb93a386Sopenharmony_ci                static const SK_OT_ULONG Hebrew_862Mask = SkOTSetULONGBit<53 - 32>::value;
555cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value;
556cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkOTSetULONGBit<55 - 32>::value;
557cb93a386Sopenharmony_ci                static const SK_OT_ULONG IBMTurkish_857Mask = SkOTSetULONGBit<56 - 32>::value;
558cb93a386Sopenharmony_ci                static const SK_OT_ULONG IBMCyrillic_855Mask = SkOTSetULONGBit<57 - 32>::value;
559cb93a386Sopenharmony_ci                static const SK_OT_ULONG Latin2_852Mask = SkOTSetULONGBit<58 - 32>::value;
560cb93a386Sopenharmony_ci                static const SK_OT_ULONG MSDOSBaltic_775Mask = SkOTSetULONGBit<59 - 32>::value;
561cb93a386Sopenharmony_ci                static const SK_OT_ULONG Greek_737Mask = SkOTSetULONGBit<60 - 32>::value;
562cb93a386Sopenharmony_ci                static const SK_OT_ULONG Arabic_708Mask = SkOTSetULONGBit<61 - 32>::value;
563cb93a386Sopenharmony_ci                static const SK_OT_ULONG WELatin1_850Mask = SkOTSetULONGBit<62 - 32>::value;
564cb93a386Sopenharmony_ci                static const SK_OT_ULONG US_437Mask = SkOTSetULONGBit<63 - 32>::value;
565cb93a386Sopenharmony_ci            };
566cb93a386Sopenharmony_ci            SK_OT_ULONG value[2];
567cb93a386Sopenharmony_ci        } raw;
568cb93a386Sopenharmony_ci    } ulCodePageRange;
569cb93a386Sopenharmony_ci    //version2
570cb93a386Sopenharmony_ci    SK_OT_SHORT sxHeight;
571cb93a386Sopenharmony_ci    SK_OT_SHORT sCapHeight;
572cb93a386Sopenharmony_ci    SK_OT_USHORT usDefaultChar;
573cb93a386Sopenharmony_ci    SK_OT_USHORT usBreakChar;
574cb93a386Sopenharmony_ci    SK_OT_USHORT usMaxContext;
575cb93a386Sopenharmony_ci};
576cb93a386Sopenharmony_ci
577cb93a386Sopenharmony_ci#pragma pack(pop)
578cb93a386Sopenharmony_ci
579cb93a386Sopenharmony_ci
580cb93a386Sopenharmony_cistatic_assert(sizeof(SkOTTableOS2_V4) == 96, "sizeof_SkOTTableOS2_V4_not_96");
581cb93a386Sopenharmony_ci
582cb93a386Sopenharmony_ci#endif
583