1 | /* |
2 | * Copyright 2012 Google Inc. |
3 | * |
4 | * Use of this source code is governed by a BSD-style license that can be |
5 | * found in the LICENSE file. |
6 | */ |
7 | |
8 | #ifndef SkOTTable_OS_2_V3_DEFINED |
9 | #define SkOTTable_OS_2_V3_DEFINED |
10 | |
11 | #include "src/core/SkEndian.h" |
12 | #include "src/sfnt/SkIBMFamilyClass.h" |
13 | #include "src/sfnt/SkOTTableTypes.h" |
14 | #include "src/sfnt/SkPanose.h" |
15 | |
16 | #pragma pack(push, 1) |
17 | |
18 | struct SkOTTableOS2_V3 { |
19 | SK_OT_USHORT version; |
20 | static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(3); |
21 | |
22 | SK_OT_SHORT xAvgCharWidth; |
23 | struct WeightClass { |
24 | enum Value : SK_OT_USHORT { |
25 | Thin = SkTEndian_SwapBE16(100), |
26 | = SkTEndian_SwapBE16(200), |
27 | Light = SkTEndian_SwapBE16(300), |
28 | Normal = SkTEndian_SwapBE16(400), |
29 | Medium = SkTEndian_SwapBE16(500), |
30 | SemiBold = SkTEndian_SwapBE16(600), |
31 | Bold = SkTEndian_SwapBE16(700), |
32 | = SkTEndian_SwapBE16(800), |
33 | Black = SkTEndian_SwapBE16(900), |
34 | }; |
35 | SK_OT_USHORT value; |
36 | } usWeightClass; |
37 | struct WidthClass { |
38 | enum Value : SK_OT_USHORT { |
39 | UltraCondensed = SkTEndian_SwapBE16(1), |
40 | = SkTEndian_SwapBE16(2), |
41 | Condensed = SkTEndian_SwapBE16(3), |
42 | SemiCondensed = SkTEndian_SwapBE16(4), |
43 | Medium = SkTEndian_SwapBE16(5), |
44 | SemiExpanded = SkTEndian_SwapBE16(6), |
45 | Expanded = SkTEndian_SwapBE16(7), |
46 | ExtraExpanded = SkTEndian_SwapBE16(8), |
47 | UltraExpanded = SkTEndian_SwapBE16(9), |
48 | } value; |
49 | } usWidthClass; |
50 | union Type { |
51 | struct Field { |
52 | //8-15 |
53 | SK_OT_BYTE_BITFIELD( |
54 | NoSubsetting, |
55 | Bitmap, |
56 | Reserved10, |
57 | Reserved11, |
58 | Reserved12, |
59 | Reserved13, |
60 | Reserved14, |
61 | Reserved15) |
62 | //0-7 |
63 | SK_OT_BYTE_BITFIELD( |
64 | Reserved00, |
65 | Restricted, |
66 | PreviewPrint, |
67 | Editable, |
68 | Reserved04, |
69 | Reserved05, |
70 | Reserved06, |
71 | Reserved07) |
72 | } field; |
73 | struct Raw { |
74 | static const SK_OT_USHORT Installable = 0; |
75 | static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value; |
76 | static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value; |
77 | static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value; |
78 | static const SK_OT_USHORT NoSubsettingMask = SkOTSetUSHORTBit<8>::value; |
79 | static const SK_OT_USHORT BitmapMask = SkOTSetUSHORTBit<9>::value; |
80 | SK_OT_USHORT value; |
81 | } raw; |
82 | } fsType; |
83 | SK_OT_SHORT ySubscriptXSize; |
84 | SK_OT_SHORT ySubscriptYSize; |
85 | SK_OT_SHORT ySubscriptXOffset; |
86 | SK_OT_SHORT ySubscriptYOffset; |
87 | SK_OT_SHORT ySuperscriptXSize; |
88 | SK_OT_SHORT ySuperscriptYSize; |
89 | SK_OT_SHORT ySuperscriptXOffset; |
90 | SK_OT_SHORT ySuperscriptYOffset; |
91 | SK_OT_SHORT yStrikeoutSize; |
92 | SK_OT_SHORT yStrikeoutPosition; |
93 | SkIBMFamilyClass sFamilyClass; |
94 | SkPanose panose; |
95 | union UnicodeRange { |
96 | struct Field { |
97 | //l0 24-31 |
98 | SK_OT_BYTE_BITFIELD( |
99 | Thai, |
100 | Lao, |
101 | Georgian, |
102 | Reserved027, |
103 | HangulJamo, |
104 | LatinExtendedAdditional, |
105 | GreekExtended, |
106 | GeneralPunctuation) |
107 | //l0 16-23 |
108 | SK_OT_BYTE_BITFIELD( |
109 | Bengali, |
110 | Gurmukhi, |
111 | Gujarati, |
112 | Oriya, |
113 | Tamil, |
114 | Telugu, |
115 | Kannada, |
116 | Malayalam) |
117 | //l0 8-15 |
118 | SK_OT_BYTE_BITFIELD( |
119 | Reserved008, |
120 | Cyrillic, |
121 | Armenian, |
122 | Hebrew, |
123 | Reserved012, |
124 | Arabic, |
125 | Reserved014, |
126 | Devanagari) |
127 | //l0 0-7 |
128 | SK_OT_BYTE_BITFIELD( |
129 | BasicLatin, |
130 | Latin1Supplement, |
131 | LatinExtendedA, |
132 | LatinExtendedB, |
133 | IPAExtensions, |
134 | SpacingModifierLetters, |
135 | CombiningDiacriticalMarks, |
136 | GreekAndCoptic) |
137 | |
138 | //l1 24-31 |
139 | SK_OT_BYTE_BITFIELD( |
140 | Hangul, |
141 | NonPlane0, |
142 | Reserved058, |
143 | CJKUnifiedIdeographs, |
144 | PrivateUseArea, |
145 | CJKCompatibilityIdeographs, |
146 | AlphabeticPresentationForms, |
147 | ArabicPresentationFormsA) |
148 | //l1 16-23 |
149 | SK_OT_BYTE_BITFIELD( |
150 | CJKSymbolsAndPunctuation, |
151 | Hiragana, |
152 | Katakana, |
153 | Bopomofo, |
154 | HangulCompatibilityJamo, |
155 | Reserved053, |
156 | EnclosedCJKLettersAndMonths, |
157 | CJKCompatibility) |
158 | //l1 8-15 |
159 | SK_OT_BYTE_BITFIELD( |
160 | ControlPictures, |
161 | OpticalCharacterRecognition, |
162 | EnclosedAlphanumerics, |
163 | BoxDrawing, |
164 | BlockElements, |
165 | GeometricShapes, |
166 | MiscellaneousSymbols, |
167 | Dingbats) |
168 | //l1 0-7 |
169 | SK_OT_BYTE_BITFIELD( |
170 | SuperscriptsAndSubscripts, |
171 | CurrencySymbols, |
172 | CombiningDiacriticalMarksForSymbols, |
173 | LetterlikeSymbols, |
174 | NumberForms, |
175 | Arrows, |
176 | MathematicalOperators, |
177 | MiscellaneousTechnical) |
178 | |
179 | //l2 24-31 |
180 | SK_OT_BYTE_BITFIELD( |
181 | MusicalSymbols, |
182 | MathematicalAlphanumericSymbols, |
183 | PrivateUse, |
184 | VariationSelectors, |
185 | Tags, |
186 | Reserved093, |
187 | Reserved094, |
188 | Reserved095) |
189 | //l2 16-23 |
190 | SK_OT_BYTE_BITFIELD( |
191 | Khmer, |
192 | Mongolian, |
193 | Braille, |
194 | Yi, |
195 | Tagalog_Hanunoo_Buhid_Tagbanwa, |
196 | OldItalic, |
197 | Gothic, |
198 | Deseret) |
199 | //l2 8-15 |
200 | SK_OT_BYTE_BITFIELD( |
201 | Thaana, |
202 | Sinhala, |
203 | Myanmar, |
204 | Ethiopic, |
205 | Cherokee, |
206 | UnifiedCanadianSyllabics, |
207 | Ogham, |
208 | Runic) |
209 | //l2 0-7 |
210 | SK_OT_BYTE_BITFIELD( |
211 | CombiningHalfMarks, |
212 | CJKCompatibilityForms, |
213 | SmallFormVariants, |
214 | ArabicPresentationFormsB, |
215 | HalfwidthAndFullwidthForms, |
216 | Specials, |
217 | Tibetan, |
218 | Syriac) |
219 | |
220 | //l3 24-31 |
221 | SK_OT_BYTE_BITFIELD( |
222 | Reserved120, |
223 | Reserved121, |
224 | Reserved122, |
225 | Reserved123, |
226 | Reserved124, |
227 | Reserved125, |
228 | Reserved126, |
229 | Reserved127) |
230 | //l3 16-23 |
231 | SK_OT_BYTE_BITFIELD( |
232 | Reserved112, |
233 | Reserved113, |
234 | Reserved114, |
235 | Reserved115, |
236 | Reserved116, |
237 | Reserved117, |
238 | Reserved118, |
239 | Reserved119) |
240 | //l3 8-15 |
241 | SK_OT_BYTE_BITFIELD( |
242 | Reserved104, |
243 | Reserved105, |
244 | Reserved106, |
245 | Reserved107, |
246 | Reserved108, |
247 | Reserved109, |
248 | Reserved110, |
249 | Reserved111) |
250 | //l3 0-7 |
251 | SK_OT_BYTE_BITFIELD( |
252 | Reserved096, |
253 | Reserved097, |
254 | Reserved098, |
255 | Reserved099, |
256 | Reserved100, |
257 | Reserved101, |
258 | Reserved102, |
259 | Reserved103) |
260 | } field; |
261 | struct Raw { |
262 | struct l0 { |
263 | static const SK_OT_ULONG BasicLatinMask = SkOTSetULONGBit<0>::value; |
264 | static const SK_OT_ULONG Latin1SupplementMask = SkOTSetULONGBit<1>::value; |
265 | static const SK_OT_ULONG LatinExtendedAMask = SkOTSetULONGBit<2>::value; |
266 | static const SK_OT_ULONG LatinExtendedBMask = SkOTSetULONGBit<3>::value; |
267 | static const SK_OT_ULONG IPAExtensionsMask = SkOTSetULONGBit<4>::value; |
268 | static const SK_OT_ULONG SpacingModifierLettersMask = SkOTSetULONGBit<5>::value; |
269 | static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkOTSetULONGBit<6>::value; |
270 | static const SK_OT_ULONG GreekAndCopticMask = SkOTSetULONGBit<7>::value; |
271 | //Reserved |
272 | static const SK_OT_ULONG CyrillicMask = SkOTSetULONGBit<9>::value; |
273 | static const SK_OT_ULONG ArmenianMask = SkOTSetULONGBit<10>::value; |
274 | static const SK_OT_ULONG HebrewMask = SkOTSetULONGBit<11>::value; |
275 | //Reserved |
276 | static const SK_OT_ULONG ArabicMask = SkOTSetULONGBit<13>::value; |
277 | //Reserved |
278 | static const SK_OT_ULONG DevanagariMask = SkOTSetULONGBit<15>::value; |
279 | static const SK_OT_ULONG BengaliMask = SkOTSetULONGBit<16>::value; |
280 | static const SK_OT_ULONG GurmukhiMask = SkOTSetULONGBit<17>::value; |
281 | static const SK_OT_ULONG GujaratiMask = SkOTSetULONGBit<18>::value; |
282 | static const SK_OT_ULONG OriyaMask = SkOTSetULONGBit<19>::value; |
283 | static const SK_OT_ULONG TamilMask = SkOTSetULONGBit<20>::value; |
284 | static const SK_OT_ULONG TeluguMask = SkOTSetULONGBit<21>::value; |
285 | static const SK_OT_ULONG KannadaMask = SkOTSetULONGBit<22>::value; |
286 | static const SK_OT_ULONG MalayalamMask = SkOTSetULONGBit<23>::value; |
287 | static const SK_OT_ULONG ThaiMask = SkOTSetULONGBit<24>::value; |
288 | static const SK_OT_ULONG LaoMask = SkOTSetULONGBit<25>::value; |
289 | static const SK_OT_ULONG GeorgianMask = SkOTSetULONGBit<26>::value; |
290 | //Reserved |
291 | static const SK_OT_ULONG HangulJamoMask = SkOTSetULONGBit<28>::value; |
292 | static const SK_OT_ULONG LatinExtendedAdditionalMask = SkOTSetULONGBit<29>::value; |
293 | static const SK_OT_ULONG GreekExtendedMask = SkOTSetULONGBit<30>::value; |
294 | static const SK_OT_ULONG GeneralPunctuationMask = SkOTSetULONGBit<31>::value; |
295 | }; |
296 | struct l1 { |
297 | static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkOTSetULONGBit<32 - 32>::value; |
298 | static const SK_OT_ULONG CurrencySymbolsMask = SkOTSetULONGBit<33 - 32>::value; |
299 | static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkOTSetULONGBit<34 - 32>::value; |
300 | static const SK_OT_ULONG LetterlikeSymbolsMask = SkOTSetULONGBit<35 - 32>::value; |
301 | static const SK_OT_ULONG NumberFormsMask = SkOTSetULONGBit<36 - 32>::value; |
302 | static const SK_OT_ULONG ArrowsMask = SkOTSetULONGBit<37 - 32>::value; |
303 | static const SK_OT_ULONG MathematicalOperatorsMask = SkOTSetULONGBit<38 - 32>::value; |
304 | static const SK_OT_ULONG MiscellaneousTechnicalMask = SkOTSetULONGBit<39 - 32>::value; |
305 | static const SK_OT_ULONG ControlPicturesMask = SkOTSetULONGBit<40 - 32>::value; |
306 | static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkOTSetULONGBit<41 - 32>::value; |
307 | static const SK_OT_ULONG EnclosedAlphanumericsMask = SkOTSetULONGBit<42 - 32>::value; |
308 | static const SK_OT_ULONG BoxDrawingMask = SkOTSetULONGBit<43 - 32>::value; |
309 | static const SK_OT_ULONG BlockElementsMask = SkOTSetULONGBit<44 - 32>::value; |
310 | static const SK_OT_ULONG GeometricShapesMask = SkOTSetULONGBit<45 - 32>::value; |
311 | static const SK_OT_ULONG MiscellaneousSymbolsMask = SkOTSetULONGBit<46 - 32>::value; |
312 | static const SK_OT_ULONG DingbatsMask = SkOTSetULONGBit<47 - 32>::value; |
313 | static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkOTSetULONGBit<48 - 32>::value; |
314 | static const SK_OT_ULONG HiraganaMask = SkOTSetULONGBit<49 - 32>::value; |
315 | static const SK_OT_ULONG KatakanaMask = SkOTSetULONGBit<50 - 32>::value; |
316 | static const SK_OT_ULONG BopomofoMask = SkOTSetULONGBit<51 - 32>::value; |
317 | static const SK_OT_ULONG HangulCompatibilityJamoMask = SkOTSetULONGBit<52 - 32>::value; |
318 | //Reserved |
319 | static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkOTSetULONGBit<54 - 32>::value; |
320 | static const SK_OT_ULONG CJKCompatibilityMask = SkOTSetULONGBit<55 - 32>::value; |
321 | static const SK_OT_ULONG HangulMask = SkOTSetULONGBit<56 - 32>::value; |
322 | static const SK_OT_ULONG NonPlane0Mask = SkOTSetULONGBit<57 - 32>::value; |
323 | //Reserved |
324 | static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkOTSetULONGBit<59 - 32>::value; |
325 | static const SK_OT_ULONG PrivateUseAreaMask = SkOTSetULONGBit<60 - 32>::value; |
326 | static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkOTSetULONGBit<61 - 32>::value; |
327 | static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkOTSetULONGBit<62 - 32>::value; |
328 | static const SK_OT_ULONG ArabicPresentationFormsAMask = SkOTSetULONGBit<63 - 32>::value; |
329 | }; |
330 | struct l2 { |
331 | static const SK_OT_ULONG CombiningHalfMarksMask = SkOTSetULONGBit<64 - 64>::value; |
332 | static const SK_OT_ULONG CJKCompatibilityFormsMask = SkOTSetULONGBit<65 - 64>::value; |
333 | static const SK_OT_ULONG SmallFormVariantsMask = SkOTSetULONGBit<66 - 64>::value; |
334 | static const SK_OT_ULONG ArabicPresentationFormsBMask = SkOTSetULONGBit<67 - 64>::value; |
335 | static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkOTSetULONGBit<68 - 64>::value; |
336 | static const SK_OT_ULONG SpecialsMask = SkOTSetULONGBit<69 - 64>::value; |
337 | static const SK_OT_ULONG TibetanMask = SkOTSetULONGBit<70 - 64>::value; |
338 | static const SK_OT_ULONG SyriacMask = SkOTSetULONGBit<71 - 64>::value; |
339 | static const SK_OT_ULONG ThaanaMask = SkOTSetULONGBit<72 - 64>::value; |
340 | static const SK_OT_ULONG SinhalaMask = SkOTSetULONGBit<73 - 64>::value; |
341 | static const SK_OT_ULONG MyanmarMask = SkOTSetULONGBit<74 - 64>::value; |
342 | static const SK_OT_ULONG EthiopicMask = SkOTSetULONGBit<75 - 64>::value; |
343 | static const SK_OT_ULONG CherokeeMask = SkOTSetULONGBit<76 - 64>::value; |
344 | static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkOTSetULONGBit<77 - 64>::value; |
345 | static const SK_OT_ULONG OghamMask = SkOTSetULONGBit<78 - 64>::value; |
346 | static const SK_OT_ULONG RunicMask = SkOTSetULONGBit<79 - 64>::value; |
347 | static const SK_OT_ULONG KhmerMask = SkOTSetULONGBit<80 - 64>::value; |
348 | static const SK_OT_ULONG MongolianMask = SkOTSetULONGBit<81 - 64>::value; |
349 | static const SK_OT_ULONG BrailleMask = SkOTSetULONGBit<82 - 64>::value; |
350 | static const SK_OT_ULONG YiMask = SkOTSetULONGBit<83 - 64>::value; |
351 | static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkOTSetULONGBit<84 - 64>::value; |
352 | static const SK_OT_ULONG OldItalicMask = SkOTSetULONGBit<85 - 64>::value; |
353 | static const SK_OT_ULONG GothicMask = SkOTSetULONGBit<86 - 64>::value; |
354 | static const SK_OT_ULONG DeseretMask = SkOTSetULONGBit<87 - 64>::value; |
355 | static const SK_OT_ULONG MusicalSymbolsMask = SkOTSetULONGBit<88 - 64>::value; |
356 | static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkOTSetULONGBit<89 - 64>::value; |
357 | static const SK_OT_ULONG PrivateUseMask = SkOTSetULONGBit<90 - 64>::value; |
358 | static const SK_OT_ULONG VariationSelectorsMask = SkOTSetULONGBit<91 - 64>::value; |
359 | static const SK_OT_ULONG TagsMask = SkOTSetULONGBit<92 - 64>::value; |
360 | }; |
361 | SK_OT_ULONG value[4]; |
362 | } raw; |
363 | } ulUnicodeRange; |
364 | SK_OT_CHAR achVendID[4]; |
365 | union Selection { |
366 | struct Field { |
367 | //8-15 |
368 | SK_OT_BYTE_BITFIELD( |
369 | Reserved08, |
370 | Reserved09, |
371 | Reserved10, |
372 | Reserved11, |
373 | Reserved12, |
374 | Reserved13, |
375 | Reserved14, |
376 | Reserved15) |
377 | //0-7 |
378 | SK_OT_BYTE_BITFIELD( |
379 | Italic, |
380 | Underscore, |
381 | Negative, |
382 | Outlined, |
383 | Strikeout, |
384 | Bold, |
385 | Regular, |
386 | Reserved07) |
387 | } field; |
388 | struct Raw { |
389 | static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; |
390 | static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; |
391 | static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; |
392 | static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; |
393 | static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; |
394 | static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; |
395 | static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; |
396 | SK_OT_USHORT value; |
397 | } raw; |
398 | } fsSelection; |
399 | SK_OT_USHORT usFirstCharIndex; |
400 | SK_OT_USHORT usLastCharIndex; |
401 | //version0 |
402 | SK_OT_SHORT sTypoAscender; |
403 | SK_OT_SHORT sTypoDescender; |
404 | SK_OT_SHORT sTypoLineGap; |
405 | SK_OT_USHORT usWinAscent; |
406 | SK_OT_USHORT usWinDescent; |
407 | //version1 |
408 | union { |
409 | struct { |
410 | //l0 24-31 |
411 | SK_OT_BYTE_BITFIELD( |
412 | , |
413 | , |
414 | , |
415 | , |
416 | , |
417 | , |
418 | , |
419 | ) |
420 | //l0 16-23 |
421 | SK_OT_BYTE_BITFIELD( |
422 | , |
423 | , |
424 | , |
425 | , |
426 | , |
427 | , |
428 | , |
429 | ) |
430 | //l0 8-15 |
431 | SK_OT_BYTE_BITFIELD( |
432 | , |
433 | , |
434 | , |
435 | , |
436 | , |
437 | , |
438 | , |
439 | ) |
440 | //l0 0-7 |
441 | SK_OT_BYTE_BITFIELD( |
442 | , |
443 | , |
444 | , |
445 | , |
446 | , |
447 | , |
448 | , |
449 | ) |
450 | |
451 | //l1 24-31 |
452 | SK_OT_BYTE_BITFIELD( |
453 | , |
454 | , |
455 | , |
456 | , |
457 | , |
458 | , |
459 | , |
460 | ) |
461 | //l1 16-23 |
462 | SK_OT_BYTE_BITFIELD( |
463 | , |
464 | , |
465 | , |
466 | , |
467 | , |
468 | , |
469 | MSDOSIcelandic_861, |
470 | ) |
471 | //l1 8-15 |
472 | SK_OT_BYTE_BITFIELD( |
473 | , |
474 | , |
475 | , |
476 | , |
477 | , |
478 | , |
479 | , |
480 | ) |
481 | //l1 0-7 |
482 | SK_OT_BYTE_BITFIELD( |
483 | , |
484 | , |
485 | , |
486 | , |
487 | , |
488 | , |
489 | , |
490 | ) |
491 | } ; |
492 | struct { |
493 | struct { |
494 | static const SK_OT_ULONG = SkOTSetULONGBit<0>::value; |
495 | static const SK_OT_ULONG = SkOTSetULONGBit<1>::value; |
496 | static const SK_OT_ULONG = SkOTSetULONGBit<2>::value; |
497 | static const SK_OT_ULONG = SkOTSetULONGBit<3>::value; |
498 | static const SK_OT_ULONG = SkOTSetULONGBit<4>::value; |
499 | static const SK_OT_ULONG = SkOTSetULONGBit<5>::value; |
500 | static const SK_OT_ULONG = SkOTSetULONGBit<6>::value; |
501 | static const SK_OT_ULONG = SkOTSetULONGBit<7>::value; |
502 | static const SK_OT_ULONG = SkOTSetULONGBit<8>::value; |
503 | static const SK_OT_ULONG = SkOTSetULONGBit<16>::value; |
504 | static const SK_OT_ULONG = SkOTSetULONGBit<17>::value; |
505 | static const SK_OT_ULONG = SkOTSetULONGBit<18>::value; |
506 | static const SK_OT_ULONG = SkOTSetULONGBit<19>::value; |
507 | static const SK_OT_ULONG = SkOTSetULONGBit<20>::value; |
508 | static const SK_OT_ULONG = SkOTSetULONGBit<21>::value; |
509 | static const SK_OT_ULONG = SkOTSetULONGBit<29>::value; |
510 | static const SK_OT_ULONG = SkOTSetULONGBit<30>::value; |
511 | static const SK_OT_ULONG = SkOTSetULONGBit<31>::value; |
512 | }; |
513 | struct { |
514 | static const SK_OT_ULONG = SkOTSetULONGBit<48 - 32>::value; |
515 | static const SK_OT_ULONG = SkOTSetULONGBit<49 - 32>::value; |
516 | static const SK_OT_ULONG = SkOTSetULONGBit<50 - 32>::value; |
517 | static const SK_OT_ULONG = SkOTSetULONGBit<51 - 32>::value; |
518 | static const SK_OT_ULONG = SkOTSetULONGBit<52 - 32>::value; |
519 | static const SK_OT_ULONG = SkOTSetULONGBit<53 - 32>::value; |
520 | static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value; |
521 | static const SK_OT_ULONG = SkOTSetULONGBit<55 - 32>::value; |
522 | static const SK_OT_ULONG = SkOTSetULONGBit<56 - 32>::value; |
523 | static const SK_OT_ULONG = SkOTSetULONGBit<57 - 32>::value; |
524 | static const SK_OT_ULONG = SkOTSetULONGBit<58 - 32>::value; |
525 | static const SK_OT_ULONG = SkOTSetULONGBit<59 - 32>::value; |
526 | static const SK_OT_ULONG = SkOTSetULONGBit<60 - 32>::value; |
527 | static const SK_OT_ULONG = SkOTSetULONGBit<61 - 32>::value; |
528 | static const SK_OT_ULONG = SkOTSetULONGBit<62 - 32>::value; |
529 | static const SK_OT_ULONG = SkOTSetULONGBit<63 - 32>::value; |
530 | }; |
531 | SK_OT_ULONG [2]; |
532 | } ; |
533 | } ; |
534 | //version2 |
535 | SK_OT_SHORT sxHeight; |
536 | SK_OT_SHORT sCapHeight; |
537 | SK_OT_USHORT usDefaultChar; |
538 | SK_OT_USHORT usBreakChar; |
539 | SK_OT_USHORT usMaxContext; |
540 | }; |
541 | |
542 | #pragma pack(pop) |
543 | |
544 | |
545 | static_assert(sizeof(SkOTTableOS2_V3) == 96, "sizeof_SkOTTableOS2_V3_not_96" ); |
546 | |
547 | #endif |
548 | |