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