Sat, 03 Jan 2015 20:18:00 +0100
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_name_DEFINED |
michael@0 | 9 | #define SkOTTable_name_DEFINED |
michael@0 | 10 | |
michael@0 | 11 | #include "SkEndian.h" |
michael@0 | 12 | #include "SkOTTableTypes.h" |
michael@0 | 13 | #include "SkString.h" |
michael@0 | 14 | #include "SkTypedEnum.h" |
michael@0 | 15 | |
michael@0 | 16 | #pragma pack(push, 1) |
michael@0 | 17 | |
michael@0 | 18 | struct SkOTTableName { |
michael@0 | 19 | static const SK_OT_CHAR TAG0 = 'n'; |
michael@0 | 20 | static const SK_OT_CHAR TAG1 = 'a'; |
michael@0 | 21 | static const SK_OT_CHAR TAG2 = 'm'; |
michael@0 | 22 | static const SK_OT_CHAR TAG3 = 'e'; |
michael@0 | 23 | static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value; |
michael@0 | 24 | |
michael@0 | 25 | SK_OT_USHORT format; |
michael@0 | 26 | static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0); |
michael@0 | 27 | /** Format 1 was added in OpenType 1.6 (April 2009). */ |
michael@0 | 28 | static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1); |
michael@0 | 29 | |
michael@0 | 30 | /** The number of name records which follow. */ |
michael@0 | 31 | SK_OT_USHORT count; |
michael@0 | 32 | |
michael@0 | 33 | /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */ |
michael@0 | 34 | SK_OT_USHORT stringOffset; |
michael@0 | 35 | |
michael@0 | 36 | struct Record { |
michael@0 | 37 | /** The platform ID specifies how to interpret the encoding and language ID. */ |
michael@0 | 38 | struct PlatformID { |
michael@0 | 39 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 40 | ((Unicode, SkTEndian_SwapBE16(0))) |
michael@0 | 41 | ((Macintosh, SkTEndian_SwapBE16(1))) |
michael@0 | 42 | ((ISO, SkTEndian_SwapBE16(2))) // Deprecated, use Unicode instead. |
michael@0 | 43 | ((Windows, SkTEndian_SwapBE16(3))) |
michael@0 | 44 | ((Custom, SkTEndian_SwapBE16(4))) |
michael@0 | 45 | SK_SEQ_END, |
michael@0 | 46 | (value)SK_SEQ_END) |
michael@0 | 47 | } platformID; |
michael@0 | 48 | |
michael@0 | 49 | union EncodingID { |
michael@0 | 50 | SK_OT_USHORT custom; |
michael@0 | 51 | |
michael@0 | 52 | /** Always UTF-16BE. */ |
michael@0 | 53 | struct Unicode { |
michael@0 | 54 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 55 | ((Unicode10, SkTEndian_SwapBE16(0))) |
michael@0 | 56 | ((Unicode11, SkTEndian_SwapBE16(1))) |
michael@0 | 57 | ((ISO10646, SkTEndian_SwapBE16(2))) //deprecated, use Unicode11 |
michael@0 | 58 | ((Unicode20BMP, SkTEndian_SwapBE16(3))) |
michael@0 | 59 | ((Unicode20, SkTEndian_SwapBE16(4))) |
michael@0 | 60 | ((UnicodeVariationSequences, SkTEndian_SwapBE16(5))) |
michael@0 | 61 | ((UnicodeFull, SkTEndian_SwapBE16(6))) |
michael@0 | 62 | SK_SEQ_END, |
michael@0 | 63 | (value)SK_SEQ_END) |
michael@0 | 64 | } unicode; |
michael@0 | 65 | |
michael@0 | 66 | /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ |
michael@0 | 67 | * for their mappings to unicode. |
michael@0 | 68 | * Name table strings using PlatformID::Macintosh must use Roman. |
michael@0 | 69 | */ |
michael@0 | 70 | struct Macintosh { |
michael@0 | 71 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 72 | ((Roman, SkTEndian_SwapBE16(0))) |
michael@0 | 73 | ((Japanese, SkTEndian_SwapBE16(1))) |
michael@0 | 74 | ((ChineseTraditional, SkTEndian_SwapBE16(2))) |
michael@0 | 75 | ((Korean, SkTEndian_SwapBE16(3))) |
michael@0 | 76 | ((Arabic, SkTEndian_SwapBE16(4))) |
michael@0 | 77 | ((Hebrew, SkTEndian_SwapBE16(5))) |
michael@0 | 78 | ((Greek, SkTEndian_SwapBE16(6))) |
michael@0 | 79 | ((Russian, SkTEndian_SwapBE16(7))) |
michael@0 | 80 | ((RSymbol, SkTEndian_SwapBE16(8))) |
michael@0 | 81 | ((Devanagari, SkTEndian_SwapBE16(9))) |
michael@0 | 82 | ((Gurmukhi, SkTEndian_SwapBE16(10))) |
michael@0 | 83 | ((Gujarati, SkTEndian_SwapBE16(11))) |
michael@0 | 84 | ((Oriya, SkTEndian_SwapBE16(12))) |
michael@0 | 85 | ((Bengali, SkTEndian_SwapBE16(13))) |
michael@0 | 86 | ((Tamil, SkTEndian_SwapBE16(14))) |
michael@0 | 87 | ((Telugu, SkTEndian_SwapBE16(15))) |
michael@0 | 88 | ((Kannada, SkTEndian_SwapBE16(16))) |
michael@0 | 89 | ((Malayalam, SkTEndian_SwapBE16(17))) |
michael@0 | 90 | ((Sinhalese, SkTEndian_SwapBE16(18))) |
michael@0 | 91 | ((Burmese, SkTEndian_SwapBE16(19))) |
michael@0 | 92 | ((Khmer, SkTEndian_SwapBE16(20))) |
michael@0 | 93 | ((Thai, SkTEndian_SwapBE16(21))) |
michael@0 | 94 | ((Laotian, SkTEndian_SwapBE16(22))) |
michael@0 | 95 | ((Georgian, SkTEndian_SwapBE16(23))) |
michael@0 | 96 | ((Armenian, SkTEndian_SwapBE16(24))) |
michael@0 | 97 | ((ChineseSimplified, SkTEndian_SwapBE16(25))) |
michael@0 | 98 | ((Tibetan, SkTEndian_SwapBE16(26))) |
michael@0 | 99 | ((Mongolian, SkTEndian_SwapBE16(27))) |
michael@0 | 100 | ((Geez, SkTEndian_SwapBE16(28))) |
michael@0 | 101 | ((Slavic, SkTEndian_SwapBE16(29))) |
michael@0 | 102 | ((Vietnamese, SkTEndian_SwapBE16(30))) |
michael@0 | 103 | ((Sindhi, SkTEndian_SwapBE16(31))) |
michael@0 | 104 | ((Uninterpreted, SkTEndian_SwapBE16(32))) |
michael@0 | 105 | SK_SEQ_END, |
michael@0 | 106 | (value)SK_SEQ_END) |
michael@0 | 107 | } macintosh; |
michael@0 | 108 | |
michael@0 | 109 | /** Deprecated, use Unicode instead. */ |
michael@0 | 110 | struct ISO { |
michael@0 | 111 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 112 | ((ASCII7, SkTEndian_SwapBE16(0))) |
michael@0 | 113 | ((ISO10646, SkTEndian_SwapBE16(1))) |
michael@0 | 114 | ((ISO88591, SkTEndian_SwapBE16(2))) |
michael@0 | 115 | SK_SEQ_END, |
michael@0 | 116 | (value)SK_SEQ_END) |
michael@0 | 117 | } iso; |
michael@0 | 118 | |
michael@0 | 119 | /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or |
michael@0 | 120 | * UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually |
michael@0 | 121 | * UTF-16BE. |
michael@0 | 122 | */ |
michael@0 | 123 | struct Windows { |
michael@0 | 124 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 125 | ((Symbol, SkTEndian_SwapBE16(0))) // UCS2-BE, but don't use this font to display it's own name. |
michael@0 | 126 | ((UnicodeBMPUCS2, SkTEndian_SwapBE16(1))) // UCS2-BE, Windows default |
michael@0 | 127 | ((ShiftJIS, SkTEndian_SwapBE16(2))) |
michael@0 | 128 | ((PRC, SkTEndian_SwapBE16(3))) |
michael@0 | 129 | ((Big5, SkTEndian_SwapBE16(4))) |
michael@0 | 130 | ((Wansung, SkTEndian_SwapBE16(5))) |
michael@0 | 131 | ((Johab, SkTEndian_SwapBE16(6))) |
michael@0 | 132 | ((UnicodeUCS4, SkTEndian_SwapBE16(10))) // UTF-16BE. It means UCS4 in charmaps. |
michael@0 | 133 | SK_SEQ_END, |
michael@0 | 134 | (value)SK_SEQ_END) |
michael@0 | 135 | } windows; |
michael@0 | 136 | } encodingID; |
michael@0 | 137 | |
michael@0 | 138 | /** LanguageIDs <= 0x7FFF are predefined. |
michael@0 | 139 | * LanguageIDs > 0x7FFF are indexes into the langTagRecord array |
michael@0 | 140 | * (in format 1 name tables, see SkOTTableName::format). |
michael@0 | 141 | */ |
michael@0 | 142 | union LanguageID { |
michael@0 | 143 | /** A value greater than 0x7FFF. |
michael@0 | 144 | * languageTagID - 0x8000 is an index into the langTagRecord array. |
michael@0 | 145 | */ |
michael@0 | 146 | SK_OT_USHORT languageTagID; |
michael@0 | 147 | |
michael@0 | 148 | /** These are known as Language Designators. |
michael@0 | 149 | * Apple now uses BCP 47 (post OSX10.4), so there will be no new entries. |
michael@0 | 150 | */ |
michael@0 | 151 | struct Macintosh { |
michael@0 | 152 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 153 | ((English, SkTEndian_SwapBE16(0))) |
michael@0 | 154 | ((French, SkTEndian_SwapBE16(1))) |
michael@0 | 155 | ((German, SkTEndian_SwapBE16(2))) |
michael@0 | 156 | ((Italian, SkTEndian_SwapBE16(3))) |
michael@0 | 157 | ((Dutch, SkTEndian_SwapBE16(4))) |
michael@0 | 158 | ((Swedish, SkTEndian_SwapBE16(5))) |
michael@0 | 159 | ((Spanish, SkTEndian_SwapBE16(6))) |
michael@0 | 160 | ((Danish, SkTEndian_SwapBE16(7))) |
michael@0 | 161 | ((Portuguese, SkTEndian_SwapBE16(8))) |
michael@0 | 162 | ((Norwegian, SkTEndian_SwapBE16(9))) |
michael@0 | 163 | ((Hebrew, SkTEndian_SwapBE16(10))) |
michael@0 | 164 | ((Japanese, SkTEndian_SwapBE16(11))) |
michael@0 | 165 | ((Arabic, SkTEndian_SwapBE16(12))) |
michael@0 | 166 | ((Finnish, SkTEndian_SwapBE16(13))) |
michael@0 | 167 | ((Greek, SkTEndian_SwapBE16(14))) |
michael@0 | 168 | ((Icelandic, SkTEndian_SwapBE16(15))) |
michael@0 | 169 | ((Maltese, SkTEndian_SwapBE16(16))) |
michael@0 | 170 | ((Turkish, SkTEndian_SwapBE16(17))) |
michael@0 | 171 | ((Croatian, SkTEndian_SwapBE16(18))) |
michael@0 | 172 | ((ChineseTraditional, SkTEndian_SwapBE16(19))) |
michael@0 | 173 | ((Urdu, SkTEndian_SwapBE16(20))) |
michael@0 | 174 | ((Hindi, SkTEndian_SwapBE16(21))) |
michael@0 | 175 | ((Thai, SkTEndian_SwapBE16(22))) |
michael@0 | 176 | ((Korean, SkTEndian_SwapBE16(23))) |
michael@0 | 177 | ((Lithuanian, SkTEndian_SwapBE16(24))) |
michael@0 | 178 | ((Polish, SkTEndian_SwapBE16(25))) |
michael@0 | 179 | ((Hungarian, SkTEndian_SwapBE16(26))) |
michael@0 | 180 | ((Estonian, SkTEndian_SwapBE16(27))) |
michael@0 | 181 | ((Latvian, SkTEndian_SwapBE16(28))) |
michael@0 | 182 | ((Sami, SkTEndian_SwapBE16(29))) |
michael@0 | 183 | ((Faroese, SkTEndian_SwapBE16(30))) |
michael@0 | 184 | ((Farsi_Persian, SkTEndian_SwapBE16(31))) |
michael@0 | 185 | ((Russian, SkTEndian_SwapBE16(32))) |
michael@0 | 186 | ((ChineseSimplified, SkTEndian_SwapBE16(33))) |
michael@0 | 187 | ((Flemish, SkTEndian_SwapBE16(34))) |
michael@0 | 188 | ((IrishGaelic, SkTEndian_SwapBE16(35))) |
michael@0 | 189 | ((Albanian, SkTEndian_SwapBE16(36))) |
michael@0 | 190 | ((Romanian, SkTEndian_SwapBE16(37))) |
michael@0 | 191 | ((Czech, SkTEndian_SwapBE16(38))) |
michael@0 | 192 | ((Slovak, SkTEndian_SwapBE16(39))) |
michael@0 | 193 | ((Slovenian, SkTEndian_SwapBE16(40))) |
michael@0 | 194 | ((Yiddish, SkTEndian_SwapBE16(41))) |
michael@0 | 195 | ((Serbian, SkTEndian_SwapBE16(42))) |
michael@0 | 196 | ((Macedonian, SkTEndian_SwapBE16(43))) |
michael@0 | 197 | ((Bulgarian, SkTEndian_SwapBE16(44))) |
michael@0 | 198 | ((Ukrainian, SkTEndian_SwapBE16(45))) |
michael@0 | 199 | ((Byelorussian, SkTEndian_SwapBE16(46))) |
michael@0 | 200 | ((Uzbek, SkTEndian_SwapBE16(47))) |
michael@0 | 201 | ((Kazakh, SkTEndian_SwapBE16(48))) |
michael@0 | 202 | ((AzerbaijaniCyrillic, SkTEndian_SwapBE16(49))) |
michael@0 | 203 | ((AzerbaijaniArabic, SkTEndian_SwapBE16(50))) |
michael@0 | 204 | ((Armenian, SkTEndian_SwapBE16(51))) |
michael@0 | 205 | ((Georgian, SkTEndian_SwapBE16(52))) |
michael@0 | 206 | ((Moldavian, SkTEndian_SwapBE16(53))) |
michael@0 | 207 | ((Kirghiz, SkTEndian_SwapBE16(54))) |
michael@0 | 208 | ((Tajiki, SkTEndian_SwapBE16(55))) |
michael@0 | 209 | ((Turkmen, SkTEndian_SwapBE16(56))) |
michael@0 | 210 | ((MongolianTraditional, SkTEndian_SwapBE16(57))) |
michael@0 | 211 | ((MongolianCyrillic, SkTEndian_SwapBE16(58))) |
michael@0 | 212 | ((Pashto, SkTEndian_SwapBE16(59))) |
michael@0 | 213 | ((Kurdish, SkTEndian_SwapBE16(60))) |
michael@0 | 214 | ((Kashmiri, SkTEndian_SwapBE16(61))) |
michael@0 | 215 | ((Sindhi, SkTEndian_SwapBE16(62))) |
michael@0 | 216 | ((Tibetan, SkTEndian_SwapBE16(63))) |
michael@0 | 217 | ((Nepali, SkTEndian_SwapBE16(64))) |
michael@0 | 218 | ((Sanskrit, SkTEndian_SwapBE16(65))) |
michael@0 | 219 | ((Marathi, SkTEndian_SwapBE16(66))) |
michael@0 | 220 | ((Bengali, SkTEndian_SwapBE16(67))) |
michael@0 | 221 | ((Assamese, SkTEndian_SwapBE16(68))) |
michael@0 | 222 | ((Gujarati, SkTEndian_SwapBE16(69))) |
michael@0 | 223 | ((Punjabi, SkTEndian_SwapBE16(70))) |
michael@0 | 224 | ((Oriya, SkTEndian_SwapBE16(71))) |
michael@0 | 225 | ((Malayalam, SkTEndian_SwapBE16(72))) |
michael@0 | 226 | ((Kannada, SkTEndian_SwapBE16(73))) |
michael@0 | 227 | ((Tamil, SkTEndian_SwapBE16(74))) |
michael@0 | 228 | ((Telugu, SkTEndian_SwapBE16(75))) |
michael@0 | 229 | ((Sinhalese, SkTEndian_SwapBE16(76))) |
michael@0 | 230 | ((Burmese, SkTEndian_SwapBE16(77))) |
michael@0 | 231 | ((Khmer, SkTEndian_SwapBE16(78))) |
michael@0 | 232 | ((Lao, SkTEndian_SwapBE16(79))) |
michael@0 | 233 | ((Vietnamese, SkTEndian_SwapBE16(80))) |
michael@0 | 234 | ((Indonesian, SkTEndian_SwapBE16(81))) |
michael@0 | 235 | ((Tagalong, SkTEndian_SwapBE16(82))) |
michael@0 | 236 | ((MalayRoman, SkTEndian_SwapBE16(83))) |
michael@0 | 237 | ((MalayArabic, SkTEndian_SwapBE16(84))) |
michael@0 | 238 | ((Amharic, SkTEndian_SwapBE16(85))) |
michael@0 | 239 | ((Tigrinya, SkTEndian_SwapBE16(86))) |
michael@0 | 240 | ((Galla, SkTEndian_SwapBE16(87))) |
michael@0 | 241 | ((Somali, SkTEndian_SwapBE16(88))) |
michael@0 | 242 | ((Swahili, SkTEndian_SwapBE16(89))) |
michael@0 | 243 | ((Kinyarwanda_Ruanda, SkTEndian_SwapBE16(90))) |
michael@0 | 244 | ((Rundi, SkTEndian_SwapBE16(91))) |
michael@0 | 245 | ((Nyanja_Chewa, SkTEndian_SwapBE16(92))) |
michael@0 | 246 | ((Malagasy, SkTEndian_SwapBE16(93))) |
michael@0 | 247 | ((Esperanto, SkTEndian_SwapBE16(94))) |
michael@0 | 248 | ((Welsh, SkTEndian_SwapBE16(128))) |
michael@0 | 249 | ((Basque, SkTEndian_SwapBE16(129))) |
michael@0 | 250 | ((Catalan, SkTEndian_SwapBE16(130))) |
michael@0 | 251 | ((Latin, SkTEndian_SwapBE16(131))) |
michael@0 | 252 | ((Quenchua, SkTEndian_SwapBE16(132))) |
michael@0 | 253 | ((Guarani, SkTEndian_SwapBE16(133))) |
michael@0 | 254 | ((Aymara, SkTEndian_SwapBE16(134))) |
michael@0 | 255 | ((Tatar, SkTEndian_SwapBE16(135))) |
michael@0 | 256 | ((Uighur, SkTEndian_SwapBE16(136))) |
michael@0 | 257 | ((Dzongkha, SkTEndian_SwapBE16(137))) |
michael@0 | 258 | ((JavaneseRoman, SkTEndian_SwapBE16(138))) |
michael@0 | 259 | ((SundaneseRoman, SkTEndian_SwapBE16(139))) |
michael@0 | 260 | ((Galician, SkTEndian_SwapBE16(140))) |
michael@0 | 261 | ((Afrikaans, SkTEndian_SwapBE16(141))) |
michael@0 | 262 | ((Breton, SkTEndian_SwapBE16(142))) |
michael@0 | 263 | ((Inuktitut, SkTEndian_SwapBE16(143))) |
michael@0 | 264 | ((ScottishGaelic, SkTEndian_SwapBE16(144))) |
michael@0 | 265 | ((ManxGaelic, SkTEndian_SwapBE16(145))) |
michael@0 | 266 | ((IrishGaelicWithLenition, SkTEndian_SwapBE16(146))) |
michael@0 | 267 | ((Tongan, SkTEndian_SwapBE16(147))) |
michael@0 | 268 | ((GreekPolytonic, SkTEndian_SwapBE16(148))) |
michael@0 | 269 | ((Greenlandic, SkTEndian_SwapBE16(149))) |
michael@0 | 270 | ((AzerbaijaniRoman, SkTEndian_SwapBE16(150))) |
michael@0 | 271 | SK_SEQ_END, |
michael@0 | 272 | (value)SK_SEQ_END) |
michael@0 | 273 | } macintosh; |
michael@0 | 274 | |
michael@0 | 275 | /** These are known as LCIDs. |
michael@0 | 276 | * On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID. |
michael@0 | 277 | */ |
michael@0 | 278 | struct Windows { |
michael@0 | 279 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 280 | ((Afrikaans_SouthAfrica, SkTEndian_SwapBE16(0x0436))) |
michael@0 | 281 | ((Albanian_Albania, SkTEndian_SwapBE16(0x041C))) |
michael@0 | 282 | ((Alsatian_France, SkTEndian_SwapBE16(0x0484))) |
michael@0 | 283 | ((Amharic_Ethiopia, SkTEndian_SwapBE16(0x045E))) |
michael@0 | 284 | ((Arabic_Algeria, SkTEndian_SwapBE16(0x1401))) |
michael@0 | 285 | ((Arabic_Bahrain, SkTEndian_SwapBE16(0x3C01))) |
michael@0 | 286 | ((Arabic_Egypt, SkTEndian_SwapBE16(0x0C01))) |
michael@0 | 287 | ((Arabic_Iraq, SkTEndian_SwapBE16(0x0801))) |
michael@0 | 288 | ((Arabic_Jordan, SkTEndian_SwapBE16(0x2C01))) |
michael@0 | 289 | ((Arabic_Kuwait, SkTEndian_SwapBE16(0x3401))) |
michael@0 | 290 | ((Arabic_Lebanon, SkTEndian_SwapBE16(0x3001))) |
michael@0 | 291 | ((Arabic_Libya, SkTEndian_SwapBE16(0x1001))) |
michael@0 | 292 | ((Arabic_Morocco, SkTEndian_SwapBE16(0x1801))) |
michael@0 | 293 | ((Arabic_Oman, SkTEndian_SwapBE16(0x2001))) |
michael@0 | 294 | ((Arabic_Qatar, SkTEndian_SwapBE16(0x4001))) |
michael@0 | 295 | ((Arabic_SaudiArabia, SkTEndian_SwapBE16(0x0401))) |
michael@0 | 296 | ((Arabic_Syria, SkTEndian_SwapBE16(0x2801))) |
michael@0 | 297 | ((Arabic_Tunisia, SkTEndian_SwapBE16(0x1C01))) |
michael@0 | 298 | ((Arabic_UAE, SkTEndian_SwapBE16(0x3801))) |
michael@0 | 299 | ((Arabic_Yemen, SkTEndian_SwapBE16(0x2401))) |
michael@0 | 300 | ((Armenian_Armenia, SkTEndian_SwapBE16(0x042B))) |
michael@0 | 301 | ((Assamese_India, SkTEndian_SwapBE16(0x044D))) |
michael@0 | 302 | ((AzeriCyrillic_Azerbaijan, SkTEndian_SwapBE16(0x082C))) |
michael@0 | 303 | ((AzeriLatin_Azerbaijan, SkTEndian_SwapBE16(0x042C))) |
michael@0 | 304 | ((Bashkir_Russia, SkTEndian_SwapBE16(0x046D))) |
michael@0 | 305 | ((Basque_Basque, SkTEndian_SwapBE16(0x042D))) |
michael@0 | 306 | ((Belarusian_Belarus, SkTEndian_SwapBE16(0x0423))) |
michael@0 | 307 | ((Bengali_Bangladesh, SkTEndian_SwapBE16(0x0845))) |
michael@0 | 308 | ((Bengali_India, SkTEndian_SwapBE16(0x0445))) |
michael@0 | 309 | ((BosnianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x201A))) |
michael@0 | 310 | ((BosnianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x141A))) |
michael@0 | 311 | ((Breton_France, SkTEndian_SwapBE16(0x047E))) |
michael@0 | 312 | ((Bulgarian_Bulgaria, SkTEndian_SwapBE16(0x0402))) |
michael@0 | 313 | ((Catalan_Catalan, SkTEndian_SwapBE16(0x0403))) |
michael@0 | 314 | ((Chinese_HongKongSAR, SkTEndian_SwapBE16(0x0C04))) |
michael@0 | 315 | ((Chinese_MacaoSAR, SkTEndian_SwapBE16(0x1404))) |
michael@0 | 316 | ((Chinese_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0804))) |
michael@0 | 317 | ((Chinese_Singapore, SkTEndian_SwapBE16(0x1004))) |
michael@0 | 318 | ((Chinese_Taiwan, SkTEndian_SwapBE16(0x0404))) |
michael@0 | 319 | ((Corsican_France, SkTEndian_SwapBE16(0x0483))) |
michael@0 | 320 | ((Croatian_Croatia, SkTEndian_SwapBE16(0x041A))) |
michael@0 | 321 | ((CroatianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x101A))) |
michael@0 | 322 | ((Czech_CzechRepublic, SkTEndian_SwapBE16(0x0405))) |
michael@0 | 323 | ((Danish_Denmark, SkTEndian_SwapBE16(0x0406))) |
michael@0 | 324 | ((Dari_Afghanistan, SkTEndian_SwapBE16(0x048C))) |
michael@0 | 325 | ((Divehi_Maldives, SkTEndian_SwapBE16(0x0465))) |
michael@0 | 326 | ((Dutch_Belgium, SkTEndian_SwapBE16(0x0813))) |
michael@0 | 327 | ((Dutch_Netherlands, SkTEndian_SwapBE16(0x0413))) |
michael@0 | 328 | ((English_Australia, SkTEndian_SwapBE16(0x0C09))) |
michael@0 | 329 | ((English_Belize, SkTEndian_SwapBE16(0x2809))) |
michael@0 | 330 | ((English_Canada, SkTEndian_SwapBE16(0x1009))) |
michael@0 | 331 | ((English_Caribbean, SkTEndian_SwapBE16(0x2409))) |
michael@0 | 332 | ((English_India, SkTEndian_SwapBE16(0x4009))) |
michael@0 | 333 | ((English_Ireland, SkTEndian_SwapBE16(0x1809))) |
michael@0 | 334 | ((English_Jamaica, SkTEndian_SwapBE16(0x2009))) |
michael@0 | 335 | ((English_Malaysia, SkTEndian_SwapBE16(0x4409))) |
michael@0 | 336 | ((English_NewZealand, SkTEndian_SwapBE16(0x1409))) |
michael@0 | 337 | ((English_RepublicOfThePhilippines, SkTEndian_SwapBE16(0x3409))) |
michael@0 | 338 | ((English_Singapore, SkTEndian_SwapBE16(0x4809))) |
michael@0 | 339 | ((English_SouthAfrica, SkTEndian_SwapBE16(0x1C09))) |
michael@0 | 340 | ((English_TrinidadAndTobago, SkTEndian_SwapBE16(0x2C09))) |
michael@0 | 341 | ((English_UnitedKingdom, SkTEndian_SwapBE16(0x0809))) |
michael@0 | 342 | ((English_UnitedStates, SkTEndian_SwapBE16(0x0409))) |
michael@0 | 343 | ((English_Zimbabwe, SkTEndian_SwapBE16(0x3009))) |
michael@0 | 344 | ((Estonian_Estonia, SkTEndian_SwapBE16(0x0425))) |
michael@0 | 345 | ((Faroese_FaroeIslands, SkTEndian_SwapBE16(0x0438))) |
michael@0 | 346 | ((Filipino_Philippines, SkTEndian_SwapBE16(0x0464))) |
michael@0 | 347 | ((Finnish_Finland, SkTEndian_SwapBE16(0x040B))) |
michael@0 | 348 | ((French_Belgium, SkTEndian_SwapBE16(0x080C))) |
michael@0 | 349 | ((French_Canada, SkTEndian_SwapBE16(0x0C0C))) |
michael@0 | 350 | ((French_France, SkTEndian_SwapBE16(0x040C))) |
michael@0 | 351 | ((French_Luxembourg, SkTEndian_SwapBE16(0x140c))) |
michael@0 | 352 | ((French_PrincipalityOfMonoco, SkTEndian_SwapBE16(0x180C))) |
michael@0 | 353 | ((French_Switzerland, SkTEndian_SwapBE16(0x100C))) |
michael@0 | 354 | ((Frisian_Netherlands, SkTEndian_SwapBE16(0x0462))) |
michael@0 | 355 | ((Galician_Galician, SkTEndian_SwapBE16(0x0456))) |
michael@0 | 356 | ((Georgian_Georgia, SkTEndian_SwapBE16(0x0437))) |
michael@0 | 357 | ((German_Austria, SkTEndian_SwapBE16(0x0C07))) |
michael@0 | 358 | ((German_Germany, SkTEndian_SwapBE16(0x0407))) |
michael@0 | 359 | ((German_Liechtenstein, SkTEndian_SwapBE16(0x1407))) |
michael@0 | 360 | ((German_Luxembourg, SkTEndian_SwapBE16(0x1007))) |
michael@0 | 361 | ((German_Switzerland, SkTEndian_SwapBE16(0x0807))) |
michael@0 | 362 | ((Greek_Greece, SkTEndian_SwapBE16(0x0408))) |
michael@0 | 363 | ((Greenlandic_Greenland, SkTEndian_SwapBE16(0x046F))) |
michael@0 | 364 | ((Gujarati_India, SkTEndian_SwapBE16(0x0447))) |
michael@0 | 365 | ((HausaLatin_Nigeria, SkTEndian_SwapBE16(0x0468))) |
michael@0 | 366 | ((Hebrew_Israel, SkTEndian_SwapBE16(0x040D))) |
michael@0 | 367 | ((Hindi_India, SkTEndian_SwapBE16(0x0439))) |
michael@0 | 368 | ((Hungarian_Hungary, SkTEndian_SwapBE16(0x040E))) |
michael@0 | 369 | ((Icelandic_Iceland, SkTEndian_SwapBE16(0x040F))) |
michael@0 | 370 | ((Igbo_Nigeria, SkTEndian_SwapBE16(0x0470))) |
michael@0 | 371 | ((Indonesian_Indonesia, SkTEndian_SwapBE16(0x0421))) |
michael@0 | 372 | ((Inuktitut_Canada, SkTEndian_SwapBE16(0x045D))) |
michael@0 | 373 | ((InuktitutLatin_Canada, SkTEndian_SwapBE16(0x085D))) |
michael@0 | 374 | ((Irish_Ireland, SkTEndian_SwapBE16(0x083C))) |
michael@0 | 375 | ((isiXhosa_SouthAfrica, SkTEndian_SwapBE16(0x0434))) |
michael@0 | 376 | ((isiZulu_SouthAfrica, SkTEndian_SwapBE16(0x0435))) |
michael@0 | 377 | ((Italian_Italy, SkTEndian_SwapBE16(0x0410))) |
michael@0 | 378 | ((Italian_Switzerland, SkTEndian_SwapBE16(0x0810))) |
michael@0 | 379 | ((Japanese_Japan, SkTEndian_SwapBE16(0x0411))) |
michael@0 | 380 | ((Kannada_India, SkTEndian_SwapBE16(0x044B))) |
michael@0 | 381 | ((Kazakh_Kazakhstan, SkTEndian_SwapBE16(0x043F))) |
michael@0 | 382 | ((Khmer_Cambodia, SkTEndian_SwapBE16(0x0453))) |
michael@0 | 383 | ((Kiche_Guatemala, SkTEndian_SwapBE16(0x0486))) |
michael@0 | 384 | ((Kinyarwanda_Rwanda, SkTEndian_SwapBE16(0x0487))) |
michael@0 | 385 | ((Kiswahili_Kenya, SkTEndian_SwapBE16(0x0441))) |
michael@0 | 386 | ((Konkani_India, SkTEndian_SwapBE16(0x0457))) |
michael@0 | 387 | ((Korean_Korea, SkTEndian_SwapBE16(0x0412))) |
michael@0 | 388 | ((Kyrgyz_Kyrgyzstan, SkTEndian_SwapBE16(0x0440))) |
michael@0 | 389 | ((Lao_LaoPDR, SkTEndian_SwapBE16(0x0454))) |
michael@0 | 390 | ((Latvian_Latvia, SkTEndian_SwapBE16(0x0426))) |
michael@0 | 391 | ((Lithuanian_Lithuania, SkTEndian_SwapBE16(0x0427))) |
michael@0 | 392 | ((LowerSorbian_Germany, SkTEndian_SwapBE16(0x082E))) |
michael@0 | 393 | ((Luxembourgish_Luxembourg, SkTEndian_SwapBE16(0x046E))) |
michael@0 | 394 | ((MacedonianFYROM_FormerYugoslavRepublicOfMacedonia, SkTEndian_SwapBE16(0x042F))) |
michael@0 | 395 | ((Malay_BruneiDarussalam, SkTEndian_SwapBE16(0x083E))) |
michael@0 | 396 | ((Malay_Malaysia, SkTEndian_SwapBE16(0x043E))) |
michael@0 | 397 | ((Malayalam_India, SkTEndian_SwapBE16(0x044C))) |
michael@0 | 398 | ((Maltese_Malta, SkTEndian_SwapBE16(0x043A))) |
michael@0 | 399 | ((Maori_NewZealand, SkTEndian_SwapBE16(0x0481))) |
michael@0 | 400 | ((Mapudungun_Chile, SkTEndian_SwapBE16(0x047A))) |
michael@0 | 401 | ((Marathi_India, SkTEndian_SwapBE16(0x044E))) |
michael@0 | 402 | ((Mohawk_Mohawk, SkTEndian_SwapBE16(0x047C))) |
michael@0 | 403 | ((MongolianCyrillic_Mongolia, SkTEndian_SwapBE16(0x0450))) |
michael@0 | 404 | ((MongolianTraditional_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0850))) |
michael@0 | 405 | ((Nepali_Nepal, SkTEndian_SwapBE16(0x0461))) |
michael@0 | 406 | ((NorwegianBokmal_Norway, SkTEndian_SwapBE16(0x0414))) |
michael@0 | 407 | ((NorwegianNynorsk_Norway, SkTEndian_SwapBE16(0x0814))) |
michael@0 | 408 | ((Occitan_France, SkTEndian_SwapBE16(0x0482))) |
michael@0 | 409 | ((Odia_India, SkTEndian_SwapBE16(0x0448))) |
michael@0 | 410 | ((Pashto_Afghanistan, SkTEndian_SwapBE16(0x0463))) |
michael@0 | 411 | ((Polish_Poland, SkTEndian_SwapBE16(0x0415))) |
michael@0 | 412 | ((Portuguese_Brazil, SkTEndian_SwapBE16(0x0416))) |
michael@0 | 413 | ((Portuguese_Portugal, SkTEndian_SwapBE16(0x0816))) |
michael@0 | 414 | ((Punjabi_India, SkTEndian_SwapBE16(0x0446))) |
michael@0 | 415 | ((Quechua_Bolivia, SkTEndian_SwapBE16(0x046B))) |
michael@0 | 416 | ((Quechua_Ecuador, SkTEndian_SwapBE16(0x086B))) |
michael@0 | 417 | ((Quechua_Peru, SkTEndian_SwapBE16(0x0C6B))) |
michael@0 | 418 | ((Romanian_Romania, SkTEndian_SwapBE16(0x0418))) |
michael@0 | 419 | ((Romansh_Switzerland, SkTEndian_SwapBE16(0x0417))) |
michael@0 | 420 | ((Russian_Russia, SkTEndian_SwapBE16(0x0419))) |
michael@0 | 421 | ((SamiInari_Finland, SkTEndian_SwapBE16(0x243B))) |
michael@0 | 422 | ((SamiLule_Norway, SkTEndian_SwapBE16(0x103B))) |
michael@0 | 423 | ((SamiLule_Sweden, SkTEndian_SwapBE16(0x143B))) |
michael@0 | 424 | ((SamiNorthern_Finland, SkTEndian_SwapBE16(0x0C3B))) |
michael@0 | 425 | ((SamiNorthern_Norway, SkTEndian_SwapBE16(0x043B))) |
michael@0 | 426 | ((SamiNorthern_Sweden, SkTEndian_SwapBE16(0x083B))) |
michael@0 | 427 | ((SamiSkolt_Finland, SkTEndian_SwapBE16(0x203B))) |
michael@0 | 428 | ((SamiSouthern_Norway, SkTEndian_SwapBE16(0x183B))) |
michael@0 | 429 | ((SamiSouthern_Sweden, SkTEndian_SwapBE16(0x1C3B))) |
michael@0 | 430 | ((Sanskrit_India, SkTEndian_SwapBE16(0x044F))) |
michael@0 | 431 | ((SerbianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x1C1A))) |
michael@0 | 432 | ((SerbianCyrillic_Serbia, SkTEndian_SwapBE16(0x0C1A))) |
michael@0 | 433 | ((SerbianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x181A))) |
michael@0 | 434 | ((SerbianLatin_Serbia, SkTEndian_SwapBE16(0x081A))) |
michael@0 | 435 | ((SesothoSaLeboa_SouthAfrica, SkTEndian_SwapBE16(0x046C))) |
michael@0 | 436 | ((Setswana_SouthAfrica, SkTEndian_SwapBE16(0x0432))) |
michael@0 | 437 | ((Sinhala_SriLanka, SkTEndian_SwapBE16(0x045B))) |
michael@0 | 438 | ((Slovak_Slovakia, SkTEndian_SwapBE16(0x041B))) |
michael@0 | 439 | ((Slovenian_Slovenia, SkTEndian_SwapBE16(0x0424))) |
michael@0 | 440 | ((Spanish_Argentina, SkTEndian_SwapBE16(0x2C0A))) |
michael@0 | 441 | ((Spanish_Bolivia, SkTEndian_SwapBE16(0x400A))) |
michael@0 | 442 | ((Spanish_Chile, SkTEndian_SwapBE16(0x340A))) |
michael@0 | 443 | ((Spanish_Colombia, SkTEndian_SwapBE16(0x240A))) |
michael@0 | 444 | ((Spanish_CostaRica, SkTEndian_SwapBE16(0x140A))) |
michael@0 | 445 | ((Spanish_DominicanRepublic, SkTEndian_SwapBE16(0x1C0A))) |
michael@0 | 446 | ((Spanish_Ecuador, SkTEndian_SwapBE16(0x300A))) |
michael@0 | 447 | ((Spanish_ElSalvador, SkTEndian_SwapBE16(0x440A))) |
michael@0 | 448 | ((Spanish_Guatemala, SkTEndian_SwapBE16(0x100A))) |
michael@0 | 449 | ((Spanish_Honduras, SkTEndian_SwapBE16(0x480A))) |
michael@0 | 450 | ((Spanish_Mexico, SkTEndian_SwapBE16(0x080A))) |
michael@0 | 451 | ((Spanish_Nicaragua, SkTEndian_SwapBE16(0x4C0A))) |
michael@0 | 452 | ((Spanish_Panama, SkTEndian_SwapBE16(0x180A))) |
michael@0 | 453 | ((Spanish_Paraguay, SkTEndian_SwapBE16(0x3C0A))) |
michael@0 | 454 | ((Spanish_Peru, SkTEndian_SwapBE16(0x280A))) |
michael@0 | 455 | ((Spanish_PuertoRico, SkTEndian_SwapBE16(0x500A))) |
michael@0 | 456 | ((SpanishModernSort_Spain, SkTEndian_SwapBE16(0x0C0A))) |
michael@0 | 457 | ((SpanishTraditionalSort_Spain, SkTEndian_SwapBE16(0x040A))) |
michael@0 | 458 | ((Spanish_UnitedStates, SkTEndian_SwapBE16(0x540A))) |
michael@0 | 459 | ((Spanish_Uruguay, SkTEndian_SwapBE16(0x380A))) |
michael@0 | 460 | ((Spanish_Venezuela, SkTEndian_SwapBE16(0x200A))) |
michael@0 | 461 | ((Sweden_Finland, SkTEndian_SwapBE16(0x081D))) |
michael@0 | 462 | ((Swedish_Sweden, SkTEndian_SwapBE16(0x041D))) |
michael@0 | 463 | ((Syriac_Syria, SkTEndian_SwapBE16(0x045A))) |
michael@0 | 464 | ((TajikCyrillic_Tajikistan, SkTEndian_SwapBE16(0x0428))) |
michael@0 | 465 | ((TamazightLatin_Algeria, SkTEndian_SwapBE16(0x085F))) |
michael@0 | 466 | ((Tamil_India, SkTEndian_SwapBE16(0x0449))) |
michael@0 | 467 | ((Tatar_Russia, SkTEndian_SwapBE16(0x0444))) |
michael@0 | 468 | ((Telugu_India, SkTEndian_SwapBE16(0x044A))) |
michael@0 | 469 | ((Thai_Thailand, SkTEndian_SwapBE16(0x041E))) |
michael@0 | 470 | ((Tibetan_PRC, SkTEndian_SwapBE16(0x0451))) |
michael@0 | 471 | ((Turkish_Turkey, SkTEndian_SwapBE16(0x041F))) |
michael@0 | 472 | ((Turkmen_Turkmenistan, SkTEndian_SwapBE16(0x0442))) |
michael@0 | 473 | ((Uighur_PRC, SkTEndian_SwapBE16(0x0480))) |
michael@0 | 474 | ((Ukrainian_Ukraine, SkTEndian_SwapBE16(0x0422))) |
michael@0 | 475 | ((UpperSorbian_Germany, SkTEndian_SwapBE16(0x042E))) |
michael@0 | 476 | ((Urdu_IslamicRepublicOfPakistan, SkTEndian_SwapBE16(0x0420))) |
michael@0 | 477 | ((UzbekCyrillic_Uzbekistan, SkTEndian_SwapBE16(0x0843))) |
michael@0 | 478 | ((UzbekLatin_Uzbekistan, SkTEndian_SwapBE16(0x0443))) |
michael@0 | 479 | ((Vietnamese_Vietnam, SkTEndian_SwapBE16(0x042A))) |
michael@0 | 480 | ((Welsh_UnitedKingdom, SkTEndian_SwapBE16(0x0452))) |
michael@0 | 481 | ((Wolof_Senegal, SkTEndian_SwapBE16(0x0488))) |
michael@0 | 482 | ((Yakut_Russia, SkTEndian_SwapBE16(0x0485))) |
michael@0 | 483 | ((Yi_PRC, SkTEndian_SwapBE16(0x0478))) |
michael@0 | 484 | ((Yoruba_Nigeria, SkTEndian_SwapBE16(0x046A))) |
michael@0 | 485 | SK_SEQ_END, |
michael@0 | 486 | (value)SK_SEQ_END) |
michael@0 | 487 | } windows; |
michael@0 | 488 | } languageID; |
michael@0 | 489 | |
michael@0 | 490 | /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */ |
michael@0 | 491 | union NameID { |
michael@0 | 492 | /** A font specific name id which should be greater than 0xFF. */ |
michael@0 | 493 | SK_OT_USHORT fontSpecific; |
michael@0 | 494 | struct Predefined { |
michael@0 | 495 | SK_TYPED_ENUM(Value, SK_OT_USHORT, |
michael@0 | 496 | ((CopyrightNotice, SkTEndian_SwapBE16(0))) |
michael@0 | 497 | ((FontFamilyName, SkTEndian_SwapBE16(1))) |
michael@0 | 498 | ((FontSubfamilyName, SkTEndian_SwapBE16(2))) |
michael@0 | 499 | ((UniqueFontIdentifier, SkTEndian_SwapBE16(3))) |
michael@0 | 500 | ((FullFontName, SkTEndian_SwapBE16(4))) |
michael@0 | 501 | ((VersionString, SkTEndian_SwapBE16(5))) //Version <number>.<number> |
michael@0 | 502 | ((PostscriptName, SkTEndian_SwapBE16(6))) //See spec for constraints. |
michael@0 | 503 | ((Trademark, SkTEndian_SwapBE16(7))) |
michael@0 | 504 | ((ManufacturerName, SkTEndian_SwapBE16(8))) |
michael@0 | 505 | ((Designer, SkTEndian_SwapBE16(9))) |
michael@0 | 506 | ((Description, SkTEndian_SwapBE16(10))) |
michael@0 | 507 | ((URLVendor, SkTEndian_SwapBE16(11))) |
michael@0 | 508 | ((URLDesigner, SkTEndian_SwapBE16(12))) |
michael@0 | 509 | ((LicenseDescription, SkTEndian_SwapBE16(13))) |
michael@0 | 510 | ((LicenseInfoURL, SkTEndian_SwapBE16(14))) |
michael@0 | 511 | ((PreferredFamily, SkTEndian_SwapBE16(16))) |
michael@0 | 512 | ((PreferredSubfamily, SkTEndian_SwapBE16(17))) |
michael@0 | 513 | ((CompatibleFullName, SkTEndian_SwapBE16(18))) |
michael@0 | 514 | ((SampleText, SkTEndian_SwapBE16(19))) |
michael@0 | 515 | ((PostscriptCIDFindfontName, SkTEndian_SwapBE16(20))) |
michael@0 | 516 | ((WWSFamilyName, SkTEndian_SwapBE16(21))) |
michael@0 | 517 | ((WWSSubfamilyName, SkTEndian_SwapBE16(22))) |
michael@0 | 518 | SK_SEQ_END, |
michael@0 | 519 | (value)SK_SEQ_END) |
michael@0 | 520 | } predefined; |
michael@0 | 521 | } nameID; |
michael@0 | 522 | |
michael@0 | 523 | /** The length of the string in SK_OT_BYTEs. */ |
michael@0 | 524 | SK_OT_USHORT length; |
michael@0 | 525 | |
michael@0 | 526 | /** Offset in SK_OT_BYTEs from start of string storage area |
michael@0 | 527 | * (see SkOTTableName::stringOffset). |
michael@0 | 528 | */ |
michael@0 | 529 | SK_OT_USHORT offset; |
michael@0 | 530 | }; //nameRecord[count]; |
michael@0 | 531 | |
michael@0 | 532 | struct Format1Ext { |
michael@0 | 533 | /** The number of languageTagRecords which follow. */ |
michael@0 | 534 | SK_OT_USHORT langTagCount; |
michael@0 | 535 | |
michael@0 | 536 | /** The encoding of a langTagRecord string is always UTF-16BE. |
michael@0 | 537 | * The content should follow IETF specification BCP 47. |
michael@0 | 538 | */ |
michael@0 | 539 | struct LangTagRecord { |
michael@0 | 540 | /** The length of the string in SK_OT_BYTEs. */ |
michael@0 | 541 | SK_OT_USHORT length; |
michael@0 | 542 | |
michael@0 | 543 | /** Offset in SK_OT_BYTEs from start of string storage area |
michael@0 | 544 | * (see SkOTTableName::stringOffset). |
michael@0 | 545 | */ |
michael@0 | 546 | SK_OT_USHORT offset; |
michael@0 | 547 | }; //langTagRecord[langTagCount] |
michael@0 | 548 | }; //format1ext (if format == format_1) |
michael@0 | 549 | |
michael@0 | 550 | class Iterator { |
michael@0 | 551 | public: |
michael@0 | 552 | Iterator(const SkOTTableName& name) : fName(name), fIndex(0), fType(-1) { } |
michael@0 | 553 | Iterator(const SkOTTableName& name, SkOTTableName::Record::NameID::Predefined::Value type) |
michael@0 | 554 | : fName(name), fIndex(0), fType(type) |
michael@0 | 555 | { } |
michael@0 | 556 | |
michael@0 | 557 | void reset(SkOTTableName::Record::NameID::Predefined::Value type) { |
michael@0 | 558 | fIndex = 0; |
michael@0 | 559 | fType = type; |
michael@0 | 560 | } |
michael@0 | 561 | |
michael@0 | 562 | struct Record { |
michael@0 | 563 | SK_OT_USHORT type; |
michael@0 | 564 | SkString name; |
michael@0 | 565 | SkString language; |
michael@0 | 566 | }; |
michael@0 | 567 | bool next(Record&); |
michael@0 | 568 | |
michael@0 | 569 | private: |
michael@0 | 570 | const SkOTTableName& fName; |
michael@0 | 571 | size_t fIndex; |
michael@0 | 572 | int fType; |
michael@0 | 573 | }; |
michael@0 | 574 | }; |
michael@0 | 575 | |
michael@0 | 576 | #pragma pack(pop) |
michael@0 | 577 | |
michael@0 | 578 | |
michael@0 | 579 | SK_COMPILE_ASSERT(sizeof(SkOTTableName) == 6, sizeof_SkOTTableName_not_6); |
michael@0 | 580 | SK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext) == 2, sizeof_SkOTTableNameF1_not_2); |
michael@0 | 581 | SK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, sizeof_SkOTTableNameLangTagRecord_not_4); |
michael@0 | 582 | SK_COMPILE_ASSERT(sizeof(SkOTTableName::Record) == 12, sizeof_SkOTTableNameRecord_not_12); |
michael@0 | 583 | |
michael@0 | 584 | #endif |