1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/gfx/skia/trunk/src/sfnt/SkOTTable_name.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,584 @@ 1.4 +/* 1.5 + * Copyright 2012 Google Inc. 1.6 + * 1.7 + * Use of this source code is governed by a BSD-style license that can be 1.8 + * found in the LICENSE file. 1.9 + */ 1.10 + 1.11 +#ifndef SkOTTable_name_DEFINED 1.12 +#define SkOTTable_name_DEFINED 1.13 + 1.14 +#include "SkEndian.h" 1.15 +#include "SkOTTableTypes.h" 1.16 +#include "SkString.h" 1.17 +#include "SkTypedEnum.h" 1.18 + 1.19 +#pragma pack(push, 1) 1.20 + 1.21 +struct SkOTTableName { 1.22 + static const SK_OT_CHAR TAG0 = 'n'; 1.23 + static const SK_OT_CHAR TAG1 = 'a'; 1.24 + static const SK_OT_CHAR TAG2 = 'm'; 1.25 + static const SK_OT_CHAR TAG3 = 'e'; 1.26 + static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value; 1.27 + 1.28 + SK_OT_USHORT format; 1.29 + static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0); 1.30 + /** Format 1 was added in OpenType 1.6 (April 2009). */ 1.31 + static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1); 1.32 + 1.33 + /** The number of name records which follow. */ 1.34 + SK_OT_USHORT count; 1.35 + 1.36 + /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */ 1.37 + SK_OT_USHORT stringOffset; 1.38 + 1.39 + struct Record { 1.40 + /** The platform ID specifies how to interpret the encoding and language ID. */ 1.41 + struct PlatformID { 1.42 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.43 + ((Unicode, SkTEndian_SwapBE16(0))) 1.44 + ((Macintosh, SkTEndian_SwapBE16(1))) 1.45 + ((ISO, SkTEndian_SwapBE16(2))) // Deprecated, use Unicode instead. 1.46 + ((Windows, SkTEndian_SwapBE16(3))) 1.47 + ((Custom, SkTEndian_SwapBE16(4))) 1.48 + SK_SEQ_END, 1.49 + (value)SK_SEQ_END) 1.50 + } platformID; 1.51 + 1.52 + union EncodingID { 1.53 + SK_OT_USHORT custom; 1.54 + 1.55 + /** Always UTF-16BE. */ 1.56 + struct Unicode { 1.57 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.58 + ((Unicode10, SkTEndian_SwapBE16(0))) 1.59 + ((Unicode11, SkTEndian_SwapBE16(1))) 1.60 + ((ISO10646, SkTEndian_SwapBE16(2))) //deprecated, use Unicode11 1.61 + ((Unicode20BMP, SkTEndian_SwapBE16(3))) 1.62 + ((Unicode20, SkTEndian_SwapBE16(4))) 1.63 + ((UnicodeVariationSequences, SkTEndian_SwapBE16(5))) 1.64 + ((UnicodeFull, SkTEndian_SwapBE16(6))) 1.65 + SK_SEQ_END, 1.66 + (value)SK_SEQ_END) 1.67 + } unicode; 1.68 + 1.69 + /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ 1.70 + * for their mappings to unicode. 1.71 + * Name table strings using PlatformID::Macintosh must use Roman. 1.72 + */ 1.73 + struct Macintosh { 1.74 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.75 + ((Roman, SkTEndian_SwapBE16(0))) 1.76 + ((Japanese, SkTEndian_SwapBE16(1))) 1.77 + ((ChineseTraditional, SkTEndian_SwapBE16(2))) 1.78 + ((Korean, SkTEndian_SwapBE16(3))) 1.79 + ((Arabic, SkTEndian_SwapBE16(4))) 1.80 + ((Hebrew, SkTEndian_SwapBE16(5))) 1.81 + ((Greek, SkTEndian_SwapBE16(6))) 1.82 + ((Russian, SkTEndian_SwapBE16(7))) 1.83 + ((RSymbol, SkTEndian_SwapBE16(8))) 1.84 + ((Devanagari, SkTEndian_SwapBE16(9))) 1.85 + ((Gurmukhi, SkTEndian_SwapBE16(10))) 1.86 + ((Gujarati, SkTEndian_SwapBE16(11))) 1.87 + ((Oriya, SkTEndian_SwapBE16(12))) 1.88 + ((Bengali, SkTEndian_SwapBE16(13))) 1.89 + ((Tamil, SkTEndian_SwapBE16(14))) 1.90 + ((Telugu, SkTEndian_SwapBE16(15))) 1.91 + ((Kannada, SkTEndian_SwapBE16(16))) 1.92 + ((Malayalam, SkTEndian_SwapBE16(17))) 1.93 + ((Sinhalese, SkTEndian_SwapBE16(18))) 1.94 + ((Burmese, SkTEndian_SwapBE16(19))) 1.95 + ((Khmer, SkTEndian_SwapBE16(20))) 1.96 + ((Thai, SkTEndian_SwapBE16(21))) 1.97 + ((Laotian, SkTEndian_SwapBE16(22))) 1.98 + ((Georgian, SkTEndian_SwapBE16(23))) 1.99 + ((Armenian, SkTEndian_SwapBE16(24))) 1.100 + ((ChineseSimplified, SkTEndian_SwapBE16(25))) 1.101 + ((Tibetan, SkTEndian_SwapBE16(26))) 1.102 + ((Mongolian, SkTEndian_SwapBE16(27))) 1.103 + ((Geez, SkTEndian_SwapBE16(28))) 1.104 + ((Slavic, SkTEndian_SwapBE16(29))) 1.105 + ((Vietnamese, SkTEndian_SwapBE16(30))) 1.106 + ((Sindhi, SkTEndian_SwapBE16(31))) 1.107 + ((Uninterpreted, SkTEndian_SwapBE16(32))) 1.108 + SK_SEQ_END, 1.109 + (value)SK_SEQ_END) 1.110 + } macintosh; 1.111 + 1.112 + /** Deprecated, use Unicode instead. */ 1.113 + struct ISO { 1.114 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.115 + ((ASCII7, SkTEndian_SwapBE16(0))) 1.116 + ((ISO10646, SkTEndian_SwapBE16(1))) 1.117 + ((ISO88591, SkTEndian_SwapBE16(2))) 1.118 + SK_SEQ_END, 1.119 + (value)SK_SEQ_END) 1.120 + } iso; 1.121 + 1.122 + /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or 1.123 + * UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually 1.124 + * UTF-16BE. 1.125 + */ 1.126 + struct Windows { 1.127 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.128 + ((Symbol, SkTEndian_SwapBE16(0))) // UCS2-BE, but don't use this font to display it's own name. 1.129 + ((UnicodeBMPUCS2, SkTEndian_SwapBE16(1))) // UCS2-BE, Windows default 1.130 + ((ShiftJIS, SkTEndian_SwapBE16(2))) 1.131 + ((PRC, SkTEndian_SwapBE16(3))) 1.132 + ((Big5, SkTEndian_SwapBE16(4))) 1.133 + ((Wansung, SkTEndian_SwapBE16(5))) 1.134 + ((Johab, SkTEndian_SwapBE16(6))) 1.135 + ((UnicodeUCS4, SkTEndian_SwapBE16(10))) // UTF-16BE. It means UCS4 in charmaps. 1.136 + SK_SEQ_END, 1.137 + (value)SK_SEQ_END) 1.138 + } windows; 1.139 + } encodingID; 1.140 + 1.141 + /** LanguageIDs <= 0x7FFF are predefined. 1.142 + * LanguageIDs > 0x7FFF are indexes into the langTagRecord array 1.143 + * (in format 1 name tables, see SkOTTableName::format). 1.144 + */ 1.145 + union LanguageID { 1.146 + /** A value greater than 0x7FFF. 1.147 + * languageTagID - 0x8000 is an index into the langTagRecord array. 1.148 + */ 1.149 + SK_OT_USHORT languageTagID; 1.150 + 1.151 + /** These are known as Language Designators. 1.152 + * Apple now uses BCP 47 (post OSX10.4), so there will be no new entries. 1.153 + */ 1.154 + struct Macintosh { 1.155 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.156 + ((English, SkTEndian_SwapBE16(0))) 1.157 + ((French, SkTEndian_SwapBE16(1))) 1.158 + ((German, SkTEndian_SwapBE16(2))) 1.159 + ((Italian, SkTEndian_SwapBE16(3))) 1.160 + ((Dutch, SkTEndian_SwapBE16(4))) 1.161 + ((Swedish, SkTEndian_SwapBE16(5))) 1.162 + ((Spanish, SkTEndian_SwapBE16(6))) 1.163 + ((Danish, SkTEndian_SwapBE16(7))) 1.164 + ((Portuguese, SkTEndian_SwapBE16(8))) 1.165 + ((Norwegian, SkTEndian_SwapBE16(9))) 1.166 + ((Hebrew, SkTEndian_SwapBE16(10))) 1.167 + ((Japanese, SkTEndian_SwapBE16(11))) 1.168 + ((Arabic, SkTEndian_SwapBE16(12))) 1.169 + ((Finnish, SkTEndian_SwapBE16(13))) 1.170 + ((Greek, SkTEndian_SwapBE16(14))) 1.171 + ((Icelandic, SkTEndian_SwapBE16(15))) 1.172 + ((Maltese, SkTEndian_SwapBE16(16))) 1.173 + ((Turkish, SkTEndian_SwapBE16(17))) 1.174 + ((Croatian, SkTEndian_SwapBE16(18))) 1.175 + ((ChineseTraditional, SkTEndian_SwapBE16(19))) 1.176 + ((Urdu, SkTEndian_SwapBE16(20))) 1.177 + ((Hindi, SkTEndian_SwapBE16(21))) 1.178 + ((Thai, SkTEndian_SwapBE16(22))) 1.179 + ((Korean, SkTEndian_SwapBE16(23))) 1.180 + ((Lithuanian, SkTEndian_SwapBE16(24))) 1.181 + ((Polish, SkTEndian_SwapBE16(25))) 1.182 + ((Hungarian, SkTEndian_SwapBE16(26))) 1.183 + ((Estonian, SkTEndian_SwapBE16(27))) 1.184 + ((Latvian, SkTEndian_SwapBE16(28))) 1.185 + ((Sami, SkTEndian_SwapBE16(29))) 1.186 + ((Faroese, SkTEndian_SwapBE16(30))) 1.187 + ((Farsi_Persian, SkTEndian_SwapBE16(31))) 1.188 + ((Russian, SkTEndian_SwapBE16(32))) 1.189 + ((ChineseSimplified, SkTEndian_SwapBE16(33))) 1.190 + ((Flemish, SkTEndian_SwapBE16(34))) 1.191 + ((IrishGaelic, SkTEndian_SwapBE16(35))) 1.192 + ((Albanian, SkTEndian_SwapBE16(36))) 1.193 + ((Romanian, SkTEndian_SwapBE16(37))) 1.194 + ((Czech, SkTEndian_SwapBE16(38))) 1.195 + ((Slovak, SkTEndian_SwapBE16(39))) 1.196 + ((Slovenian, SkTEndian_SwapBE16(40))) 1.197 + ((Yiddish, SkTEndian_SwapBE16(41))) 1.198 + ((Serbian, SkTEndian_SwapBE16(42))) 1.199 + ((Macedonian, SkTEndian_SwapBE16(43))) 1.200 + ((Bulgarian, SkTEndian_SwapBE16(44))) 1.201 + ((Ukrainian, SkTEndian_SwapBE16(45))) 1.202 + ((Byelorussian, SkTEndian_SwapBE16(46))) 1.203 + ((Uzbek, SkTEndian_SwapBE16(47))) 1.204 + ((Kazakh, SkTEndian_SwapBE16(48))) 1.205 + ((AzerbaijaniCyrillic, SkTEndian_SwapBE16(49))) 1.206 + ((AzerbaijaniArabic, SkTEndian_SwapBE16(50))) 1.207 + ((Armenian, SkTEndian_SwapBE16(51))) 1.208 + ((Georgian, SkTEndian_SwapBE16(52))) 1.209 + ((Moldavian, SkTEndian_SwapBE16(53))) 1.210 + ((Kirghiz, SkTEndian_SwapBE16(54))) 1.211 + ((Tajiki, SkTEndian_SwapBE16(55))) 1.212 + ((Turkmen, SkTEndian_SwapBE16(56))) 1.213 + ((MongolianTraditional, SkTEndian_SwapBE16(57))) 1.214 + ((MongolianCyrillic, SkTEndian_SwapBE16(58))) 1.215 + ((Pashto, SkTEndian_SwapBE16(59))) 1.216 + ((Kurdish, SkTEndian_SwapBE16(60))) 1.217 + ((Kashmiri, SkTEndian_SwapBE16(61))) 1.218 + ((Sindhi, SkTEndian_SwapBE16(62))) 1.219 + ((Tibetan, SkTEndian_SwapBE16(63))) 1.220 + ((Nepali, SkTEndian_SwapBE16(64))) 1.221 + ((Sanskrit, SkTEndian_SwapBE16(65))) 1.222 + ((Marathi, SkTEndian_SwapBE16(66))) 1.223 + ((Bengali, SkTEndian_SwapBE16(67))) 1.224 + ((Assamese, SkTEndian_SwapBE16(68))) 1.225 + ((Gujarati, SkTEndian_SwapBE16(69))) 1.226 + ((Punjabi, SkTEndian_SwapBE16(70))) 1.227 + ((Oriya, SkTEndian_SwapBE16(71))) 1.228 + ((Malayalam, SkTEndian_SwapBE16(72))) 1.229 + ((Kannada, SkTEndian_SwapBE16(73))) 1.230 + ((Tamil, SkTEndian_SwapBE16(74))) 1.231 + ((Telugu, SkTEndian_SwapBE16(75))) 1.232 + ((Sinhalese, SkTEndian_SwapBE16(76))) 1.233 + ((Burmese, SkTEndian_SwapBE16(77))) 1.234 + ((Khmer, SkTEndian_SwapBE16(78))) 1.235 + ((Lao, SkTEndian_SwapBE16(79))) 1.236 + ((Vietnamese, SkTEndian_SwapBE16(80))) 1.237 + ((Indonesian, SkTEndian_SwapBE16(81))) 1.238 + ((Tagalong, SkTEndian_SwapBE16(82))) 1.239 + ((MalayRoman, SkTEndian_SwapBE16(83))) 1.240 + ((MalayArabic, SkTEndian_SwapBE16(84))) 1.241 + ((Amharic, SkTEndian_SwapBE16(85))) 1.242 + ((Tigrinya, SkTEndian_SwapBE16(86))) 1.243 + ((Galla, SkTEndian_SwapBE16(87))) 1.244 + ((Somali, SkTEndian_SwapBE16(88))) 1.245 + ((Swahili, SkTEndian_SwapBE16(89))) 1.246 + ((Kinyarwanda_Ruanda, SkTEndian_SwapBE16(90))) 1.247 + ((Rundi, SkTEndian_SwapBE16(91))) 1.248 + ((Nyanja_Chewa, SkTEndian_SwapBE16(92))) 1.249 + ((Malagasy, SkTEndian_SwapBE16(93))) 1.250 + ((Esperanto, SkTEndian_SwapBE16(94))) 1.251 + ((Welsh, SkTEndian_SwapBE16(128))) 1.252 + ((Basque, SkTEndian_SwapBE16(129))) 1.253 + ((Catalan, SkTEndian_SwapBE16(130))) 1.254 + ((Latin, SkTEndian_SwapBE16(131))) 1.255 + ((Quenchua, SkTEndian_SwapBE16(132))) 1.256 + ((Guarani, SkTEndian_SwapBE16(133))) 1.257 + ((Aymara, SkTEndian_SwapBE16(134))) 1.258 + ((Tatar, SkTEndian_SwapBE16(135))) 1.259 + ((Uighur, SkTEndian_SwapBE16(136))) 1.260 + ((Dzongkha, SkTEndian_SwapBE16(137))) 1.261 + ((JavaneseRoman, SkTEndian_SwapBE16(138))) 1.262 + ((SundaneseRoman, SkTEndian_SwapBE16(139))) 1.263 + ((Galician, SkTEndian_SwapBE16(140))) 1.264 + ((Afrikaans, SkTEndian_SwapBE16(141))) 1.265 + ((Breton, SkTEndian_SwapBE16(142))) 1.266 + ((Inuktitut, SkTEndian_SwapBE16(143))) 1.267 + ((ScottishGaelic, SkTEndian_SwapBE16(144))) 1.268 + ((ManxGaelic, SkTEndian_SwapBE16(145))) 1.269 + ((IrishGaelicWithLenition, SkTEndian_SwapBE16(146))) 1.270 + ((Tongan, SkTEndian_SwapBE16(147))) 1.271 + ((GreekPolytonic, SkTEndian_SwapBE16(148))) 1.272 + ((Greenlandic, SkTEndian_SwapBE16(149))) 1.273 + ((AzerbaijaniRoman, SkTEndian_SwapBE16(150))) 1.274 + SK_SEQ_END, 1.275 + (value)SK_SEQ_END) 1.276 + } macintosh; 1.277 + 1.278 + /** These are known as LCIDs. 1.279 + * On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID. 1.280 + */ 1.281 + struct Windows { 1.282 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.283 + ((Afrikaans_SouthAfrica, SkTEndian_SwapBE16(0x0436))) 1.284 + ((Albanian_Albania, SkTEndian_SwapBE16(0x041C))) 1.285 + ((Alsatian_France, SkTEndian_SwapBE16(0x0484))) 1.286 + ((Amharic_Ethiopia, SkTEndian_SwapBE16(0x045E))) 1.287 + ((Arabic_Algeria, SkTEndian_SwapBE16(0x1401))) 1.288 + ((Arabic_Bahrain, SkTEndian_SwapBE16(0x3C01))) 1.289 + ((Arabic_Egypt, SkTEndian_SwapBE16(0x0C01))) 1.290 + ((Arabic_Iraq, SkTEndian_SwapBE16(0x0801))) 1.291 + ((Arabic_Jordan, SkTEndian_SwapBE16(0x2C01))) 1.292 + ((Arabic_Kuwait, SkTEndian_SwapBE16(0x3401))) 1.293 + ((Arabic_Lebanon, SkTEndian_SwapBE16(0x3001))) 1.294 + ((Arabic_Libya, SkTEndian_SwapBE16(0x1001))) 1.295 + ((Arabic_Morocco, SkTEndian_SwapBE16(0x1801))) 1.296 + ((Arabic_Oman, SkTEndian_SwapBE16(0x2001))) 1.297 + ((Arabic_Qatar, SkTEndian_SwapBE16(0x4001))) 1.298 + ((Arabic_SaudiArabia, SkTEndian_SwapBE16(0x0401))) 1.299 + ((Arabic_Syria, SkTEndian_SwapBE16(0x2801))) 1.300 + ((Arabic_Tunisia, SkTEndian_SwapBE16(0x1C01))) 1.301 + ((Arabic_UAE, SkTEndian_SwapBE16(0x3801))) 1.302 + ((Arabic_Yemen, SkTEndian_SwapBE16(0x2401))) 1.303 + ((Armenian_Armenia, SkTEndian_SwapBE16(0x042B))) 1.304 + ((Assamese_India, SkTEndian_SwapBE16(0x044D))) 1.305 + ((AzeriCyrillic_Azerbaijan, SkTEndian_SwapBE16(0x082C))) 1.306 + ((AzeriLatin_Azerbaijan, SkTEndian_SwapBE16(0x042C))) 1.307 + ((Bashkir_Russia, SkTEndian_SwapBE16(0x046D))) 1.308 + ((Basque_Basque, SkTEndian_SwapBE16(0x042D))) 1.309 + ((Belarusian_Belarus, SkTEndian_SwapBE16(0x0423))) 1.310 + ((Bengali_Bangladesh, SkTEndian_SwapBE16(0x0845))) 1.311 + ((Bengali_India, SkTEndian_SwapBE16(0x0445))) 1.312 + ((BosnianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x201A))) 1.313 + ((BosnianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x141A))) 1.314 + ((Breton_France, SkTEndian_SwapBE16(0x047E))) 1.315 + ((Bulgarian_Bulgaria, SkTEndian_SwapBE16(0x0402))) 1.316 + ((Catalan_Catalan, SkTEndian_SwapBE16(0x0403))) 1.317 + ((Chinese_HongKongSAR, SkTEndian_SwapBE16(0x0C04))) 1.318 + ((Chinese_MacaoSAR, SkTEndian_SwapBE16(0x1404))) 1.319 + ((Chinese_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0804))) 1.320 + ((Chinese_Singapore, SkTEndian_SwapBE16(0x1004))) 1.321 + ((Chinese_Taiwan, SkTEndian_SwapBE16(0x0404))) 1.322 + ((Corsican_France, SkTEndian_SwapBE16(0x0483))) 1.323 + ((Croatian_Croatia, SkTEndian_SwapBE16(0x041A))) 1.324 + ((CroatianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x101A))) 1.325 + ((Czech_CzechRepublic, SkTEndian_SwapBE16(0x0405))) 1.326 + ((Danish_Denmark, SkTEndian_SwapBE16(0x0406))) 1.327 + ((Dari_Afghanistan, SkTEndian_SwapBE16(0x048C))) 1.328 + ((Divehi_Maldives, SkTEndian_SwapBE16(0x0465))) 1.329 + ((Dutch_Belgium, SkTEndian_SwapBE16(0x0813))) 1.330 + ((Dutch_Netherlands, SkTEndian_SwapBE16(0x0413))) 1.331 + ((English_Australia, SkTEndian_SwapBE16(0x0C09))) 1.332 + ((English_Belize, SkTEndian_SwapBE16(0x2809))) 1.333 + ((English_Canada, SkTEndian_SwapBE16(0x1009))) 1.334 + ((English_Caribbean, SkTEndian_SwapBE16(0x2409))) 1.335 + ((English_India, SkTEndian_SwapBE16(0x4009))) 1.336 + ((English_Ireland, SkTEndian_SwapBE16(0x1809))) 1.337 + ((English_Jamaica, SkTEndian_SwapBE16(0x2009))) 1.338 + ((English_Malaysia, SkTEndian_SwapBE16(0x4409))) 1.339 + ((English_NewZealand, SkTEndian_SwapBE16(0x1409))) 1.340 + ((English_RepublicOfThePhilippines, SkTEndian_SwapBE16(0x3409))) 1.341 + ((English_Singapore, SkTEndian_SwapBE16(0x4809))) 1.342 + ((English_SouthAfrica, SkTEndian_SwapBE16(0x1C09))) 1.343 + ((English_TrinidadAndTobago, SkTEndian_SwapBE16(0x2C09))) 1.344 + ((English_UnitedKingdom, SkTEndian_SwapBE16(0x0809))) 1.345 + ((English_UnitedStates, SkTEndian_SwapBE16(0x0409))) 1.346 + ((English_Zimbabwe, SkTEndian_SwapBE16(0x3009))) 1.347 + ((Estonian_Estonia, SkTEndian_SwapBE16(0x0425))) 1.348 + ((Faroese_FaroeIslands, SkTEndian_SwapBE16(0x0438))) 1.349 + ((Filipino_Philippines, SkTEndian_SwapBE16(0x0464))) 1.350 + ((Finnish_Finland, SkTEndian_SwapBE16(0x040B))) 1.351 + ((French_Belgium, SkTEndian_SwapBE16(0x080C))) 1.352 + ((French_Canada, SkTEndian_SwapBE16(0x0C0C))) 1.353 + ((French_France, SkTEndian_SwapBE16(0x040C))) 1.354 + ((French_Luxembourg, SkTEndian_SwapBE16(0x140c))) 1.355 + ((French_PrincipalityOfMonoco, SkTEndian_SwapBE16(0x180C))) 1.356 + ((French_Switzerland, SkTEndian_SwapBE16(0x100C))) 1.357 + ((Frisian_Netherlands, SkTEndian_SwapBE16(0x0462))) 1.358 + ((Galician_Galician, SkTEndian_SwapBE16(0x0456))) 1.359 + ((Georgian_Georgia, SkTEndian_SwapBE16(0x0437))) 1.360 + ((German_Austria, SkTEndian_SwapBE16(0x0C07))) 1.361 + ((German_Germany, SkTEndian_SwapBE16(0x0407))) 1.362 + ((German_Liechtenstein, SkTEndian_SwapBE16(0x1407))) 1.363 + ((German_Luxembourg, SkTEndian_SwapBE16(0x1007))) 1.364 + ((German_Switzerland, SkTEndian_SwapBE16(0x0807))) 1.365 + ((Greek_Greece, SkTEndian_SwapBE16(0x0408))) 1.366 + ((Greenlandic_Greenland, SkTEndian_SwapBE16(0x046F))) 1.367 + ((Gujarati_India, SkTEndian_SwapBE16(0x0447))) 1.368 + ((HausaLatin_Nigeria, SkTEndian_SwapBE16(0x0468))) 1.369 + ((Hebrew_Israel, SkTEndian_SwapBE16(0x040D))) 1.370 + ((Hindi_India, SkTEndian_SwapBE16(0x0439))) 1.371 + ((Hungarian_Hungary, SkTEndian_SwapBE16(0x040E))) 1.372 + ((Icelandic_Iceland, SkTEndian_SwapBE16(0x040F))) 1.373 + ((Igbo_Nigeria, SkTEndian_SwapBE16(0x0470))) 1.374 + ((Indonesian_Indonesia, SkTEndian_SwapBE16(0x0421))) 1.375 + ((Inuktitut_Canada, SkTEndian_SwapBE16(0x045D))) 1.376 + ((InuktitutLatin_Canada, SkTEndian_SwapBE16(0x085D))) 1.377 + ((Irish_Ireland, SkTEndian_SwapBE16(0x083C))) 1.378 + ((isiXhosa_SouthAfrica, SkTEndian_SwapBE16(0x0434))) 1.379 + ((isiZulu_SouthAfrica, SkTEndian_SwapBE16(0x0435))) 1.380 + ((Italian_Italy, SkTEndian_SwapBE16(0x0410))) 1.381 + ((Italian_Switzerland, SkTEndian_SwapBE16(0x0810))) 1.382 + ((Japanese_Japan, SkTEndian_SwapBE16(0x0411))) 1.383 + ((Kannada_India, SkTEndian_SwapBE16(0x044B))) 1.384 + ((Kazakh_Kazakhstan, SkTEndian_SwapBE16(0x043F))) 1.385 + ((Khmer_Cambodia, SkTEndian_SwapBE16(0x0453))) 1.386 + ((Kiche_Guatemala, SkTEndian_SwapBE16(0x0486))) 1.387 + ((Kinyarwanda_Rwanda, SkTEndian_SwapBE16(0x0487))) 1.388 + ((Kiswahili_Kenya, SkTEndian_SwapBE16(0x0441))) 1.389 + ((Konkani_India, SkTEndian_SwapBE16(0x0457))) 1.390 + ((Korean_Korea, SkTEndian_SwapBE16(0x0412))) 1.391 + ((Kyrgyz_Kyrgyzstan, SkTEndian_SwapBE16(0x0440))) 1.392 + ((Lao_LaoPDR, SkTEndian_SwapBE16(0x0454))) 1.393 + ((Latvian_Latvia, SkTEndian_SwapBE16(0x0426))) 1.394 + ((Lithuanian_Lithuania, SkTEndian_SwapBE16(0x0427))) 1.395 + ((LowerSorbian_Germany, SkTEndian_SwapBE16(0x082E))) 1.396 + ((Luxembourgish_Luxembourg, SkTEndian_SwapBE16(0x046E))) 1.397 + ((MacedonianFYROM_FormerYugoslavRepublicOfMacedonia, SkTEndian_SwapBE16(0x042F))) 1.398 + ((Malay_BruneiDarussalam, SkTEndian_SwapBE16(0x083E))) 1.399 + ((Malay_Malaysia, SkTEndian_SwapBE16(0x043E))) 1.400 + ((Malayalam_India, SkTEndian_SwapBE16(0x044C))) 1.401 + ((Maltese_Malta, SkTEndian_SwapBE16(0x043A))) 1.402 + ((Maori_NewZealand, SkTEndian_SwapBE16(0x0481))) 1.403 + ((Mapudungun_Chile, SkTEndian_SwapBE16(0x047A))) 1.404 + ((Marathi_India, SkTEndian_SwapBE16(0x044E))) 1.405 + ((Mohawk_Mohawk, SkTEndian_SwapBE16(0x047C))) 1.406 + ((MongolianCyrillic_Mongolia, SkTEndian_SwapBE16(0x0450))) 1.407 + ((MongolianTraditional_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0850))) 1.408 + ((Nepali_Nepal, SkTEndian_SwapBE16(0x0461))) 1.409 + ((NorwegianBokmal_Norway, SkTEndian_SwapBE16(0x0414))) 1.410 + ((NorwegianNynorsk_Norway, SkTEndian_SwapBE16(0x0814))) 1.411 + ((Occitan_France, SkTEndian_SwapBE16(0x0482))) 1.412 + ((Odia_India, SkTEndian_SwapBE16(0x0448))) 1.413 + ((Pashto_Afghanistan, SkTEndian_SwapBE16(0x0463))) 1.414 + ((Polish_Poland, SkTEndian_SwapBE16(0x0415))) 1.415 + ((Portuguese_Brazil, SkTEndian_SwapBE16(0x0416))) 1.416 + ((Portuguese_Portugal, SkTEndian_SwapBE16(0x0816))) 1.417 + ((Punjabi_India, SkTEndian_SwapBE16(0x0446))) 1.418 + ((Quechua_Bolivia, SkTEndian_SwapBE16(0x046B))) 1.419 + ((Quechua_Ecuador, SkTEndian_SwapBE16(0x086B))) 1.420 + ((Quechua_Peru, SkTEndian_SwapBE16(0x0C6B))) 1.421 + ((Romanian_Romania, SkTEndian_SwapBE16(0x0418))) 1.422 + ((Romansh_Switzerland, SkTEndian_SwapBE16(0x0417))) 1.423 + ((Russian_Russia, SkTEndian_SwapBE16(0x0419))) 1.424 + ((SamiInari_Finland, SkTEndian_SwapBE16(0x243B))) 1.425 + ((SamiLule_Norway, SkTEndian_SwapBE16(0x103B))) 1.426 + ((SamiLule_Sweden, SkTEndian_SwapBE16(0x143B))) 1.427 + ((SamiNorthern_Finland, SkTEndian_SwapBE16(0x0C3B))) 1.428 + ((SamiNorthern_Norway, SkTEndian_SwapBE16(0x043B))) 1.429 + ((SamiNorthern_Sweden, SkTEndian_SwapBE16(0x083B))) 1.430 + ((SamiSkolt_Finland, SkTEndian_SwapBE16(0x203B))) 1.431 + ((SamiSouthern_Norway, SkTEndian_SwapBE16(0x183B))) 1.432 + ((SamiSouthern_Sweden, SkTEndian_SwapBE16(0x1C3B))) 1.433 + ((Sanskrit_India, SkTEndian_SwapBE16(0x044F))) 1.434 + ((SerbianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x1C1A))) 1.435 + ((SerbianCyrillic_Serbia, SkTEndian_SwapBE16(0x0C1A))) 1.436 + ((SerbianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x181A))) 1.437 + ((SerbianLatin_Serbia, SkTEndian_SwapBE16(0x081A))) 1.438 + ((SesothoSaLeboa_SouthAfrica, SkTEndian_SwapBE16(0x046C))) 1.439 + ((Setswana_SouthAfrica, SkTEndian_SwapBE16(0x0432))) 1.440 + ((Sinhala_SriLanka, SkTEndian_SwapBE16(0x045B))) 1.441 + ((Slovak_Slovakia, SkTEndian_SwapBE16(0x041B))) 1.442 + ((Slovenian_Slovenia, SkTEndian_SwapBE16(0x0424))) 1.443 + ((Spanish_Argentina, SkTEndian_SwapBE16(0x2C0A))) 1.444 + ((Spanish_Bolivia, SkTEndian_SwapBE16(0x400A))) 1.445 + ((Spanish_Chile, SkTEndian_SwapBE16(0x340A))) 1.446 + ((Spanish_Colombia, SkTEndian_SwapBE16(0x240A))) 1.447 + ((Spanish_CostaRica, SkTEndian_SwapBE16(0x140A))) 1.448 + ((Spanish_DominicanRepublic, SkTEndian_SwapBE16(0x1C0A))) 1.449 + ((Spanish_Ecuador, SkTEndian_SwapBE16(0x300A))) 1.450 + ((Spanish_ElSalvador, SkTEndian_SwapBE16(0x440A))) 1.451 + ((Spanish_Guatemala, SkTEndian_SwapBE16(0x100A))) 1.452 + ((Spanish_Honduras, SkTEndian_SwapBE16(0x480A))) 1.453 + ((Spanish_Mexico, SkTEndian_SwapBE16(0x080A))) 1.454 + ((Spanish_Nicaragua, SkTEndian_SwapBE16(0x4C0A))) 1.455 + ((Spanish_Panama, SkTEndian_SwapBE16(0x180A))) 1.456 + ((Spanish_Paraguay, SkTEndian_SwapBE16(0x3C0A))) 1.457 + ((Spanish_Peru, SkTEndian_SwapBE16(0x280A))) 1.458 + ((Spanish_PuertoRico, SkTEndian_SwapBE16(0x500A))) 1.459 + ((SpanishModernSort_Spain, SkTEndian_SwapBE16(0x0C0A))) 1.460 + ((SpanishTraditionalSort_Spain, SkTEndian_SwapBE16(0x040A))) 1.461 + ((Spanish_UnitedStates, SkTEndian_SwapBE16(0x540A))) 1.462 + ((Spanish_Uruguay, SkTEndian_SwapBE16(0x380A))) 1.463 + ((Spanish_Venezuela, SkTEndian_SwapBE16(0x200A))) 1.464 + ((Sweden_Finland, SkTEndian_SwapBE16(0x081D))) 1.465 + ((Swedish_Sweden, SkTEndian_SwapBE16(0x041D))) 1.466 + ((Syriac_Syria, SkTEndian_SwapBE16(0x045A))) 1.467 + ((TajikCyrillic_Tajikistan, SkTEndian_SwapBE16(0x0428))) 1.468 + ((TamazightLatin_Algeria, SkTEndian_SwapBE16(0x085F))) 1.469 + ((Tamil_India, SkTEndian_SwapBE16(0x0449))) 1.470 + ((Tatar_Russia, SkTEndian_SwapBE16(0x0444))) 1.471 + ((Telugu_India, SkTEndian_SwapBE16(0x044A))) 1.472 + ((Thai_Thailand, SkTEndian_SwapBE16(0x041E))) 1.473 + ((Tibetan_PRC, SkTEndian_SwapBE16(0x0451))) 1.474 + ((Turkish_Turkey, SkTEndian_SwapBE16(0x041F))) 1.475 + ((Turkmen_Turkmenistan, SkTEndian_SwapBE16(0x0442))) 1.476 + ((Uighur_PRC, SkTEndian_SwapBE16(0x0480))) 1.477 + ((Ukrainian_Ukraine, SkTEndian_SwapBE16(0x0422))) 1.478 + ((UpperSorbian_Germany, SkTEndian_SwapBE16(0x042E))) 1.479 + ((Urdu_IslamicRepublicOfPakistan, SkTEndian_SwapBE16(0x0420))) 1.480 + ((UzbekCyrillic_Uzbekistan, SkTEndian_SwapBE16(0x0843))) 1.481 + ((UzbekLatin_Uzbekistan, SkTEndian_SwapBE16(0x0443))) 1.482 + ((Vietnamese_Vietnam, SkTEndian_SwapBE16(0x042A))) 1.483 + ((Welsh_UnitedKingdom, SkTEndian_SwapBE16(0x0452))) 1.484 + ((Wolof_Senegal, SkTEndian_SwapBE16(0x0488))) 1.485 + ((Yakut_Russia, SkTEndian_SwapBE16(0x0485))) 1.486 + ((Yi_PRC, SkTEndian_SwapBE16(0x0478))) 1.487 + ((Yoruba_Nigeria, SkTEndian_SwapBE16(0x046A))) 1.488 + SK_SEQ_END, 1.489 + (value)SK_SEQ_END) 1.490 + } windows; 1.491 + } languageID; 1.492 + 1.493 + /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */ 1.494 + union NameID { 1.495 + /** A font specific name id which should be greater than 0xFF. */ 1.496 + SK_OT_USHORT fontSpecific; 1.497 + struct Predefined { 1.498 + SK_TYPED_ENUM(Value, SK_OT_USHORT, 1.499 + ((CopyrightNotice, SkTEndian_SwapBE16(0))) 1.500 + ((FontFamilyName, SkTEndian_SwapBE16(1))) 1.501 + ((FontSubfamilyName, SkTEndian_SwapBE16(2))) 1.502 + ((UniqueFontIdentifier, SkTEndian_SwapBE16(3))) 1.503 + ((FullFontName, SkTEndian_SwapBE16(4))) 1.504 + ((VersionString, SkTEndian_SwapBE16(5))) //Version <number>.<number> 1.505 + ((PostscriptName, SkTEndian_SwapBE16(6))) //See spec for constraints. 1.506 + ((Trademark, SkTEndian_SwapBE16(7))) 1.507 + ((ManufacturerName, SkTEndian_SwapBE16(8))) 1.508 + ((Designer, SkTEndian_SwapBE16(9))) 1.509 + ((Description, SkTEndian_SwapBE16(10))) 1.510 + ((URLVendor, SkTEndian_SwapBE16(11))) 1.511 + ((URLDesigner, SkTEndian_SwapBE16(12))) 1.512 + ((LicenseDescription, SkTEndian_SwapBE16(13))) 1.513 + ((LicenseInfoURL, SkTEndian_SwapBE16(14))) 1.514 + ((PreferredFamily, SkTEndian_SwapBE16(16))) 1.515 + ((PreferredSubfamily, SkTEndian_SwapBE16(17))) 1.516 + ((CompatibleFullName, SkTEndian_SwapBE16(18))) 1.517 + ((SampleText, SkTEndian_SwapBE16(19))) 1.518 + ((PostscriptCIDFindfontName, SkTEndian_SwapBE16(20))) 1.519 + ((WWSFamilyName, SkTEndian_SwapBE16(21))) 1.520 + ((WWSSubfamilyName, SkTEndian_SwapBE16(22))) 1.521 + SK_SEQ_END, 1.522 + (value)SK_SEQ_END) 1.523 + } predefined; 1.524 + } nameID; 1.525 + 1.526 + /** The length of the string in SK_OT_BYTEs. */ 1.527 + SK_OT_USHORT length; 1.528 + 1.529 + /** Offset in SK_OT_BYTEs from start of string storage area 1.530 + * (see SkOTTableName::stringOffset). 1.531 + */ 1.532 + SK_OT_USHORT offset; 1.533 + }; //nameRecord[count]; 1.534 + 1.535 + struct Format1Ext { 1.536 + /** The number of languageTagRecords which follow. */ 1.537 + SK_OT_USHORT langTagCount; 1.538 + 1.539 + /** The encoding of a langTagRecord string is always UTF-16BE. 1.540 + * The content should follow IETF specification BCP 47. 1.541 + */ 1.542 + struct LangTagRecord { 1.543 + /** The length of the string in SK_OT_BYTEs. */ 1.544 + SK_OT_USHORT length; 1.545 + 1.546 + /** Offset in SK_OT_BYTEs from start of string storage area 1.547 + * (see SkOTTableName::stringOffset). 1.548 + */ 1.549 + SK_OT_USHORT offset; 1.550 + }; //langTagRecord[langTagCount] 1.551 + }; //format1ext (if format == format_1) 1.552 + 1.553 + class Iterator { 1.554 + public: 1.555 + Iterator(const SkOTTableName& name) : fName(name), fIndex(0), fType(-1) { } 1.556 + Iterator(const SkOTTableName& name, SkOTTableName::Record::NameID::Predefined::Value type) 1.557 + : fName(name), fIndex(0), fType(type) 1.558 + { } 1.559 + 1.560 + void reset(SkOTTableName::Record::NameID::Predefined::Value type) { 1.561 + fIndex = 0; 1.562 + fType = type; 1.563 + } 1.564 + 1.565 + struct Record { 1.566 + SK_OT_USHORT type; 1.567 + SkString name; 1.568 + SkString language; 1.569 + }; 1.570 + bool next(Record&); 1.571 + 1.572 + private: 1.573 + const SkOTTableName& fName; 1.574 + size_t fIndex; 1.575 + int fType; 1.576 + }; 1.577 +}; 1.578 + 1.579 +#pragma pack(pop) 1.580 + 1.581 + 1.582 +SK_COMPILE_ASSERT(sizeof(SkOTTableName) == 6, sizeof_SkOTTableName_not_6); 1.583 +SK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext) == 2, sizeof_SkOTTableNameF1_not_2); 1.584 +SK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, sizeof_SkOTTableNameLangTagRecord_not_4); 1.585 +SK_COMPILE_ASSERT(sizeof(SkOTTableName::Record) == 12, sizeof_SkOTTableNameRecord_not_12); 1.586 + 1.587 +#endif