gfx/skia/trunk/src/sfnt/SkOTTable_OS_2_V1.h

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

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

mercurial