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_V2_DEFINED |
9 | #define SkOTTable_OS_2_V2_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_V2 { |
19 | SK_OT_USHORT version; |
20 | static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(2); |
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 | Greek) |
137 | |
138 | //l1 24-31 |
139 | SK_OT_BYTE_BITFIELD( |
140 | Hangul, |
141 | Surrogates, |
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 | CJKMiscellaneous, |
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 | Reserved088, |
182 | Reserved089, |
183 | Reserved090, |
184 | Reserved091, |
185 | Reserved092, |
186 | Reserved093, |
187 | Reserved094, |
188 | Reserved095) |
189 | //l2 16-23 |
190 | SK_OT_BYTE_BITFIELD( |
191 | Khmer, |
192 | Mongolian, |
193 | Braille, |
194 | Yi, |
195 | Reserved084, |
196 | Reserved085, |
197 | Reserved086, |
198 | Reserved087) |
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 GreekMask = 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 | static const SK_OT_ULONG CJKMiscellaneousMask = SkOTSetULONGBit<53 - 32>::value; |
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 SurrogatesMask = 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 | }; |
352 | SK_OT_ULONG value[4]; |
353 | } raw; |
354 | } ulUnicodeRange; |
355 | SK_OT_CHAR achVendID[4]; |
356 | union Selection { |
357 | struct Field { |
358 | //8-15 |
359 | SK_OT_BYTE_BITFIELD( |
360 | Reserved08, |
361 | Reserved09, |
362 | Reserved10, |
363 | Reserved11, |
364 | Reserved12, |
365 | Reserved13, |
366 | Reserved14, |
367 | Reserved15) |
368 | //0-7 |
369 | SK_OT_BYTE_BITFIELD( |
370 | Italic, |
371 | Underscore, |
372 | Negative, |
373 | Outlined, |
374 | Strikeout, |
375 | Bold, |
376 | Regular, |
377 | Reserved07) |
378 | } field; |
379 | struct Raw { |
380 | static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value; |
381 | static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value; |
382 | static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value; |
383 | static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value; |
384 | static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value; |
385 | static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value; |
386 | static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value; |
387 | SK_OT_USHORT value; |
388 | } raw; |
389 | } fsSelection; |
390 | SK_OT_USHORT usFirstCharIndex; |
391 | SK_OT_USHORT usLastCharIndex; |
392 | //version0 |
393 | SK_OT_SHORT sTypoAscender; |
394 | SK_OT_SHORT sTypoDescender; |
395 | SK_OT_SHORT sTypoLineGap; |
396 | SK_OT_USHORT usWinAscent; |
397 | SK_OT_USHORT usWinDescent; |
398 | //version1 |
399 | union { |
400 | struct { |
401 | //l0 24-31 |
402 | SK_OT_BYTE_BITFIELD( |
403 | , |
404 | , |
405 | , |
406 | , |
407 | , |
408 | , |
409 | , |
410 | ) |
411 | //l0 16-23 |
412 | SK_OT_BYTE_BITFIELD( |
413 | , |
414 | , |
415 | , |
416 | , |
417 | , |
418 | , |
419 | , |
420 | ) |
421 | //l0 8-15 |
422 | SK_OT_BYTE_BITFIELD( |
423 | , |
424 | , |
425 | , |
426 | , |
427 | , |
428 | , |
429 | , |
430 | ) |
431 | //l0 0-7 |
432 | SK_OT_BYTE_BITFIELD( |
433 | , |
434 | , |
435 | , |
436 | , |
437 | , |
438 | , |
439 | , |
440 | ) |
441 | |
442 | //l1 24-31 |
443 | SK_OT_BYTE_BITFIELD( |
444 | , |
445 | , |
446 | , |
447 | , |
448 | , |
449 | , |
450 | , |
451 | ) |
452 | //l1 16-23 |
453 | SK_OT_BYTE_BITFIELD( |
454 | , |
455 | , |
456 | , |
457 | , |
458 | , |
459 | , |
460 | MSDOSIcelandic_861, |
461 | ) |
462 | //l1 8-15 |
463 | SK_OT_BYTE_BITFIELD( |
464 | , |
465 | , |
466 | , |
467 | , |
468 | , |
469 | , |
470 | , |
471 | ) |
472 | //l1 0-7 |
473 | SK_OT_BYTE_BITFIELD( |
474 | , |
475 | , |
476 | , |
477 | , |
478 | , |
479 | , |
480 | , |
481 | ) |
482 | } ; |
483 | struct { |
484 | struct { |
485 | static const SK_OT_ULONG = SkOTSetULONGBit<0>::value; |
486 | static const SK_OT_ULONG = SkOTSetULONGBit<1>::value; |
487 | static const SK_OT_ULONG = SkOTSetULONGBit<2>::value; |
488 | static const SK_OT_ULONG = SkOTSetULONGBit<3>::value; |
489 | static const SK_OT_ULONG = SkOTSetULONGBit<4>::value; |
490 | static const SK_OT_ULONG = SkOTSetULONGBit<5>::value; |
491 | static const SK_OT_ULONG = SkOTSetULONGBit<6>::value; |
492 | static const SK_OT_ULONG = SkOTSetULONGBit<7>::value; |
493 | static const SK_OT_ULONG = SkOTSetULONGBit<8>::value; |
494 | static const SK_OT_ULONG = SkOTSetULONGBit<16>::value; |
495 | static const SK_OT_ULONG = SkOTSetULONGBit<17>::value; |
496 | static const SK_OT_ULONG = SkOTSetULONGBit<18>::value; |
497 | static const SK_OT_ULONG = SkOTSetULONGBit<19>::value; |
498 | static const SK_OT_ULONG = SkOTSetULONGBit<20>::value; |
499 | static const SK_OT_ULONG = SkOTSetULONGBit<21>::value; |
500 | static const SK_OT_ULONG = SkOTSetULONGBit<29>::value; |
501 | static const SK_OT_ULONG = SkOTSetULONGBit<30>::value; |
502 | static const SK_OT_ULONG = SkOTSetULONGBit<31>::value; |
503 | }; |
504 | struct { |
505 | static const SK_OT_ULONG = SkOTSetULONGBit<48 - 32>::value; |
506 | static const SK_OT_ULONG = SkOTSetULONGBit<49 - 32>::value; |
507 | static const SK_OT_ULONG = SkOTSetULONGBit<50 - 32>::value; |
508 | static const SK_OT_ULONG = SkOTSetULONGBit<51 - 32>::value; |
509 | static const SK_OT_ULONG = SkOTSetULONGBit<52 - 32>::value; |
510 | static const SK_OT_ULONG = SkOTSetULONGBit<53 - 32>::value; |
511 | static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value; |
512 | static const SK_OT_ULONG = SkOTSetULONGBit<55 - 32>::value; |
513 | static const SK_OT_ULONG = SkOTSetULONGBit<56 - 32>::value; |
514 | static const SK_OT_ULONG = SkOTSetULONGBit<57 - 32>::value; |
515 | static const SK_OT_ULONG = SkOTSetULONGBit<58 - 32>::value; |
516 | static const SK_OT_ULONG = SkOTSetULONGBit<59 - 32>::value; |
517 | static const SK_OT_ULONG = SkOTSetULONGBit<60 - 32>::value; |
518 | static const SK_OT_ULONG = SkOTSetULONGBit<61 - 32>::value; |
519 | static const SK_OT_ULONG = SkOTSetULONGBit<62 - 32>::value; |
520 | static const SK_OT_ULONG = SkOTSetULONGBit<63 - 32>::value; |
521 | }; |
522 | SK_OT_ULONG [2]; |
523 | } ; |
524 | } ; |
525 | //version2 |
526 | SK_OT_SHORT sxHeight; |
527 | SK_OT_SHORT sCapHeight; |
528 | SK_OT_USHORT usDefaultChar; |
529 | SK_OT_USHORT usBreakChar; |
530 | SK_OT_USHORT usMaxContext; |
531 | }; |
532 | |
533 | #pragma pack(pop) |
534 | |
535 | |
536 | static_assert(sizeof(SkOTTableOS2_V2) == 96, "sizeof_SkOTTableOS2_V2_not_96" ); |
537 | |
538 | #endif |
539 | |