SkOTTable_OS_2_V1.h 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515
  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. #ifndef SkOTTable_OS_2_V1_DEFINED
  8. #define SkOTTable_OS_2_V1_DEFINED
  9. #include "src/core/SkEndian.h"
  10. #include "src/sfnt/SkIBMFamilyClass.h"
  11. #include "src/sfnt/SkOTTableTypes.h"
  12. #include "src/sfnt/SkPanose.h"
  13. #pragma pack(push, 1)
  14. struct SkOTTableOS2_V1 {
  15. SK_OT_USHORT version;
  16. static const SK_OT_USHORT VERSION = SkTEndian_SwapBE16(1);
  17. SK_OT_SHORT xAvgCharWidth;
  18. struct WeightClass {
  19. enum Value : SK_OT_USHORT {
  20. Thin = SkTEndian_SwapBE16(100),
  21. ExtraLight = SkTEndian_SwapBE16(200),
  22. Light = SkTEndian_SwapBE16(300),
  23. Normal = SkTEndian_SwapBE16(400),
  24. Medium = SkTEndian_SwapBE16(500),
  25. SemiBold = SkTEndian_SwapBE16(600),
  26. Bold = SkTEndian_SwapBE16(700),
  27. ExtraBold = SkTEndian_SwapBE16(800),
  28. Black = SkTEndian_SwapBE16(900),
  29. };
  30. SK_OT_USHORT value;
  31. } usWeightClass;
  32. struct WidthClass {
  33. enum Value : SK_OT_USHORT {
  34. UltraCondensed = SkTEndian_SwapBE16(1),
  35. ExtraCondensed = SkTEndian_SwapBE16(2),
  36. Condensed = SkTEndian_SwapBE16(3),
  37. SemiCondensed = SkTEndian_SwapBE16(4),
  38. Medium = SkTEndian_SwapBE16(5),
  39. SemiExpanded = SkTEndian_SwapBE16(6),
  40. Expanded = SkTEndian_SwapBE16(7),
  41. ExtraExpanded = SkTEndian_SwapBE16(8),
  42. UltraExpanded = SkTEndian_SwapBE16(9),
  43. } value;
  44. } usWidthClass;
  45. union Type {
  46. struct Field {
  47. //8-15
  48. SK_OT_BYTE_BITFIELD(
  49. Reserved08,
  50. Reserved09,
  51. Reserved10,
  52. Reserved11,
  53. Reserved12,
  54. Reserved13,
  55. Reserved14,
  56. Reserved15)
  57. //0-7
  58. SK_OT_BYTE_BITFIELD(
  59. Reserved00,
  60. Restricted,
  61. PreviewPrint,
  62. Editable,
  63. Reserved04,
  64. Reserved05,
  65. Reserved06,
  66. Reserved07)
  67. } field;
  68. struct Raw {
  69. static const SK_OT_USHORT Installable = 0;
  70. static const SK_OT_USHORT RestrictedMask = SkOTSetUSHORTBit<1>::value;
  71. static const SK_OT_USHORT PreviewPrintMask = SkOTSetUSHORTBit<2>::value;
  72. static const SK_OT_USHORT EditableMask = SkOTSetUSHORTBit<3>::value;
  73. SK_OT_USHORT value;
  74. } raw;
  75. } fsType;
  76. SK_OT_SHORT ySubscriptXSize;
  77. SK_OT_SHORT ySubscriptYSize;
  78. SK_OT_SHORT ySubscriptXOffset;
  79. SK_OT_SHORT ySubscriptYOffset;
  80. SK_OT_SHORT ySuperscriptXSize;
  81. SK_OT_SHORT ySuperscriptYSize;
  82. SK_OT_SHORT ySuperscriptXOffset;
  83. SK_OT_SHORT ySuperscriptYOffset;
  84. SK_OT_SHORT yStrikeoutSize;
  85. SK_OT_SHORT yStrikeoutPosition;
  86. SkIBMFamilyClass sFamilyClass;
  87. SkPanose panose;
  88. union UnicodeRange {
  89. struct Field {
  90. //l0 24-31
  91. SK_OT_BYTE_BITFIELD(
  92. Thai,
  93. Lao,
  94. BasicGeorgian,
  95. GeorgianExtended,
  96. HangulJamo,
  97. LatinExtendedAdditional,
  98. GreekExtended,
  99. GeneralPunctuation)
  100. //l0 16-23
  101. SK_OT_BYTE_BITFIELD(
  102. Bengali,
  103. Gurmukhi,
  104. Gujarati,
  105. Oriya,
  106. Tamil,
  107. Telugu,
  108. Kannada,
  109. Malayalam)
  110. //l0 8-15
  111. SK_OT_BYTE_BITFIELD(
  112. GreekSymbolsAndCoptic,
  113. Cyrillic,
  114. Armenian,
  115. BasicHebrew,
  116. HebrewExtendedAB,
  117. BasicArabic,
  118. ArabicExtended,
  119. Devanagari)
  120. //l0 0-7
  121. SK_OT_BYTE_BITFIELD(
  122. BasicLatin,
  123. Latin1Supplement,
  124. LatinExtendedA,
  125. LatinExtendedB,
  126. IPAExtensions,
  127. SpacingModifierLetters,
  128. CombiningDiacriticalMarks,
  129. BasicGreek)
  130. //l1 24-31
  131. SK_OT_BYTE_BITFIELD(
  132. Hangul,
  133. Reserved057,
  134. Reserved058,
  135. CJKUnifiedIdeographs,
  136. PrivateUseArea,
  137. CJKCompatibilityIdeographs,
  138. AlphabeticPresentationForms,
  139. ArabicPresentationFormsA)
  140. //l1 16-23
  141. SK_OT_BYTE_BITFIELD(
  142. CJKSymbolsAndPunctuation,
  143. Hiragana,
  144. Katakana,
  145. Bopomofo,
  146. HangulCompatibilityJamo,
  147. CJKMiscellaneous,
  148. EnclosedCJKLettersAndMonths,
  149. CJKCompatibility)
  150. //l1 8-15
  151. SK_OT_BYTE_BITFIELD(
  152. ControlPictures,
  153. OpticalCharacterRecognition,
  154. EnclosedAlphanumerics,
  155. BoxDrawing,
  156. BlockElements,
  157. GeometricShapes,
  158. MiscellaneousSymbols,
  159. Dingbats)
  160. //l1 0-7
  161. SK_OT_BYTE_BITFIELD(
  162. SuperscriptsAndSubscripts,
  163. CurrencySymbols,
  164. CombiningDiacriticalMarksForSymbols,
  165. LetterlikeSymbols,
  166. NumberForms,
  167. Arrows,
  168. MathematicalOperators,
  169. MiscellaneousTechnical)
  170. //l2 24-31
  171. SK_OT_BYTE_BITFIELD(
  172. Reserved088,
  173. Reserved089,
  174. Reserved090,
  175. Reserved091,
  176. Reserved092,
  177. Reserved093,
  178. Reserved094,
  179. Reserved095)
  180. //l2 16-23
  181. SK_OT_BYTE_BITFIELD(
  182. Reserved080,
  183. Reserved081,
  184. Reserved082,
  185. Reserved083,
  186. Reserved084,
  187. Reserved085,
  188. Reserved086,
  189. Reserved087)
  190. //l2 8-15
  191. SK_OT_BYTE_BITFIELD(
  192. Reserved072,
  193. Reserved073,
  194. Reserved074,
  195. Reserved075,
  196. Reserved076,
  197. Reserved077,
  198. Reserved078,
  199. Reserved079)
  200. //l2 0-7
  201. SK_OT_BYTE_BITFIELD(
  202. CombiningHalfMarks,
  203. CJKCompatibilityForms,
  204. SmallFormVariants,
  205. ArabicPresentationFormsB,
  206. HalfwidthAndFullwidthForms,
  207. Specials,
  208. Reserved70,
  209. Reserved71)
  210. //l3 24-31
  211. SK_OT_BYTE_BITFIELD(
  212. Reserved120,
  213. Reserved121,
  214. Reserved122,
  215. Reserved123,
  216. Reserved124,
  217. Reserved125,
  218. Reserved126,
  219. Reserved127)
  220. //l3 16-23
  221. SK_OT_BYTE_BITFIELD(
  222. Reserved112,
  223. Reserved113,
  224. Reserved114,
  225. Reserved115,
  226. Reserved116,
  227. Reserved117,
  228. Reserved118,
  229. Reserved119)
  230. //l3 8-15
  231. SK_OT_BYTE_BITFIELD(
  232. Reserved104,
  233. Reserved105,
  234. Reserved106,
  235. Reserved107,
  236. Reserved108,
  237. Reserved109,
  238. Reserved110,
  239. Reserved111)
  240. //l3 0-7
  241. SK_OT_BYTE_BITFIELD(
  242. Reserved096,
  243. Reserved097,
  244. Reserved098,
  245. Reserved099,
  246. Reserved100,
  247. Reserved101,
  248. Reserved102,
  249. Reserved103)
  250. } field;
  251. struct Raw {
  252. struct l0 {
  253. static const SK_OT_ULONG BasicLatinMask = SkOTSetULONGBit<0>::value;
  254. static const SK_OT_ULONG Latin1SupplementMask = SkOTSetULONGBit<1>::value;
  255. static const SK_OT_ULONG LatinExtendedAMask = SkOTSetULONGBit<2>::value;
  256. static const SK_OT_ULONG LatinExtendedBMask = SkOTSetULONGBit<3>::value;
  257. static const SK_OT_ULONG IPAExtensionsMask = SkOTSetULONGBit<4>::value;
  258. static const SK_OT_ULONG SpacingModifierLettersMask = SkOTSetULONGBit<5>::value;
  259. static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkOTSetULONGBit<6>::value;
  260. static const SK_OT_ULONG BasicGreekMask = SkOTSetULONGBit<7>::value;
  261. static const SK_OT_ULONG GreekSymbolsAndCCopticMask = SkOTSetULONGBit<8>::value;
  262. static const SK_OT_ULONG CyrillicMask = SkOTSetULONGBit<9>::value;
  263. static const SK_OT_ULONG ArmenianMask = SkOTSetULONGBit<10>::value;
  264. static const SK_OT_ULONG BasicHebrewMask = SkOTSetULONGBit<11>::value;
  265. static const SK_OT_ULONG HebrewExtendedABMask = SkOTSetULONGBit<12>::value;
  266. static const SK_OT_ULONG BasicArabicMask = SkOTSetULONGBit<13>::value;
  267. static const SK_OT_ULONG ArabicExtendedMask = SkOTSetULONGBit<14>::value;
  268. static const SK_OT_ULONG DevanagariMask = SkOTSetULONGBit<15>::value;
  269. static const SK_OT_ULONG BengaliMask = SkOTSetULONGBit<16>::value;
  270. static const SK_OT_ULONG GurmukhiMask = SkOTSetULONGBit<17>::value;
  271. static const SK_OT_ULONG GujaratiMask = SkOTSetULONGBit<18>::value;
  272. static const SK_OT_ULONG OriyaMask = SkOTSetULONGBit<19>::value;
  273. static const SK_OT_ULONG TamilMask = SkOTSetULONGBit<20>::value;
  274. static const SK_OT_ULONG TeluguMask = SkOTSetULONGBit<21>::value;
  275. static const SK_OT_ULONG KannadaMask = SkOTSetULONGBit<22>::value;
  276. static const SK_OT_ULONG MalayalamMask = SkOTSetULONGBit<23>::value;
  277. static const SK_OT_ULONG ThaiMask = SkOTSetULONGBit<24>::value;
  278. static const SK_OT_ULONG LaoMask = SkOTSetULONGBit<25>::value;
  279. static const SK_OT_ULONG BasicGeorgianMask = SkOTSetULONGBit<26>::value;
  280. static const SK_OT_ULONG GeorgianExtendedMask = SkOTSetULONGBit<27>::value;
  281. static const SK_OT_ULONG HangulJamoMask = SkOTSetULONGBit<28>::value;
  282. static const SK_OT_ULONG LatinExtendedAdditionalMask = SkOTSetULONGBit<29>::value;
  283. static const SK_OT_ULONG GreekExtendedMask = SkOTSetULONGBit<30>::value;
  284. static const SK_OT_ULONG GeneralPunctuationMask = SkOTSetULONGBit<31>::value;
  285. };
  286. struct l1 {
  287. static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkOTSetULONGBit<32 - 32>::value;
  288. static const SK_OT_ULONG CurrencySymbolsMask = SkOTSetULONGBit<33 - 32>::value;
  289. static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkOTSetULONGBit<34 - 32>::value;
  290. static const SK_OT_ULONG LetterlikeSymbolsMask = SkOTSetULONGBit<35 - 32>::value;
  291. static const SK_OT_ULONG NumberFormsMask = SkOTSetULONGBit<36 - 32>::value;
  292. static const SK_OT_ULONG ArrowsMask = SkOTSetULONGBit<37 - 32>::value;
  293. static const SK_OT_ULONG MathematicalOperatorsMask = SkOTSetULONGBit<38 - 32>::value;
  294. static const SK_OT_ULONG MiscellaneousTechnicalMask = SkOTSetULONGBit<39 - 32>::value;
  295. static const SK_OT_ULONG ControlPicturesMask = SkOTSetULONGBit<40 - 32>::value;
  296. static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkOTSetULONGBit<41 - 32>::value;
  297. static const SK_OT_ULONG EnclosedAlphanumericsMask = SkOTSetULONGBit<42 - 32>::value;
  298. static const SK_OT_ULONG BoxDrawingMask = SkOTSetULONGBit<43 - 32>::value;
  299. static const SK_OT_ULONG BlockElementsMask = SkOTSetULONGBit<44 - 32>::value;
  300. static const SK_OT_ULONG GeometricShapesMask = SkOTSetULONGBit<45 - 32>::value;
  301. static const SK_OT_ULONG MiscellaneousSymbolsMask = SkOTSetULONGBit<46 - 32>::value;
  302. static const SK_OT_ULONG DingbatsMask = SkOTSetULONGBit<47 - 32>::value;
  303. static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkOTSetULONGBit<48 - 32>::value;
  304. static const SK_OT_ULONG HiraganaMask = SkOTSetULONGBit<49 - 32>::value;
  305. static const SK_OT_ULONG KatakanaMask = SkOTSetULONGBit<50 - 32>::value;
  306. static const SK_OT_ULONG BopomofoMask = SkOTSetULONGBit<51 - 32>::value;
  307. static const SK_OT_ULONG HangulCompatibilityJamoMask = SkOTSetULONGBit<52 - 32>::value;
  308. static const SK_OT_ULONG CJKMiscellaneousMask = SkOTSetULONGBit<53 - 32>::value;
  309. static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkOTSetULONGBit<54 - 32>::value;
  310. static const SK_OT_ULONG CJKCompatibilityMask = SkOTSetULONGBit<55 - 32>::value;
  311. static const SK_OT_ULONG HangulMask = SkOTSetULONGBit<56 - 32>::value;
  312. //Reserved
  313. //Reserved
  314. static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkOTSetULONGBit<59 - 32>::value;
  315. static const SK_OT_ULONG PrivateUseAreaMask = SkOTSetULONGBit<60 - 32>::value;
  316. static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkOTSetULONGBit<61 - 32>::value;
  317. static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkOTSetULONGBit<62 - 32>::value;
  318. static const SK_OT_ULONG ArabicPresentationFormsAMask = SkOTSetULONGBit<63 - 32>::value;
  319. };
  320. struct l2 {
  321. static const SK_OT_ULONG CombiningHalfMarksMask = SkOTSetULONGBit<64 - 64>::value;
  322. static const SK_OT_ULONG CJKCompatibilityFormsMask = SkOTSetULONGBit<65 - 64>::value;
  323. static const SK_OT_ULONG SmallFormVariantsMask = SkOTSetULONGBit<66 - 64>::value;
  324. static const SK_OT_ULONG ArabicPresentationFormsBMask = SkOTSetULONGBit<67 - 64>::value;
  325. static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkOTSetULONGBit<68 - 64>::value;
  326. static const SK_OT_ULONG SpecialsMask = SkOTSetULONGBit<69 - 64>::value;
  327. };
  328. SK_OT_ULONG value[4];
  329. } raw;
  330. } ulUnicodeRange;
  331. SK_OT_CHAR achVendID[4];
  332. union Selection {
  333. struct Field {
  334. //8-15
  335. SK_OT_BYTE_BITFIELD(
  336. Reserved08,
  337. Reserved09,
  338. Reserved10,
  339. Reserved11,
  340. Reserved12,
  341. Reserved13,
  342. Reserved14,
  343. Reserved15)
  344. //0-7
  345. SK_OT_BYTE_BITFIELD(
  346. Italic,
  347. Underscore,
  348. Negative,
  349. Outlined,
  350. Strikeout,
  351. Bold,
  352. Regular,
  353. Reserved07)
  354. } field;
  355. struct Raw {
  356. static const SK_OT_USHORT ItalicMask = SkOTSetUSHORTBit<0>::value;
  357. static const SK_OT_USHORT UnderscoreMask = SkOTSetUSHORTBit<1>::value;
  358. static const SK_OT_USHORT NegativeMask = SkOTSetUSHORTBit<2>::value;
  359. static const SK_OT_USHORT OutlinedMask = SkOTSetUSHORTBit<3>::value;
  360. static const SK_OT_USHORT StrikeoutMask = SkOTSetUSHORTBit<4>::value;
  361. static const SK_OT_USHORT BoldMask = SkOTSetUSHORTBit<5>::value;
  362. static const SK_OT_USHORT RegularMask = SkOTSetUSHORTBit<6>::value;
  363. SK_OT_USHORT value;
  364. } raw;
  365. } fsSelection;
  366. SK_OT_USHORT usFirstCharIndex;
  367. SK_OT_USHORT usLastCharIndex;
  368. //version0
  369. SK_OT_SHORT sTypoAscender;
  370. SK_OT_SHORT sTypoDescender;
  371. SK_OT_SHORT sTypoLineGap;
  372. SK_OT_USHORT usWinAscent;
  373. SK_OT_USHORT usWinDescent;
  374. //version1
  375. union CodePageRange {
  376. struct Field {
  377. //l0 24-31
  378. SK_OT_BYTE_BITFIELD(
  379. Reserved24,
  380. Reserved25,
  381. Reserved26,
  382. Reserved27,
  383. Reserved28,
  384. MacintoshCharacterSet,
  385. OEMCharacterSet,
  386. SymbolCharacterSet)
  387. //l0 16-23
  388. SK_OT_BYTE_BITFIELD(
  389. Thai_874,
  390. JISJapan_932,
  391. ChineseSimplified_936,
  392. KoreanWansung_949,
  393. ChineseTraditional_950,
  394. KoreanJohab_1361,
  395. Reserved22,
  396. Reserved23)
  397. //l0 8-15
  398. SK_OT_BYTE_BITFIELD(
  399. Reserved08,
  400. Reserved09,
  401. Reserved10,
  402. Reserved11,
  403. Reserved12,
  404. Reserved13,
  405. Reserved14,
  406. Reserved15)
  407. //l0 0-7
  408. SK_OT_BYTE_BITFIELD(
  409. Latin1_1252,
  410. Latin2EasternEurope_1250,
  411. Cyrillic_1251,
  412. Greek_1253,
  413. Turkish_1254,
  414. Hebrew_1255,
  415. Arabic_1256,
  416. WindowsBaltic_1257)
  417. //l1 24-31
  418. SK_OT_BYTE_BITFIELD(
  419. IBMTurkish_857,
  420. IBMCyrillic_855,
  421. Latin2_852,
  422. MSDOSBaltic_775,
  423. Greek_737,
  424. Arabic_708,
  425. WELatin1_850,
  426. US_437)
  427. //l1 16-23
  428. SK_OT_BYTE_BITFIELD(
  429. IBMGreek_869,
  430. MSDOSRussian_866,
  431. MSDOSNordic_865,
  432. Arabic_864,
  433. MSDOSCanadianFrench_863,
  434. Hebrew_862,
  435. MSDOSIcelandic_861,
  436. MSDOSPortuguese_860)
  437. //l1 8-15
  438. SK_OT_BYTE_BITFIELD(
  439. Reserved40,
  440. Reserved41,
  441. Reserved42,
  442. Reserved43,
  443. Reserved44,
  444. Reserved45,
  445. Reserved46,
  446. Reserved47)
  447. //l1 0-7
  448. SK_OT_BYTE_BITFIELD(
  449. Reserved32,
  450. Reserved33,
  451. Reserved34,
  452. Reserved35,
  453. Reserved36,
  454. Reserved37,
  455. Reserved38,
  456. Reserved39)
  457. } field;
  458. struct Raw {
  459. struct l0 {
  460. static const SK_OT_ULONG Latin1_1252Mask = SkOTSetULONGBit<0>::value;
  461. static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkOTSetULONGBit<1>::value;
  462. static const SK_OT_ULONG Cyrillic_1251Mask = SkOTSetULONGBit<2>::value;
  463. static const SK_OT_ULONG Greek_1253Mask = SkOTSetULONGBit<3>::value;
  464. static const SK_OT_ULONG Turkish_1254Mask = SkOTSetULONGBit<4>::value;
  465. static const SK_OT_ULONG Hebrew_1255Mask = SkOTSetULONGBit<5>::value;
  466. static const SK_OT_ULONG Arabic_1256Mask = SkOTSetULONGBit<6>::value;
  467. static const SK_OT_ULONG WindowsBaltic_1257Mask = SkOTSetULONGBit<7>::value;
  468. static const SK_OT_ULONG Thai_874Mask = SkOTSetULONGBit<16>::value;
  469. static const SK_OT_ULONG JISJapan_932Mask = SkOTSetULONGBit<17>::value;
  470. static const SK_OT_ULONG ChineseSimplified_936Mask = SkOTSetULONGBit<18>::value;
  471. static const SK_OT_ULONG KoreanWansung_949Mask = SkOTSetULONGBit<19>::value;
  472. static const SK_OT_ULONG ChineseTraditional_950Mask = SkOTSetULONGBit<20>::value;
  473. static const SK_OT_ULONG KoreanJohab_1361Mask = SkOTSetULONGBit<21>::value;
  474. static const SK_OT_ULONG MacintoshCharacterSetMask = SkOTSetULONGBit<29>::value;
  475. static const SK_OT_ULONG OEMCharacterSetMask = SkOTSetULONGBit<30>::value;
  476. static const SK_OT_ULONG SymbolCharacterSetMask = SkOTSetULONGBit<31>::value;
  477. };
  478. struct l1 {
  479. static const SK_OT_ULONG IBMGreek_869Mask = SkOTSetULONGBit<48 - 32>::value;
  480. static const SK_OT_ULONG MSDOSRussian_866Mask = SkOTSetULONGBit<49 - 32>::value;
  481. static const SK_OT_ULONG MSDOSNordic_865Mask = SkOTSetULONGBit<50 - 32>::value;
  482. static const SK_OT_ULONG Arabic_864Mask = SkOTSetULONGBit<51 - 32>::value;
  483. static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkOTSetULONGBit<52 - 32>::value;
  484. static const SK_OT_ULONG Hebrew_862Mask = SkOTSetULONGBit<53 - 32>::value;
  485. static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkOTSetULONGBit<54 - 32>::value;
  486. static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkOTSetULONGBit<55 - 32>::value;
  487. static const SK_OT_ULONG IBMTurkish_857Mask = SkOTSetULONGBit<56 - 32>::value;
  488. static const SK_OT_ULONG IBMCyrillic_855Mask = SkOTSetULONGBit<57 - 32>::value;
  489. static const SK_OT_ULONG Latin2_852Mask = SkOTSetULONGBit<58 - 32>::value;
  490. static const SK_OT_ULONG MSDOSBaltic_775Mask = SkOTSetULONGBit<59 - 32>::value;
  491. static const SK_OT_ULONG Greek_737Mask = SkOTSetULONGBit<60 - 32>::value;
  492. static const SK_OT_ULONG Arabic_708Mask = SkOTSetULONGBit<61 - 32>::value;
  493. static const SK_OT_ULONG WELatin1_850Mask = SkOTSetULONGBit<62 - 32>::value;
  494. static const SK_OT_ULONG US_437Mask = SkOTSetULONGBit<63 - 32>::value;
  495. };
  496. SK_OT_ULONG value[2];
  497. } raw;
  498. } ulCodePageRange;
  499. };
  500. #pragma pack(pop)
  501. static_assert(sizeof(SkOTTableOS2_V1) == 86, "sizeof_SkOTTableOS2_V1_not_86");
  502. #endif