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

changeset 0
6474c204b198
     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

mercurial