/*
 * Copyright 2012 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkOTTable_name_DEFINED
#define SkOTTable_name_DEFINED

#include "SkEndian.h"
#include "SkOTTableTypes.h"
#include "SkString.h"

#pragma pack(push, 1)

struct SkOTTableName {
    static const SK_OT_CHAR TAG0 = 'n';
    static const SK_OT_CHAR TAG1 = 'a';
    static const SK_OT_CHAR TAG2 = 'm';
    static const SK_OT_CHAR TAG3 = 'e';
    static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value;

    SK_OT_USHORT format;
    static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0);
    /** Format 1 was added in OpenType 1.6 (April 2009). */
    static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1);

    /** The number of name records which follow. */
    SK_OT_USHORT count;

    /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */
    SK_OT_USHORT stringOffset;

    struct Record {
        /** The platform ID specifies how to interpret the encoding and language ID. */
        struct PlatformID {
            enum Value : SK_OT_USHORT {
                Unicode = SkTEndian_SwapBE16(0),
                Macintosh = SkTEndian_SwapBE16(1),
                ISO = SkTEndian_SwapBE16(2), // Deprecated, use Unicode instead.
                Windows = SkTEndian_SwapBE16(3),
                Custom = SkTEndian_SwapBE16(4),
            } value;
        } platformID;

        union EncodingID {
            SK_OT_USHORT custom;

            /** Always UTF-16BE. */
            struct Unicode {
                enum Value : SK_OT_USHORT {
                    Unicode10 = SkTEndian_SwapBE16(0),
                    Unicode11 = SkTEndian_SwapBE16(1),
                    ISO10646 = SkTEndian_SwapBE16(2), //deprecated, use Unicode11
                    Unicode20BMP = SkTEndian_SwapBE16(3),
                    Unicode20 = SkTEndian_SwapBE16(4),
                    UnicodeVariationSequences = SkTEndian_SwapBE16(5),
                    UnicodeFull = SkTEndian_SwapBE16(6),
                } value;
            } unicode;

            /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/
             *  for their mappings to unicode.
             *  Name table strings using PlatformID::Macintosh must use Roman.
             */
            struct Macintosh {
                enum Value : SK_OT_USHORT {
                    Roman = SkTEndian_SwapBE16(0),
                    Japanese = SkTEndian_SwapBE16(1),
                    ChineseTraditional = SkTEndian_SwapBE16(2),
                    Korean = SkTEndian_SwapBE16(3),
                    Arabic = SkTEndian_SwapBE16(4),
                    Hebrew = SkTEndian_SwapBE16(5),
                    Greek = SkTEndian_SwapBE16(6),
                    Russian = SkTEndian_SwapBE16(7),
                    RSymbol = SkTEndian_SwapBE16(8),
                    Devanagari = SkTEndian_SwapBE16(9),
                    Gurmukhi = SkTEndian_SwapBE16(10),
                    Gujarati = SkTEndian_SwapBE16(11),
                    Oriya = SkTEndian_SwapBE16(12),
                    Bengali = SkTEndian_SwapBE16(13),
                    Tamil = SkTEndian_SwapBE16(14),
                    Telugu = SkTEndian_SwapBE16(15),
                    Kannada = SkTEndian_SwapBE16(16),
                    Malayalam = SkTEndian_SwapBE16(17),
                    Sinhalese = SkTEndian_SwapBE16(18),
                    Burmese = SkTEndian_SwapBE16(19),
                    Khmer = SkTEndian_SwapBE16(20),
                    Thai = SkTEndian_SwapBE16(21),
                    Laotian = SkTEndian_SwapBE16(22),
                    Georgian = SkTEndian_SwapBE16(23),
                    Armenian = SkTEndian_SwapBE16(24),
                    ChineseSimplified = SkTEndian_SwapBE16(25),
                    Tibetan = SkTEndian_SwapBE16(26),
                    Mongolian = SkTEndian_SwapBE16(27),
                    Geez = SkTEndian_SwapBE16(28),
                    Slavic = SkTEndian_SwapBE16(29),
                    Vietnamese = SkTEndian_SwapBE16(30),
                    Sindhi = SkTEndian_SwapBE16(31),
                    Uninterpreted = SkTEndian_SwapBE16(32),
                } value;
            } macintosh;

            /** Deprecated, use Unicode instead. */
            struct ISO {
                enum Value : SK_OT_USHORT {
                    ASCII7 = SkTEndian_SwapBE16(0),
                    ISO10646 = SkTEndian_SwapBE16(1),
                    ISO88591 = SkTEndian_SwapBE16(2),
                } value;
            } iso;

            /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or
             *  UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually
             *  UTF-16BE.
             */
            struct Windows {
                enum Value : SK_OT_USHORT {
                    Symbol = SkTEndian_SwapBE16(0), // UCS2-BE, but don't use this font to display it's own name.
                    UnicodeBMPUCS2 = SkTEndian_SwapBE16(1), // UCS2-BE, Windows default
                    ShiftJIS = SkTEndian_SwapBE16(2),
                    PRC = SkTEndian_SwapBE16(3),
                    Big5 = SkTEndian_SwapBE16(4),
                    Wansung = SkTEndian_SwapBE16(5),
                    Johab = SkTEndian_SwapBE16(6),
                    UnicodeUCS4 = SkTEndian_SwapBE16(10), // UTF-16BE. It means UCS4 in charmaps.
                } value;
            } windows;
        } encodingID;

        /** LanguageIDs <= 0x7FFF are predefined.
         *  LanguageIDs > 0x7FFF are indexes into the langTagRecord array
         *  (in format 1 name tables, see SkOTTableName::format).
         */
        union LanguageID {
            /** A value greater than 0x7FFF.
             *  languageTagID - 0x8000 is an index into the langTagRecord array.
             */
            SK_OT_USHORT languageTagID;

            /** These are known as Language Designators.
             *  Apple now uses BCP 47 (post OSX10.4), so there will be no new entries.
             */
            struct Macintosh {
                enum Value : SK_OT_USHORT {
                    English = SkTEndian_SwapBE16(0),
                    French = SkTEndian_SwapBE16(1),
                    German = SkTEndian_SwapBE16(2),
                    Italian = SkTEndian_SwapBE16(3),
                    Dutch = SkTEndian_SwapBE16(4),
                    Swedish = SkTEndian_SwapBE16(5),
                    Spanish = SkTEndian_SwapBE16(6),
                    Danish = SkTEndian_SwapBE16(7),
                    Portuguese = SkTEndian_SwapBE16(8),
                    Norwegian = SkTEndian_SwapBE16(9),
                    Hebrew = SkTEndian_SwapBE16(10),
                    Japanese = SkTEndian_SwapBE16(11),
                    Arabic = SkTEndian_SwapBE16(12),
                    Finnish = SkTEndian_SwapBE16(13),
                    Greek = SkTEndian_SwapBE16(14),
                    Icelandic = SkTEndian_SwapBE16(15),
                    Maltese = SkTEndian_SwapBE16(16),
                    Turkish = SkTEndian_SwapBE16(17),
                    Croatian = SkTEndian_SwapBE16(18),
                    ChineseTraditional = SkTEndian_SwapBE16(19),
                    Urdu = SkTEndian_SwapBE16(20),
                    Hindi = SkTEndian_SwapBE16(21),
                    Thai = SkTEndian_SwapBE16(22),
                    Korean = SkTEndian_SwapBE16(23),
                    Lithuanian = SkTEndian_SwapBE16(24),
                    Polish = SkTEndian_SwapBE16(25),
                    Hungarian = SkTEndian_SwapBE16(26),
                    Estonian = SkTEndian_SwapBE16(27),
                    Latvian = SkTEndian_SwapBE16(28),
                    Sami = SkTEndian_SwapBE16(29),
                    Faroese = SkTEndian_SwapBE16(30),
                    Farsi_Persian = SkTEndian_SwapBE16(31),
                    Russian = SkTEndian_SwapBE16(32),
                    ChineseSimplified = SkTEndian_SwapBE16(33),
                    Flemish = SkTEndian_SwapBE16(34),
                    IrishGaelic = SkTEndian_SwapBE16(35),
                    Albanian = SkTEndian_SwapBE16(36),
                    Romanian = SkTEndian_SwapBE16(37),
                    Czech = SkTEndian_SwapBE16(38),
                    Slovak = SkTEndian_SwapBE16(39),
                    Slovenian = SkTEndian_SwapBE16(40),
                    Yiddish = SkTEndian_SwapBE16(41),
                    Serbian = SkTEndian_SwapBE16(42),
                    Macedonian = SkTEndian_SwapBE16(43),
                    Bulgarian = SkTEndian_SwapBE16(44),
                    Ukrainian = SkTEndian_SwapBE16(45),
                    Byelorussian = SkTEndian_SwapBE16(46),
                    Uzbek = SkTEndian_SwapBE16(47),
                    Kazakh = SkTEndian_SwapBE16(48),
                    AzerbaijaniCyrillic = SkTEndian_SwapBE16(49),
                    AzerbaijaniArabic = SkTEndian_SwapBE16(50),
                    Armenian = SkTEndian_SwapBE16(51),
                    Georgian = SkTEndian_SwapBE16(52),
                    Moldavian = SkTEndian_SwapBE16(53),
                    Kirghiz = SkTEndian_SwapBE16(54),
                    Tajiki = SkTEndian_SwapBE16(55),
                    Turkmen = SkTEndian_SwapBE16(56),
                    MongolianTraditional = SkTEndian_SwapBE16(57),
                    MongolianCyrillic = SkTEndian_SwapBE16(58),
                    Pashto = SkTEndian_SwapBE16(59),
                    Kurdish = SkTEndian_SwapBE16(60),
                    Kashmiri = SkTEndian_SwapBE16(61),
                    Sindhi = SkTEndian_SwapBE16(62),
                    Tibetan = SkTEndian_SwapBE16(63),
                    Nepali = SkTEndian_SwapBE16(64),
                    Sanskrit = SkTEndian_SwapBE16(65),
                    Marathi = SkTEndian_SwapBE16(66),
                    Bengali = SkTEndian_SwapBE16(67),
                    Assamese = SkTEndian_SwapBE16(68),
                    Gujarati = SkTEndian_SwapBE16(69),
                    Punjabi = SkTEndian_SwapBE16(70),
                    Oriya = SkTEndian_SwapBE16(71),
                    Malayalam = SkTEndian_SwapBE16(72),
                    Kannada = SkTEndian_SwapBE16(73),
                    Tamil = SkTEndian_SwapBE16(74),
                    Telugu = SkTEndian_SwapBE16(75),
                    Sinhalese = SkTEndian_SwapBE16(76),
                    Burmese = SkTEndian_SwapBE16(77),
                    Khmer = SkTEndian_SwapBE16(78),
                    Lao = SkTEndian_SwapBE16(79),
                    Vietnamese = SkTEndian_SwapBE16(80),
                    Indonesian = SkTEndian_SwapBE16(81),
                    Tagalong = SkTEndian_SwapBE16(82),
                    MalayRoman = SkTEndian_SwapBE16(83),
                    MalayArabic = SkTEndian_SwapBE16(84),
                    Amharic = SkTEndian_SwapBE16(85),
                    Tigrinya = SkTEndian_SwapBE16(86),
                    Galla = SkTEndian_SwapBE16(87),
                    Somali = SkTEndian_SwapBE16(88),
                    Swahili = SkTEndian_SwapBE16(89),
                    Kinyarwanda_Ruanda = SkTEndian_SwapBE16(90),
                    Rundi = SkTEndian_SwapBE16(91),
                    Nyanja_Chewa = SkTEndian_SwapBE16(92),
                    Malagasy = SkTEndian_SwapBE16(93),
                    Esperanto = SkTEndian_SwapBE16(94),
                    Welsh = SkTEndian_SwapBE16(128),
                    Basque = SkTEndian_SwapBE16(129),
                    Catalan = SkTEndian_SwapBE16(130),
                    Latin = SkTEndian_SwapBE16(131),
                    Quenchua = SkTEndian_SwapBE16(132),
                    Guarani = SkTEndian_SwapBE16(133),
                    Aymara = SkTEndian_SwapBE16(134),
                    Tatar = SkTEndian_SwapBE16(135),
                    Uighur = SkTEndian_SwapBE16(136),
                    Dzongkha = SkTEndian_SwapBE16(137),
                    JavaneseRoman = SkTEndian_SwapBE16(138),
                    SundaneseRoman = SkTEndian_SwapBE16(139),
                    Galician = SkTEndian_SwapBE16(140),
                    Afrikaans = SkTEndian_SwapBE16(141),
                    Breton = SkTEndian_SwapBE16(142),
                    Inuktitut = SkTEndian_SwapBE16(143),
                    ScottishGaelic = SkTEndian_SwapBE16(144),
                    ManxGaelic = SkTEndian_SwapBE16(145),
                    IrishGaelicWithLenition = SkTEndian_SwapBE16(146),
                    Tongan = SkTEndian_SwapBE16(147),
                    GreekPolytonic = SkTEndian_SwapBE16(148),
                    Greenlandic = SkTEndian_SwapBE16(149),
                    AzerbaijaniRoman = SkTEndian_SwapBE16(150),
                } value;
            } macintosh;

            /** These are known as LCIDs.
             *  On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID.
             */
            struct Windows {
                enum Value : SK_OT_USHORT {
                    Afrikaans_SouthAfrica = SkTEndian_SwapBE16(0x0436),
                    Albanian_Albania = SkTEndian_SwapBE16(0x041C),
                    Alsatian_France = SkTEndian_SwapBE16(0x0484),
                    Amharic_Ethiopia = SkTEndian_SwapBE16(0x045E),
                    Arabic_Algeria = SkTEndian_SwapBE16(0x1401),
                    Arabic_Bahrain = SkTEndian_SwapBE16(0x3C01),
                    Arabic_Egypt = SkTEndian_SwapBE16(0x0C01),
                    Arabic_Iraq = SkTEndian_SwapBE16(0x0801),
                    Arabic_Jordan = SkTEndian_SwapBE16(0x2C01),
                    Arabic_Kuwait = SkTEndian_SwapBE16(0x3401),
                    Arabic_Lebanon = SkTEndian_SwapBE16(0x3001),
                    Arabic_Libya = SkTEndian_SwapBE16(0x1001),
                    Arabic_Morocco = SkTEndian_SwapBE16(0x1801),
                    Arabic_Oman = SkTEndian_SwapBE16(0x2001),
                    Arabic_Qatar = SkTEndian_SwapBE16(0x4001),
                    Arabic_SaudiArabia = SkTEndian_SwapBE16(0x0401),
                    Arabic_Syria = SkTEndian_SwapBE16(0x2801),
                    Arabic_Tunisia = SkTEndian_SwapBE16(0x1C01),
                    Arabic_UAE = SkTEndian_SwapBE16(0x3801),
                    Arabic_Yemen = SkTEndian_SwapBE16(0x2401),
                    Armenian_Armenia = SkTEndian_SwapBE16(0x042B),
                    Assamese_India = SkTEndian_SwapBE16(0x044D),
                    AzeriCyrillic_Azerbaijan = SkTEndian_SwapBE16(0x082C),
                    AzeriLatin_Azerbaijan = SkTEndian_SwapBE16(0x042C),
                    Bashkir_Russia = SkTEndian_SwapBE16(0x046D),
                    Basque_Basque = SkTEndian_SwapBE16(0x042D),
                    Belarusian_Belarus = SkTEndian_SwapBE16(0x0423),
                    Bengali_Bangladesh = SkTEndian_SwapBE16(0x0845),
                    Bengali_India = SkTEndian_SwapBE16(0x0445),
                    BosnianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x201A),
                    BosnianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x141A),
                    Breton_France = SkTEndian_SwapBE16(0x047E),
                    Bulgarian_Bulgaria = SkTEndian_SwapBE16(0x0402),
                    Catalan_Catalan = SkTEndian_SwapBE16(0x0403),
                    Chinese_HongKongSAR = SkTEndian_SwapBE16(0x0C04),
                    Chinese_MacaoSAR = SkTEndian_SwapBE16(0x1404),
                    Chinese_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0804),
                    Chinese_Singapore = SkTEndian_SwapBE16(0x1004),
                    Chinese_Taiwan = SkTEndian_SwapBE16(0x0404),
                    Corsican_France = SkTEndian_SwapBE16(0x0483),
                    Croatian_Croatia = SkTEndian_SwapBE16(0x041A),
                    CroatianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x101A),
                    Czech_CzechRepublic = SkTEndian_SwapBE16(0x0405),
                    Danish_Denmark = SkTEndian_SwapBE16(0x0406),
                    Dari_Afghanistan = SkTEndian_SwapBE16(0x048C),
                    Divehi_Maldives = SkTEndian_SwapBE16(0x0465),
                    Dutch_Belgium = SkTEndian_SwapBE16(0x0813),
                    Dutch_Netherlands = SkTEndian_SwapBE16(0x0413),
                    English_Australia = SkTEndian_SwapBE16(0x0C09),
                    English_Belize = SkTEndian_SwapBE16(0x2809),
                    English_Canada = SkTEndian_SwapBE16(0x1009),
                    English_Caribbean = SkTEndian_SwapBE16(0x2409),
                    English_India = SkTEndian_SwapBE16(0x4009),
                    English_Ireland = SkTEndian_SwapBE16(0x1809),
                    English_Jamaica = SkTEndian_SwapBE16(0x2009),
                    English_Malaysia = SkTEndian_SwapBE16(0x4409),
                    English_NewZealand = SkTEndian_SwapBE16(0x1409),
                    English_RepublicOfThePhilippines = SkTEndian_SwapBE16(0x3409),
                    English_Singapore = SkTEndian_SwapBE16(0x4809),
                    English_SouthAfrica = SkTEndian_SwapBE16(0x1C09),
                    English_TrinidadAndTobago = SkTEndian_SwapBE16(0x2C09),
                    English_UnitedKingdom = SkTEndian_SwapBE16(0x0809),
                    English_UnitedStates = SkTEndian_SwapBE16(0x0409),
                    English_Zimbabwe = SkTEndian_SwapBE16(0x3009),
                    Estonian_Estonia = SkTEndian_SwapBE16(0x0425),
                    Faroese_FaroeIslands = SkTEndian_SwapBE16(0x0438),
                    Filipino_Philippines = SkTEndian_SwapBE16(0x0464),
                    Finnish_Finland = SkTEndian_SwapBE16(0x040B),
                    French_Belgium = SkTEndian_SwapBE16(0x080C),
                    French_Canada = SkTEndian_SwapBE16(0x0C0C),
                    French_France = SkTEndian_SwapBE16(0x040C),
                    French_Luxembourg = SkTEndian_SwapBE16(0x140c),
                    French_PrincipalityOfMonoco = SkTEndian_SwapBE16(0x180C),
                    French_Switzerland = SkTEndian_SwapBE16(0x100C),
                    Frisian_Netherlands = SkTEndian_SwapBE16(0x0462),
                    Galician_Galician = SkTEndian_SwapBE16(0x0456),
                    Georgian_Georgia = SkTEndian_SwapBE16(0x0437),
                    German_Austria = SkTEndian_SwapBE16(0x0C07),
                    German_Germany = SkTEndian_SwapBE16(0x0407),
                    German_Liechtenstein = SkTEndian_SwapBE16(0x1407),
                    German_Luxembourg = SkTEndian_SwapBE16(0x1007),
                    German_Switzerland = SkTEndian_SwapBE16(0x0807),
                    Greek_Greece = SkTEndian_SwapBE16(0x0408),
                    Greenlandic_Greenland = SkTEndian_SwapBE16(0x046F),
                    Gujarati_India = SkTEndian_SwapBE16(0x0447),
                    HausaLatin_Nigeria = SkTEndian_SwapBE16(0x0468),
                    Hebrew_Israel = SkTEndian_SwapBE16(0x040D),
                    Hindi_India = SkTEndian_SwapBE16(0x0439),
                    Hungarian_Hungary = SkTEndian_SwapBE16(0x040E),
                    Icelandic_Iceland = SkTEndian_SwapBE16(0x040F),
                    Igbo_Nigeria = SkTEndian_SwapBE16(0x0470),
                    Indonesian_Indonesia = SkTEndian_SwapBE16(0x0421),
                    Inuktitut_Canada = SkTEndian_SwapBE16(0x045D),
                    InuktitutLatin_Canada = SkTEndian_SwapBE16(0x085D),
                    Irish_Ireland = SkTEndian_SwapBE16(0x083C),
                    isiXhosa_SouthAfrica = SkTEndian_SwapBE16(0x0434),
                    isiZulu_SouthAfrica = SkTEndian_SwapBE16(0x0435),
                    Italian_Italy = SkTEndian_SwapBE16(0x0410),
                    Italian_Switzerland = SkTEndian_SwapBE16(0x0810),
                    Japanese_Japan = SkTEndian_SwapBE16(0x0411),
                    Kannada_India = SkTEndian_SwapBE16(0x044B),
                    Kazakh_Kazakhstan = SkTEndian_SwapBE16(0x043F),
                    Khmer_Cambodia = SkTEndian_SwapBE16(0x0453),
                    Kiche_Guatemala = SkTEndian_SwapBE16(0x0486),
                    Kinyarwanda_Rwanda = SkTEndian_SwapBE16(0x0487),
                    Kiswahili_Kenya = SkTEndian_SwapBE16(0x0441),
                    Konkani_India = SkTEndian_SwapBE16(0x0457),
                    Korean_Korea = SkTEndian_SwapBE16(0x0412),
                    Kyrgyz_Kyrgyzstan = SkTEndian_SwapBE16(0x0440),
                    Lao_LaoPDR = SkTEndian_SwapBE16(0x0454),
                    Latvian_Latvia = SkTEndian_SwapBE16(0x0426),
                    Lithuanian_Lithuania = SkTEndian_SwapBE16(0x0427),
                    LowerSorbian_Germany = SkTEndian_SwapBE16(0x082E),
                    Luxembourgish_Luxembourg = SkTEndian_SwapBE16(0x046E),
                    MacedonianFYROM_FormerYugoslavRepublicOfMacedonia = SkTEndian_SwapBE16(0x042F),
                    Malay_BruneiDarussalam = SkTEndian_SwapBE16(0x083E),
                    Malay_Malaysia = SkTEndian_SwapBE16(0x043E),
                    Malayalam_India = SkTEndian_SwapBE16(0x044C),
                    Maltese_Malta = SkTEndian_SwapBE16(0x043A),
                    Maori_NewZealand = SkTEndian_SwapBE16(0x0481),
                    Mapudungun_Chile = SkTEndian_SwapBE16(0x047A),
                    Marathi_India = SkTEndian_SwapBE16(0x044E),
                    Mohawk_Mohawk = SkTEndian_SwapBE16(0x047C),
                    MongolianCyrillic_Mongolia = SkTEndian_SwapBE16(0x0450),
                    MongolianTraditional_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0850),
                    Nepali_Nepal = SkTEndian_SwapBE16(0x0461),
                    NorwegianBokmal_Norway = SkTEndian_SwapBE16(0x0414),
                    NorwegianNynorsk_Norway = SkTEndian_SwapBE16(0x0814),
                    Occitan_France = SkTEndian_SwapBE16(0x0482),
                    Odia_India = SkTEndian_SwapBE16(0x0448),
                    Pashto_Afghanistan = SkTEndian_SwapBE16(0x0463),
                    Polish_Poland = SkTEndian_SwapBE16(0x0415),
                    Portuguese_Brazil = SkTEndian_SwapBE16(0x0416),
                    Portuguese_Portugal = SkTEndian_SwapBE16(0x0816),
                    Punjabi_India = SkTEndian_SwapBE16(0x0446),
                    Quechua_Bolivia = SkTEndian_SwapBE16(0x046B),
                    Quechua_Ecuador = SkTEndian_SwapBE16(0x086B),
                    Quechua_Peru = SkTEndian_SwapBE16(0x0C6B),
                    Romanian_Romania = SkTEndian_SwapBE16(0x0418),
                    Romansh_Switzerland = SkTEndian_SwapBE16(0x0417),
                    Russian_Russia = SkTEndian_SwapBE16(0x0419),
                    SamiInari_Finland = SkTEndian_SwapBE16(0x243B),
                    SamiLule_Norway = SkTEndian_SwapBE16(0x103B),
                    SamiLule_Sweden = SkTEndian_SwapBE16(0x143B),
                    SamiNorthern_Finland = SkTEndian_SwapBE16(0x0C3B),
                    SamiNorthern_Norway = SkTEndian_SwapBE16(0x043B),
                    SamiNorthern_Sweden = SkTEndian_SwapBE16(0x083B),
                    SamiSkolt_Finland = SkTEndian_SwapBE16(0x203B),
                    SamiSouthern_Norway = SkTEndian_SwapBE16(0x183B),
                    SamiSouthern_Sweden = SkTEndian_SwapBE16(0x1C3B),
                    Sanskrit_India = SkTEndian_SwapBE16(0x044F),
                    SerbianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x1C1A),
                    SerbianCyrillic_Serbia = SkTEndian_SwapBE16(0x0C1A),
                    SerbianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x181A),
                    SerbianLatin_Serbia = SkTEndian_SwapBE16(0x081A),
                    SesothoSaLeboa_SouthAfrica = SkTEndian_SwapBE16(0x046C),
                    Setswana_SouthAfrica = SkTEndian_SwapBE16(0x0432),
                    Sinhala_SriLanka = SkTEndian_SwapBE16(0x045B),
                    Slovak_Slovakia = SkTEndian_SwapBE16(0x041B),
                    Slovenian_Slovenia = SkTEndian_SwapBE16(0x0424),
                    Spanish_Argentina = SkTEndian_SwapBE16(0x2C0A),
                    Spanish_Bolivia = SkTEndian_SwapBE16(0x400A),
                    Spanish_Chile = SkTEndian_SwapBE16(0x340A),
                    Spanish_Colombia = SkTEndian_SwapBE16(0x240A),
                    Spanish_CostaRica = SkTEndian_SwapBE16(0x140A),
                    Spanish_DominicanRepublic = SkTEndian_SwapBE16(0x1C0A),
                    Spanish_Ecuador = SkTEndian_SwapBE16(0x300A),
                    Spanish_ElSalvador = SkTEndian_SwapBE16(0x440A),
                    Spanish_Guatemala = SkTEndian_SwapBE16(0x100A),
                    Spanish_Honduras = SkTEndian_SwapBE16(0x480A),
                    Spanish_Mexico = SkTEndian_SwapBE16(0x080A),
                    Spanish_Nicaragua = SkTEndian_SwapBE16(0x4C0A),
                    Spanish_Panama = SkTEndian_SwapBE16(0x180A),
                    Spanish_Paraguay = SkTEndian_SwapBE16(0x3C0A),
                    Spanish_Peru = SkTEndian_SwapBE16(0x280A),
                    Spanish_PuertoRico = SkTEndian_SwapBE16(0x500A),
                    SpanishModernSort_Spain = SkTEndian_SwapBE16(0x0C0A),
                    SpanishTraditionalSort_Spain = SkTEndian_SwapBE16(0x040A),
                    Spanish_UnitedStates = SkTEndian_SwapBE16(0x540A),
                    Spanish_Uruguay = SkTEndian_SwapBE16(0x380A),
                    Spanish_Venezuela = SkTEndian_SwapBE16(0x200A),
                    Sweden_Finland = SkTEndian_SwapBE16(0x081D),
                    Swedish_Sweden = SkTEndian_SwapBE16(0x041D),
                    Syriac_Syria = SkTEndian_SwapBE16(0x045A),
                    TajikCyrillic_Tajikistan = SkTEndian_SwapBE16(0x0428),
                    TamazightLatin_Algeria = SkTEndian_SwapBE16(0x085F),
                    Tamil_India = SkTEndian_SwapBE16(0x0449),
                    Tatar_Russia = SkTEndian_SwapBE16(0x0444),
                    Telugu_India = SkTEndian_SwapBE16(0x044A),
                    Thai_Thailand = SkTEndian_SwapBE16(0x041E),
                    Tibetan_PRC = SkTEndian_SwapBE16(0x0451),
                    Turkish_Turkey = SkTEndian_SwapBE16(0x041F),
                    Turkmen_Turkmenistan = SkTEndian_SwapBE16(0x0442),
                    Uighur_PRC = SkTEndian_SwapBE16(0x0480),
                    Ukrainian_Ukraine = SkTEndian_SwapBE16(0x0422),
                    UpperSorbian_Germany = SkTEndian_SwapBE16(0x042E),
                    Urdu_IslamicRepublicOfPakistan = SkTEndian_SwapBE16(0x0420),
                    UzbekCyrillic_Uzbekistan = SkTEndian_SwapBE16(0x0843),
                    UzbekLatin_Uzbekistan = SkTEndian_SwapBE16(0x0443),
                    Vietnamese_Vietnam = SkTEndian_SwapBE16(0x042A),
                    Welsh_UnitedKingdom = SkTEndian_SwapBE16(0x0452),
                    Wolof_Senegal = SkTEndian_SwapBE16(0x0488),
                    Yakut_Russia = SkTEndian_SwapBE16(0x0485),
                    Yi_PRC = SkTEndian_SwapBE16(0x0478),
                    Yoruba_Nigeria = SkTEndian_SwapBE16(0x046A),
                } value;
            } windows;
        } languageID;

        /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */
        union NameID {
           /** A font specific name id which should be greater than 0xFF. */
           SK_OT_USHORT fontSpecific;
           struct Predefined {
                enum Value : SK_OT_USHORT {
                    CopyrightNotice = SkTEndian_SwapBE16(0),
                    FontFamilyName = SkTEndian_SwapBE16(1),
                    FontSubfamilyName = SkTEndian_SwapBE16(2),
                    UniqueFontIdentifier = SkTEndian_SwapBE16(3),
                    FullFontName = SkTEndian_SwapBE16(4),
                    VersionString = SkTEndian_SwapBE16(5), //Version <number>.<number>
                    PostscriptName = SkTEndian_SwapBE16(6), //See spec for constraints.
                    Trademark = SkTEndian_SwapBE16(7),
                    ManufacturerName = SkTEndian_SwapBE16(8),
                    Designer = SkTEndian_SwapBE16(9),
                    Description = SkTEndian_SwapBE16(10),
                    URLVendor = SkTEndian_SwapBE16(11),
                    URLDesigner = SkTEndian_SwapBE16(12),
                    LicenseDescription = SkTEndian_SwapBE16(13),
                    LicenseInfoURL = SkTEndian_SwapBE16(14),
                    PreferredFamily = SkTEndian_SwapBE16(16),
                    PreferredSubfamily = SkTEndian_SwapBE16(17),
                    CompatibleFullName = SkTEndian_SwapBE16(18),
                    SampleText = SkTEndian_SwapBE16(19),
                    PostscriptCIDFindfontName = SkTEndian_SwapBE16(20),
                    WWSFamilyName = SkTEndian_SwapBE16(21),
                    WWSSubfamilyName = SkTEndian_SwapBE16(22),
                } value;
            } predefined;
        } nameID;

        /** The length of the string in SK_OT_BYTEs. */
        SK_OT_USHORT length;

        /** Offset in SK_OT_BYTEs from start of string storage area
         *  (see SkOTTableName::stringOffset).
         */
        SK_OT_USHORT offset;
    }; //nameRecord[count];

    struct Format1Ext {
        /** The number of languageTagRecords which follow. */
        SK_OT_USHORT langTagCount;

        /** The encoding of a langTagRecord string is always UTF-16BE.
         *  The content should follow IETF specification BCP 47.
         */
        struct LangTagRecord {
            /** The length of the string in SK_OT_BYTEs. */
            SK_OT_USHORT length;

            /** Offset in SK_OT_BYTEs from start of string storage area
             *  (see SkOTTableName::stringOffset).
             */
            SK_OT_USHORT offset;
        }; //langTagRecord[langTagCount]
    }; //format1ext (if format == format_1)

    class Iterator {
    public:
        Iterator(const uint8_t* nameTable, size_t size)
            : fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(-1) { }
        Iterator(const uint8_t* nameTable, size_t size, SK_OT_USHORT type)
            : fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(type)
        { }

        void reset(SK_OT_USHORT type) {
            fIndex = 0;
            fType = type;
        }

        struct Record {
            SkString name;
            SkString language;
            SK_OT_USHORT type;
        };
        bool next(Record&);

    private:
        const uint8_t* fNameTable;
        const size_t fNameTableSize;
        size_t fIndex;
        int fType;
    };
};

#pragma pack(pop)


static_assert(sizeof(SkOTTableName) == 6, "sizeof_SkOTTableName_not_6");
static_assert(sizeof(SkOTTableName::Format1Ext) == 2, "sizeof_SkOTTableNameF1_not_2");
static_assert(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, "sizeof_SkOTTableNameLangTagRecord_not_4");
static_assert(sizeof(SkOTTableName::Record) == 12, "sizeof_SkOTTableNameRecord_not_12");

#endif
