/*
 * 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 "include/core/SkString.h"
#include "src/core/SkEndian.h"
#include "src/sfnt/SkOTTableTypes.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
