| /* |
| * Copyright 2012 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkOTTable_name_DEFINED |
| #define SkOTTable_name_DEFINED |
| |
| #include "SkEndian.h" |
| #include "SkOTTableTypes.h" |
| #include "SkString.h" |
| |
| #pragma pack(push, 1) |
| |
| struct SkOTTableName { |
| static const SK_OT_CHAR TAG0 = 'n'; |
| static const SK_OT_CHAR TAG1 = 'a'; |
| static const SK_OT_CHAR TAG2 = 'm'; |
| static const SK_OT_CHAR TAG3 = 'e'; |
| static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value; |
| |
| SK_OT_USHORT format; |
| static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0); |
| /** Format 1 was added in OpenType 1.6 (April 2009). */ |
| static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1); |
| |
| /** The number of name records which follow. */ |
| SK_OT_USHORT count; |
| |
| /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */ |
| SK_OT_USHORT stringOffset; |
| |
| struct Record { |
| /** The platform ID specifies how to interpret the encoding and language ID. */ |
| struct PlatformID { |
| enum Value : SK_OT_USHORT { |
| Unicode = SkTEndian_SwapBE16(0), |
| Macintosh = SkTEndian_SwapBE16(1), |
| ISO = SkTEndian_SwapBE16(2), // Deprecated, use Unicode instead. |
| Windows = SkTEndian_SwapBE16(3), |
| Custom = SkTEndian_SwapBE16(4), |
| } value; |
| } platformID; |
| |
| union EncodingID { |
| SK_OT_USHORT custom; |
| |
| /** Always UTF-16BE. */ |
| struct Unicode { |
| enum Value : SK_OT_USHORT { |
| Unicode10 = SkTEndian_SwapBE16(0), |
| Unicode11 = SkTEndian_SwapBE16(1), |
| ISO10646 = SkTEndian_SwapBE16(2), //deprecated, use Unicode11 |
| Unicode20BMP = SkTEndian_SwapBE16(3), |
| Unicode20 = SkTEndian_SwapBE16(4), |
| UnicodeVariationSequences = SkTEndian_SwapBE16(5), |
| UnicodeFull = SkTEndian_SwapBE16(6), |
| } value; |
| } unicode; |
| |
| /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ |
| * for their mappings to unicode. |
| * Name table strings using PlatformID::Macintosh must use Roman. |
| */ |
| struct Macintosh { |
| enum Value : SK_OT_USHORT { |
| Roman = SkTEndian_SwapBE16(0), |
| Japanese = SkTEndian_SwapBE16(1), |
| ChineseTraditional = SkTEndian_SwapBE16(2), |
| Korean = SkTEndian_SwapBE16(3), |
| Arabic = SkTEndian_SwapBE16(4), |
| Hebrew = SkTEndian_SwapBE16(5), |
| Greek = SkTEndian_SwapBE16(6), |
| Russian = SkTEndian_SwapBE16(7), |
| RSymbol = SkTEndian_SwapBE16(8), |
| Devanagari = SkTEndian_SwapBE16(9), |
| Gurmukhi = SkTEndian_SwapBE16(10), |
| Gujarati = SkTEndian_SwapBE16(11), |
| Oriya = SkTEndian_SwapBE16(12), |
| Bengali = SkTEndian_SwapBE16(13), |
| Tamil = SkTEndian_SwapBE16(14), |
| Telugu = SkTEndian_SwapBE16(15), |
| Kannada = SkTEndian_SwapBE16(16), |
| Malayalam = SkTEndian_SwapBE16(17), |
| Sinhalese = SkTEndian_SwapBE16(18), |
| Burmese = SkTEndian_SwapBE16(19), |
| Khmer = SkTEndian_SwapBE16(20), |
| Thai = SkTEndian_SwapBE16(21), |
| Laotian = SkTEndian_SwapBE16(22), |
| Georgian = SkTEndian_SwapBE16(23), |
| Armenian = SkTEndian_SwapBE16(24), |
| ChineseSimplified = SkTEndian_SwapBE16(25), |
| Tibetan = SkTEndian_SwapBE16(26), |
| Mongolian = SkTEndian_SwapBE16(27), |
| Geez = SkTEndian_SwapBE16(28), |
| Slavic = SkTEndian_SwapBE16(29), |
| Vietnamese = SkTEndian_SwapBE16(30), |
| Sindhi = SkTEndian_SwapBE16(31), |
| Uninterpreted = SkTEndian_SwapBE16(32), |
| } value; |
| } macintosh; |
| |
| /** Deprecated, use Unicode instead. */ |
| struct ISO { |
| enum Value : SK_OT_USHORT { |
| ASCII7 = SkTEndian_SwapBE16(0), |
| ISO10646 = SkTEndian_SwapBE16(1), |
| ISO88591 = SkTEndian_SwapBE16(2), |
| } value; |
| } iso; |
| |
| /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or |
| * UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually |
| * UTF-16BE. |
| */ |
| struct Windows { |
| enum Value : SK_OT_USHORT { |
| Symbol = SkTEndian_SwapBE16(0), // UCS2-BE, but don't use this font to display it's own name. |
| UnicodeBMPUCS2 = SkTEndian_SwapBE16(1), // UCS2-BE, Windows default |
| ShiftJIS = SkTEndian_SwapBE16(2), |
| PRC = SkTEndian_SwapBE16(3), |
| Big5 = SkTEndian_SwapBE16(4), |
| Wansung = SkTEndian_SwapBE16(5), |
| Johab = SkTEndian_SwapBE16(6), |
| UnicodeUCS4 = SkTEndian_SwapBE16(10), // UTF-16BE. It means UCS4 in charmaps. |
| } value; |
| } windows; |
| } encodingID; |
| |
| /** LanguageIDs <= 0x7FFF are predefined. |
| * LanguageIDs > 0x7FFF are indexes into the langTagRecord array |
| * (in format 1 name tables, see SkOTTableName::format). |
| */ |
| union LanguageID { |
| /** A value greater than 0x7FFF. |
| * languageTagID - 0x8000 is an index into the langTagRecord array. |
| */ |
| SK_OT_USHORT languageTagID; |
| |
| /** These are known as Language Designators. |
| * Apple now uses BCP 47 (post OSX10.4), so there will be no new entries. |
| */ |
| struct Macintosh { |
| enum Value : SK_OT_USHORT { |
| English = SkTEndian_SwapBE16(0), |
| French = SkTEndian_SwapBE16(1), |
| German = SkTEndian_SwapBE16(2), |
| Italian = SkTEndian_SwapBE16(3), |
| Dutch = SkTEndian_SwapBE16(4), |
| Swedish = SkTEndian_SwapBE16(5), |
| Spanish = SkTEndian_SwapBE16(6), |
| Danish = SkTEndian_SwapBE16(7), |
| Portuguese = SkTEndian_SwapBE16(8), |
| Norwegian = SkTEndian_SwapBE16(9), |
| Hebrew = SkTEndian_SwapBE16(10), |
| Japanese = SkTEndian_SwapBE16(11), |
| Arabic = SkTEndian_SwapBE16(12), |
| Finnish = SkTEndian_SwapBE16(13), |
| Greek = SkTEndian_SwapBE16(14), |
| Icelandic = SkTEndian_SwapBE16(15), |
| Maltese = SkTEndian_SwapBE16(16), |
| Turkish = SkTEndian_SwapBE16(17), |
| Croatian = SkTEndian_SwapBE16(18), |
| ChineseTraditional = SkTEndian_SwapBE16(19), |
| Urdu = SkTEndian_SwapBE16(20), |
| Hindi = SkTEndian_SwapBE16(21), |
| Thai = SkTEndian_SwapBE16(22), |
| Korean = SkTEndian_SwapBE16(23), |
| Lithuanian = SkTEndian_SwapBE16(24), |
| Polish = SkTEndian_SwapBE16(25), |
| Hungarian = SkTEndian_SwapBE16(26), |
| Estonian = SkTEndian_SwapBE16(27), |
| Latvian = SkTEndian_SwapBE16(28), |
| Sami = SkTEndian_SwapBE16(29), |
| Faroese = SkTEndian_SwapBE16(30), |
| Farsi_Persian = SkTEndian_SwapBE16(31), |
| Russian = SkTEndian_SwapBE16(32), |
| ChineseSimplified = SkTEndian_SwapBE16(33), |
| Flemish = SkTEndian_SwapBE16(34), |
| IrishGaelic = SkTEndian_SwapBE16(35), |
| Albanian = SkTEndian_SwapBE16(36), |
| Romanian = SkTEndian_SwapBE16(37), |
| Czech = SkTEndian_SwapBE16(38), |
| Slovak = SkTEndian_SwapBE16(39), |
| Slovenian = SkTEndian_SwapBE16(40), |
| Yiddish = SkTEndian_SwapBE16(41), |
| Serbian = SkTEndian_SwapBE16(42), |
| Macedonian = SkTEndian_SwapBE16(43), |
| Bulgarian = SkTEndian_SwapBE16(44), |
| Ukrainian = SkTEndian_SwapBE16(45), |
| Byelorussian = SkTEndian_SwapBE16(46), |
| Uzbek = SkTEndian_SwapBE16(47), |
| Kazakh = SkTEndian_SwapBE16(48), |
| AzerbaijaniCyrillic = SkTEndian_SwapBE16(49), |
| AzerbaijaniArabic = SkTEndian_SwapBE16(50), |
| Armenian = SkTEndian_SwapBE16(51), |
| Georgian = SkTEndian_SwapBE16(52), |
| Moldavian = SkTEndian_SwapBE16(53), |
| Kirghiz = SkTEndian_SwapBE16(54), |
| Tajiki = SkTEndian_SwapBE16(55), |
| Turkmen = SkTEndian_SwapBE16(56), |
| MongolianTraditional = SkTEndian_SwapBE16(57), |
| MongolianCyrillic = SkTEndian_SwapBE16(58), |
| Pashto = SkTEndian_SwapBE16(59), |
| Kurdish = SkTEndian_SwapBE16(60), |
| Kashmiri = SkTEndian_SwapBE16(61), |
| Sindhi = SkTEndian_SwapBE16(62), |
| Tibetan = SkTEndian_SwapBE16(63), |
| Nepali = SkTEndian_SwapBE16(64), |
| Sanskrit = SkTEndian_SwapBE16(65), |
| Marathi = SkTEndian_SwapBE16(66), |
| Bengali = SkTEndian_SwapBE16(67), |
| Assamese = SkTEndian_SwapBE16(68), |
| Gujarati = SkTEndian_SwapBE16(69), |
| Punjabi = SkTEndian_SwapBE16(70), |
| Oriya = SkTEndian_SwapBE16(71), |
| Malayalam = SkTEndian_SwapBE16(72), |
| Kannada = SkTEndian_SwapBE16(73), |
| Tamil = SkTEndian_SwapBE16(74), |
| Telugu = SkTEndian_SwapBE16(75), |
| Sinhalese = SkTEndian_SwapBE16(76), |
| Burmese = SkTEndian_SwapBE16(77), |
| Khmer = SkTEndian_SwapBE16(78), |
| Lao = SkTEndian_SwapBE16(79), |
| Vietnamese = SkTEndian_SwapBE16(80), |
| Indonesian = SkTEndian_SwapBE16(81), |
| Tagalong = SkTEndian_SwapBE16(82), |
| MalayRoman = SkTEndian_SwapBE16(83), |
| MalayArabic = SkTEndian_SwapBE16(84), |
| Amharic = SkTEndian_SwapBE16(85), |
| Tigrinya = SkTEndian_SwapBE16(86), |
| Galla = SkTEndian_SwapBE16(87), |
| Somali = SkTEndian_SwapBE16(88), |
| Swahili = SkTEndian_SwapBE16(89), |
| Kinyarwanda_Ruanda = SkTEndian_SwapBE16(90), |
| Rundi = SkTEndian_SwapBE16(91), |
| Nyanja_Chewa = SkTEndian_SwapBE16(92), |
| Malagasy = SkTEndian_SwapBE16(93), |
| Esperanto = SkTEndian_SwapBE16(94), |
| Welsh = SkTEndian_SwapBE16(128), |
| Basque = SkTEndian_SwapBE16(129), |
| Catalan = SkTEndian_SwapBE16(130), |
| Latin = SkTEndian_SwapBE16(131), |
| Quenchua = SkTEndian_SwapBE16(132), |
| Guarani = SkTEndian_SwapBE16(133), |
| Aymara = SkTEndian_SwapBE16(134), |
| Tatar = SkTEndian_SwapBE16(135), |
| Uighur = SkTEndian_SwapBE16(136), |
| Dzongkha = SkTEndian_SwapBE16(137), |
| JavaneseRoman = SkTEndian_SwapBE16(138), |
| SundaneseRoman = SkTEndian_SwapBE16(139), |
| Galician = SkTEndian_SwapBE16(140), |
| Afrikaans = SkTEndian_SwapBE16(141), |
| Breton = SkTEndian_SwapBE16(142), |
| Inuktitut = SkTEndian_SwapBE16(143), |
| ScottishGaelic = SkTEndian_SwapBE16(144), |
| ManxGaelic = SkTEndian_SwapBE16(145), |
| IrishGaelicWithLenition = SkTEndian_SwapBE16(146), |
| Tongan = SkTEndian_SwapBE16(147), |
| GreekPolytonic = SkTEndian_SwapBE16(148), |
| Greenlandic = SkTEndian_SwapBE16(149), |
| AzerbaijaniRoman = SkTEndian_SwapBE16(150), |
| } value; |
| } macintosh; |
| |
| /** These are known as LCIDs. |
| * On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID. |
| */ |
| struct Windows { |
| enum Value : SK_OT_USHORT { |
| Afrikaans_SouthAfrica = SkTEndian_SwapBE16(0x0436), |
| Albanian_Albania = SkTEndian_SwapBE16(0x041C), |
| Alsatian_France = SkTEndian_SwapBE16(0x0484), |
| Amharic_Ethiopia = SkTEndian_SwapBE16(0x045E), |
| Arabic_Algeria = SkTEndian_SwapBE16(0x1401), |
| Arabic_Bahrain = SkTEndian_SwapBE16(0x3C01), |
| Arabic_Egypt = SkTEndian_SwapBE16(0x0C01), |
| Arabic_Iraq = SkTEndian_SwapBE16(0x0801), |
| Arabic_Jordan = SkTEndian_SwapBE16(0x2C01), |
| Arabic_Kuwait = SkTEndian_SwapBE16(0x3401), |
| Arabic_Lebanon = SkTEndian_SwapBE16(0x3001), |
| Arabic_Libya = SkTEndian_SwapBE16(0x1001), |
| Arabic_Morocco = SkTEndian_SwapBE16(0x1801), |
| Arabic_Oman = SkTEndian_SwapBE16(0x2001), |
| Arabic_Qatar = SkTEndian_SwapBE16(0x4001), |
| Arabic_SaudiArabia = SkTEndian_SwapBE16(0x0401), |
| Arabic_Syria = SkTEndian_SwapBE16(0x2801), |
| Arabic_Tunisia = SkTEndian_SwapBE16(0x1C01), |
| Arabic_UAE = SkTEndian_SwapBE16(0x3801), |
| Arabic_Yemen = SkTEndian_SwapBE16(0x2401), |
| Armenian_Armenia = SkTEndian_SwapBE16(0x042B), |
| Assamese_India = SkTEndian_SwapBE16(0x044D), |
| AzeriCyrillic_Azerbaijan = SkTEndian_SwapBE16(0x082C), |
| AzeriLatin_Azerbaijan = SkTEndian_SwapBE16(0x042C), |
| Bashkir_Russia = SkTEndian_SwapBE16(0x046D), |
| Basque_Basque = SkTEndian_SwapBE16(0x042D), |
| Belarusian_Belarus = SkTEndian_SwapBE16(0x0423), |
| Bengali_Bangladesh = SkTEndian_SwapBE16(0x0845), |
| Bengali_India = SkTEndian_SwapBE16(0x0445), |
| BosnianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x201A), |
| BosnianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x141A), |
| Breton_France = SkTEndian_SwapBE16(0x047E), |
| Bulgarian_Bulgaria = SkTEndian_SwapBE16(0x0402), |
| Catalan_Catalan = SkTEndian_SwapBE16(0x0403), |
| Chinese_HongKongSAR = SkTEndian_SwapBE16(0x0C04), |
| Chinese_MacaoSAR = SkTEndian_SwapBE16(0x1404), |
| Chinese_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0804), |
| Chinese_Singapore = SkTEndian_SwapBE16(0x1004), |
| Chinese_Taiwan = SkTEndian_SwapBE16(0x0404), |
| Corsican_France = SkTEndian_SwapBE16(0x0483), |
| Croatian_Croatia = SkTEndian_SwapBE16(0x041A), |
| CroatianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x101A), |
| Czech_CzechRepublic = SkTEndian_SwapBE16(0x0405), |
| Danish_Denmark = SkTEndian_SwapBE16(0x0406), |
| Dari_Afghanistan = SkTEndian_SwapBE16(0x048C), |
| Divehi_Maldives = SkTEndian_SwapBE16(0x0465), |
| Dutch_Belgium = SkTEndian_SwapBE16(0x0813), |
| Dutch_Netherlands = SkTEndian_SwapBE16(0x0413), |
| English_Australia = SkTEndian_SwapBE16(0x0C09), |
| English_Belize = SkTEndian_SwapBE16(0x2809), |
| English_Canada = SkTEndian_SwapBE16(0x1009), |
| English_Caribbean = SkTEndian_SwapBE16(0x2409), |
| English_India = SkTEndian_SwapBE16(0x4009), |
| English_Ireland = SkTEndian_SwapBE16(0x1809), |
| English_Jamaica = SkTEndian_SwapBE16(0x2009), |
| English_Malaysia = SkTEndian_SwapBE16(0x4409), |
| English_NewZealand = SkTEndian_SwapBE16(0x1409), |
| English_RepublicOfThePhilippines = SkTEndian_SwapBE16(0x3409), |
| English_Singapore = SkTEndian_SwapBE16(0x4809), |
| English_SouthAfrica = SkTEndian_SwapBE16(0x1C09), |
| English_TrinidadAndTobago = SkTEndian_SwapBE16(0x2C09), |
| English_UnitedKingdom = SkTEndian_SwapBE16(0x0809), |
| English_UnitedStates = SkTEndian_SwapBE16(0x0409), |
| English_Zimbabwe = SkTEndian_SwapBE16(0x3009), |
| Estonian_Estonia = SkTEndian_SwapBE16(0x0425), |
| Faroese_FaroeIslands = SkTEndian_SwapBE16(0x0438), |
| Filipino_Philippines = SkTEndian_SwapBE16(0x0464), |
| Finnish_Finland = SkTEndian_SwapBE16(0x040B), |
| French_Belgium = SkTEndian_SwapBE16(0x080C), |
| French_Canada = SkTEndian_SwapBE16(0x0C0C), |
| French_France = SkTEndian_SwapBE16(0x040C), |
| French_Luxembourg = SkTEndian_SwapBE16(0x140c), |
| French_PrincipalityOfMonoco = SkTEndian_SwapBE16(0x180C), |
| French_Switzerland = SkTEndian_SwapBE16(0x100C), |
| Frisian_Netherlands = SkTEndian_SwapBE16(0x0462), |
| Galician_Galician = SkTEndian_SwapBE16(0x0456), |
| Georgian_Georgia = SkTEndian_SwapBE16(0x0437), |
| German_Austria = SkTEndian_SwapBE16(0x0C07), |
| German_Germany = SkTEndian_SwapBE16(0x0407), |
| German_Liechtenstein = SkTEndian_SwapBE16(0x1407), |
| German_Luxembourg = SkTEndian_SwapBE16(0x1007), |
| German_Switzerland = SkTEndian_SwapBE16(0x0807), |
| Greek_Greece = SkTEndian_SwapBE16(0x0408), |
| Greenlandic_Greenland = SkTEndian_SwapBE16(0x046F), |
| Gujarati_India = SkTEndian_SwapBE16(0x0447), |
| HausaLatin_Nigeria = SkTEndian_SwapBE16(0x0468), |
| Hebrew_Israel = SkTEndian_SwapBE16(0x040D), |
| Hindi_India = SkTEndian_SwapBE16(0x0439), |
| Hungarian_Hungary = SkTEndian_SwapBE16(0x040E), |
| Icelandic_Iceland = SkTEndian_SwapBE16(0x040F), |
| Igbo_Nigeria = SkTEndian_SwapBE16(0x0470), |
| Indonesian_Indonesia = SkTEndian_SwapBE16(0x0421), |
| Inuktitut_Canada = SkTEndian_SwapBE16(0x045D), |
| InuktitutLatin_Canada = SkTEndian_SwapBE16(0x085D), |
| Irish_Ireland = SkTEndian_SwapBE16(0x083C), |
| isiXhosa_SouthAfrica = SkTEndian_SwapBE16(0x0434), |
| isiZulu_SouthAfrica = SkTEndian_SwapBE16(0x0435), |
| Italian_Italy = SkTEndian_SwapBE16(0x0410), |
| Italian_Switzerland = SkTEndian_SwapBE16(0x0810), |
| Japanese_Japan = SkTEndian_SwapBE16(0x0411), |
| Kannada_India = SkTEndian_SwapBE16(0x044B), |
| Kazakh_Kazakhstan = SkTEndian_SwapBE16(0x043F), |
| Khmer_Cambodia = SkTEndian_SwapBE16(0x0453), |
| Kiche_Guatemala = SkTEndian_SwapBE16(0x0486), |
| Kinyarwanda_Rwanda = SkTEndian_SwapBE16(0x0487), |
| Kiswahili_Kenya = SkTEndian_SwapBE16(0x0441), |
| Konkani_India = SkTEndian_SwapBE16(0x0457), |
| Korean_Korea = SkTEndian_SwapBE16(0x0412), |
| Kyrgyz_Kyrgyzstan = SkTEndian_SwapBE16(0x0440), |
| Lao_LaoPDR = SkTEndian_SwapBE16(0x0454), |
| Latvian_Latvia = SkTEndian_SwapBE16(0x0426), |
| Lithuanian_Lithuania = SkTEndian_SwapBE16(0x0427), |
| LowerSorbian_Germany = SkTEndian_SwapBE16(0x082E), |
| Luxembourgish_Luxembourg = SkTEndian_SwapBE16(0x046E), |
| MacedonianFYROM_FormerYugoslavRepublicOfMacedonia = SkTEndian_SwapBE16(0x042F), |
| Malay_BruneiDarussalam = SkTEndian_SwapBE16(0x083E), |
| Malay_Malaysia = SkTEndian_SwapBE16(0x043E), |
| Malayalam_India = SkTEndian_SwapBE16(0x044C), |
| Maltese_Malta = SkTEndian_SwapBE16(0x043A), |
| Maori_NewZealand = SkTEndian_SwapBE16(0x0481), |
| Mapudungun_Chile = SkTEndian_SwapBE16(0x047A), |
| Marathi_India = SkTEndian_SwapBE16(0x044E), |
| Mohawk_Mohawk = SkTEndian_SwapBE16(0x047C), |
| MongolianCyrillic_Mongolia = SkTEndian_SwapBE16(0x0450), |
| MongolianTraditional_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0850), |
| Nepali_Nepal = SkTEndian_SwapBE16(0x0461), |
| NorwegianBokmal_Norway = SkTEndian_SwapBE16(0x0414), |
| NorwegianNynorsk_Norway = SkTEndian_SwapBE16(0x0814), |
| Occitan_France = SkTEndian_SwapBE16(0x0482), |
| Odia_India = SkTEndian_SwapBE16(0x0448), |
| Pashto_Afghanistan = SkTEndian_SwapBE16(0x0463), |
| Polish_Poland = SkTEndian_SwapBE16(0x0415), |
| Portuguese_Brazil = SkTEndian_SwapBE16(0x0416), |
| Portuguese_Portugal = SkTEndian_SwapBE16(0x0816), |
| Punjabi_India = SkTEndian_SwapBE16(0x0446), |
| Quechua_Bolivia = SkTEndian_SwapBE16(0x046B), |
| Quechua_Ecuador = SkTEndian_SwapBE16(0x086B), |
| Quechua_Peru = SkTEndian_SwapBE16(0x0C6B), |
| Romanian_Romania = SkTEndian_SwapBE16(0x0418), |
| Romansh_Switzerland = SkTEndian_SwapBE16(0x0417), |
| Russian_Russia = SkTEndian_SwapBE16(0x0419), |
| SamiInari_Finland = SkTEndian_SwapBE16(0x243B), |
| SamiLule_Norway = SkTEndian_SwapBE16(0x103B), |
| SamiLule_Sweden = SkTEndian_SwapBE16(0x143B), |
| SamiNorthern_Finland = SkTEndian_SwapBE16(0x0C3B), |
| SamiNorthern_Norway = SkTEndian_SwapBE16(0x043B), |
| SamiNorthern_Sweden = SkTEndian_SwapBE16(0x083B), |
| SamiSkolt_Finland = SkTEndian_SwapBE16(0x203B), |
| SamiSouthern_Norway = SkTEndian_SwapBE16(0x183B), |
| SamiSouthern_Sweden = SkTEndian_SwapBE16(0x1C3B), |
| Sanskrit_India = SkTEndian_SwapBE16(0x044F), |
| SerbianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x1C1A), |
| SerbianCyrillic_Serbia = SkTEndian_SwapBE16(0x0C1A), |
| SerbianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x181A), |
| SerbianLatin_Serbia = SkTEndian_SwapBE16(0x081A), |
| SesothoSaLeboa_SouthAfrica = SkTEndian_SwapBE16(0x046C), |
| Setswana_SouthAfrica = SkTEndian_SwapBE16(0x0432), |
| Sinhala_SriLanka = SkTEndian_SwapBE16(0x045B), |
| Slovak_Slovakia = SkTEndian_SwapBE16(0x041B), |
| Slovenian_Slovenia = SkTEndian_SwapBE16(0x0424), |
| Spanish_Argentina = SkTEndian_SwapBE16(0x2C0A), |
| Spanish_Bolivia = SkTEndian_SwapBE16(0x400A), |
| Spanish_Chile = SkTEndian_SwapBE16(0x340A), |
| Spanish_Colombia = SkTEndian_SwapBE16(0x240A), |
| Spanish_CostaRica = SkTEndian_SwapBE16(0x140A), |
| Spanish_DominicanRepublic = SkTEndian_SwapBE16(0x1C0A), |
| Spanish_Ecuador = SkTEndian_SwapBE16(0x300A), |
| Spanish_ElSalvador = SkTEndian_SwapBE16(0x440A), |
| Spanish_Guatemala = SkTEndian_SwapBE16(0x100A), |
| Spanish_Honduras = SkTEndian_SwapBE16(0x480A), |
| Spanish_Mexico = SkTEndian_SwapBE16(0x080A), |
| Spanish_Nicaragua = SkTEndian_SwapBE16(0x4C0A), |
| Spanish_Panama = SkTEndian_SwapBE16(0x180A), |
| Spanish_Paraguay = SkTEndian_SwapBE16(0x3C0A), |
| Spanish_Peru = SkTEndian_SwapBE16(0x280A), |
| Spanish_PuertoRico = SkTEndian_SwapBE16(0x500A), |
| SpanishModernSort_Spain = SkTEndian_SwapBE16(0x0C0A), |
| SpanishTraditionalSort_Spain = SkTEndian_SwapBE16(0x040A), |
| Spanish_UnitedStates = SkTEndian_SwapBE16(0x540A), |
| Spanish_Uruguay = SkTEndian_SwapBE16(0x380A), |
| Spanish_Venezuela = SkTEndian_SwapBE16(0x200A), |
| Sweden_Finland = SkTEndian_SwapBE16(0x081D), |
| Swedish_Sweden = SkTEndian_SwapBE16(0x041D), |
| Syriac_Syria = SkTEndian_SwapBE16(0x045A), |
| TajikCyrillic_Tajikistan = SkTEndian_SwapBE16(0x0428), |
| TamazightLatin_Algeria = SkTEndian_SwapBE16(0x085F), |
| Tamil_India = SkTEndian_SwapBE16(0x0449), |
| Tatar_Russia = SkTEndian_SwapBE16(0x0444), |
| Telugu_India = SkTEndian_SwapBE16(0x044A), |
| Thai_Thailand = SkTEndian_SwapBE16(0x041E), |
| Tibetan_PRC = SkTEndian_SwapBE16(0x0451), |
| Turkish_Turkey = SkTEndian_SwapBE16(0x041F), |
| Turkmen_Turkmenistan = SkTEndian_SwapBE16(0x0442), |
| Uighur_PRC = SkTEndian_SwapBE16(0x0480), |
| Ukrainian_Ukraine = SkTEndian_SwapBE16(0x0422), |
| UpperSorbian_Germany = SkTEndian_SwapBE16(0x042E), |
| Urdu_IslamicRepublicOfPakistan = SkTEndian_SwapBE16(0x0420), |
| UzbekCyrillic_Uzbekistan = SkTEndian_SwapBE16(0x0843), |
| UzbekLatin_Uzbekistan = SkTEndian_SwapBE16(0x0443), |
| Vietnamese_Vietnam = SkTEndian_SwapBE16(0x042A), |
| Welsh_UnitedKingdom = SkTEndian_SwapBE16(0x0452), |
| Wolof_Senegal = SkTEndian_SwapBE16(0x0488), |
| Yakut_Russia = SkTEndian_SwapBE16(0x0485), |
| Yi_PRC = SkTEndian_SwapBE16(0x0478), |
| Yoruba_Nigeria = SkTEndian_SwapBE16(0x046A), |
| } value; |
| } windows; |
| } languageID; |
| |
| /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */ |
| union NameID { |
| /** A font specific name id which should be greater than 0xFF. */ |
| SK_OT_USHORT fontSpecific; |
| struct Predefined { |
| enum Value : SK_OT_USHORT { |
| CopyrightNotice = SkTEndian_SwapBE16(0), |
| FontFamilyName = SkTEndian_SwapBE16(1), |
| FontSubfamilyName = SkTEndian_SwapBE16(2), |
| UniqueFontIdentifier = SkTEndian_SwapBE16(3), |
| FullFontName = SkTEndian_SwapBE16(4), |
| VersionString = SkTEndian_SwapBE16(5), //Version <number>.<number> |
| PostscriptName = SkTEndian_SwapBE16(6), //See spec for constraints. |
| Trademark = SkTEndian_SwapBE16(7), |
| ManufacturerName = SkTEndian_SwapBE16(8), |
| Designer = SkTEndian_SwapBE16(9), |
| Description = SkTEndian_SwapBE16(10), |
| URLVendor = SkTEndian_SwapBE16(11), |
| URLDesigner = SkTEndian_SwapBE16(12), |
| LicenseDescription = SkTEndian_SwapBE16(13), |
| LicenseInfoURL = SkTEndian_SwapBE16(14), |
| PreferredFamily = SkTEndian_SwapBE16(16), |
| PreferredSubfamily = SkTEndian_SwapBE16(17), |
| CompatibleFullName = SkTEndian_SwapBE16(18), |
| SampleText = SkTEndian_SwapBE16(19), |
| PostscriptCIDFindfontName = SkTEndian_SwapBE16(20), |
| WWSFamilyName = SkTEndian_SwapBE16(21), |
| WWSSubfamilyName = SkTEndian_SwapBE16(22), |
| } value; |
| } predefined; |
| } nameID; |
| |
| /** The length of the string in SK_OT_BYTEs. */ |
| SK_OT_USHORT length; |
| |
| /** Offset in SK_OT_BYTEs from start of string storage area |
| * (see SkOTTableName::stringOffset). |
| */ |
| SK_OT_USHORT offset; |
| }; //nameRecord[count]; |
| |
| struct Format1Ext { |
| /** The number of languageTagRecords which follow. */ |
| SK_OT_USHORT langTagCount; |
| |
| /** The encoding of a langTagRecord string is always UTF-16BE. |
| * The content should follow IETF specification BCP 47. |
| */ |
| struct LangTagRecord { |
| /** The length of the string in SK_OT_BYTEs. */ |
| SK_OT_USHORT length; |
| |
| /** Offset in SK_OT_BYTEs from start of string storage area |
| * (see SkOTTableName::stringOffset). |
| */ |
| SK_OT_USHORT offset; |
| }; //langTagRecord[langTagCount] |
| }; //format1ext (if format == format_1) |
| |
| class Iterator { |
| public: |
| Iterator(const uint8_t* nameTable, size_t size) |
| : fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(-1) { } |
| Iterator(const uint8_t* nameTable, size_t size, SK_OT_USHORT type) |
| : fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(type) |
| { } |
| |
| void reset(SK_OT_USHORT type) { |
| fIndex = 0; |
| fType = type; |
| } |
| |
| struct Record { |
| SkString name; |
| SkString language; |
| SK_OT_USHORT type; |
| }; |
| bool next(Record&); |
| |
| private: |
| const uint8_t* fNameTable; |
| const size_t fNameTableSize; |
| size_t fIndex; |
| int fType; |
| }; |
| }; |
| |
| #pragma pack(pop) |
| |
| |
| static_assert(sizeof(SkOTTableName) == 6, "sizeof_SkOTTableName_not_6"); |
| static_assert(sizeof(SkOTTableName::Format1Ext) == 2, "sizeof_SkOTTableNameF1_not_2"); |
| static_assert(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, "sizeof_SkOTTableNameLangTagRecord_not_4"); |
| static_assert(sizeof(SkOTTableName::Record) == 12, "sizeof_SkOTTableNameRecord_not_12"); |
| |
| #endif |