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