18ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com/*
28ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com * Copyright 2012 Google Inc.
38ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com *
48ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com * Use of this source code is governed by a BSD-style license that can be
58ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com * found in the LICENSE file.
68ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com */
78ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
88ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#ifndef SkOTTable_name_DEFINED
98ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#define SkOTTable_name_DEFINED
108ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
118ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#include "SkEndian.h"
128ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#include "SkOTTableTypes.h"
1307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com#include "SkString.h"
148ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
158ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#pragma pack(push, 1)
168ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
178ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.comstruct SkOTTableName {
18ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com    static const SK_OT_CHAR TAG0 = 'n';
19ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com    static const SK_OT_CHAR TAG1 = 'a';
20ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com    static const SK_OT_CHAR TAG2 = 'm';
21ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com    static const SK_OT_CHAR TAG3 = 'e';
22ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com    static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value;
23ec95a4ae45e9bff1a92627372fd771b389813fecbungeman@google.com
248ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com    SK_OT_USHORT format;
258ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com    static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0);
2607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /** Format 1 was added in OpenType 1.6 (April 2009). */
278ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com    static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1);
2807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
2907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /** The number of name records which follow. */
308ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com    SK_OT_USHORT count;
318ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
3207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */
3307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    SK_OT_USHORT stringOffset;
348ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
3507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    struct Record {
3607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** The platform ID specifies how to interpret the encoding and language ID. */
3707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        struct PlatformID {
388fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman            enum Value : SK_OT_USHORT {
398fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                Unicode = SkTEndian_SwapBE16(0),
408fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                Macintosh = SkTEndian_SwapBE16(1),
418fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                ISO = SkTEndian_SwapBE16(2), // Deprecated, use Unicode instead.
428fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                Windows = SkTEndian_SwapBE16(3),
438fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                Custom = SkTEndian_SwapBE16(4),
448fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman            } value;
4507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        } platformID;
4607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
4707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        union EncodingID {
4807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SK_OT_USHORT custom;
4907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
5007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** Always UTF-16BE. */
5107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct Unicode {
528fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
538fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Unicode10 = SkTEndian_SwapBE16(0),
548fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Unicode11 = SkTEndian_SwapBE16(1),
558fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ISO10646 = SkTEndian_SwapBE16(2), //deprecated, use Unicode11
568fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Unicode20BMP = SkTEndian_SwapBE16(3),
578fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Unicode20 = SkTEndian_SwapBE16(4),
588fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UnicodeVariationSequences = SkTEndian_SwapBE16(5),
598fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UnicodeFull = SkTEndian_SwapBE16(6),
608fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
6107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } unicode;
6207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
6307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/
6407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  for their mappings to unicode.
6507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  Name table strings using PlatformID::Macintosh must use Roman.
6607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
6707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct Macintosh {
688fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
698fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Roman = SkTEndian_SwapBE16(0),
708fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Japanese = SkTEndian_SwapBE16(1),
718fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ChineseTraditional = SkTEndian_SwapBE16(2),
728fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Korean = SkTEndian_SwapBE16(3),
738fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic = SkTEndian_SwapBE16(4),
748fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hebrew = SkTEndian_SwapBE16(5),
758fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Greek = SkTEndian_SwapBE16(6),
768fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Russian = SkTEndian_SwapBE16(7),
778fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    RSymbol = SkTEndian_SwapBE16(8),
788fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Devanagari = SkTEndian_SwapBE16(9),
798fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Gurmukhi = SkTEndian_SwapBE16(10),
808fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Gujarati = SkTEndian_SwapBE16(11),
818fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Oriya = SkTEndian_SwapBE16(12),
828fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bengali = SkTEndian_SwapBE16(13),
838fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tamil = SkTEndian_SwapBE16(14),
848fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Telugu = SkTEndian_SwapBE16(15),
858fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kannada = SkTEndian_SwapBE16(16),
868fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malayalam = SkTEndian_SwapBE16(17),
878fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sinhalese = SkTEndian_SwapBE16(18),
888fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Burmese = SkTEndian_SwapBE16(19),
898fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Khmer = SkTEndian_SwapBE16(20),
908fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Thai = SkTEndian_SwapBE16(21),
918fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Laotian = SkTEndian_SwapBE16(22),
928fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Georgian = SkTEndian_SwapBE16(23),
938fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Armenian = SkTEndian_SwapBE16(24),
948fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ChineseSimplified = SkTEndian_SwapBE16(25),
958fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tibetan = SkTEndian_SwapBE16(26),
968fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Mongolian = SkTEndian_SwapBE16(27),
978fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Geez = SkTEndian_SwapBE16(28),
988fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Slavic = SkTEndian_SwapBE16(29),
998fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Vietnamese = SkTEndian_SwapBE16(30),
1008fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sindhi = SkTEndian_SwapBE16(31),
1018fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Uninterpreted = SkTEndian_SwapBE16(32),
1028fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
10307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } macintosh;
10407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
10507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** Deprecated, use Unicode instead. */
10607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct ISO {
1078fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
1088fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ASCII7 = SkTEndian_SwapBE16(0),
1098fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ISO10646 = SkTEndian_SwapBE16(1),
1108fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ISO88591 = SkTEndian_SwapBE16(2),
1118fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
11207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } iso;
11307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
11407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or
11507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually
11607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  UTF-16BE.
11707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
11807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct Windows {
1198fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
1208fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Symbol = SkTEndian_SwapBE16(0), // UCS2-BE, but don't use this font to display it's own name.
1218fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UnicodeBMPUCS2 = SkTEndian_SwapBE16(1), // UCS2-BE, Windows default
1228fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ShiftJIS = SkTEndian_SwapBE16(2),
1238fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    PRC = SkTEndian_SwapBE16(3),
1248fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Big5 = SkTEndian_SwapBE16(4),
1258fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Wansung = SkTEndian_SwapBE16(5),
1268fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Johab = SkTEndian_SwapBE16(6),
1278fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UnicodeUCS4 = SkTEndian_SwapBE16(10), // UTF-16BE. It means UCS4 in charmaps.
1288fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
12907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } windows;
13007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        } encodingID;
13107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
13207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** LanguageIDs <= 0x7FFF are predefined.
13307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         *  LanguageIDs > 0x7FFF are indexes into the langTagRecord array
13407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         *  (in format 1 name tables, see SkOTTableName::format).
13507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         */
13607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        union LanguageID {
13707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** A value greater than 0x7FFF.
13807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  languageTagID - 0x8000 is an index into the langTagRecord array.
13907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
14007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SK_OT_USHORT languageTagID;
14107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
14207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** These are known as Language Designators.
14307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  Apple now uses BCP 47 (post OSX10.4), so there will be no new entries.
14407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
14507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct Macintosh {
1468fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
1478fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English = SkTEndian_SwapBE16(0),
1488fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French = SkTEndian_SwapBE16(1),
1498fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German = SkTEndian_SwapBE16(2),
1508fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Italian = SkTEndian_SwapBE16(3),
1518fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Dutch = SkTEndian_SwapBE16(4),
1528fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Swedish = SkTEndian_SwapBE16(5),
1538fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish = SkTEndian_SwapBE16(6),
1548fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Danish = SkTEndian_SwapBE16(7),
1558fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Portuguese = SkTEndian_SwapBE16(8),
1568fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Norwegian = SkTEndian_SwapBE16(9),
1578fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hebrew = SkTEndian_SwapBE16(10),
1588fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Japanese = SkTEndian_SwapBE16(11),
1598fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic = SkTEndian_SwapBE16(12),
1608fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Finnish = SkTEndian_SwapBE16(13),
1618fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Greek = SkTEndian_SwapBE16(14),
1628fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Icelandic = SkTEndian_SwapBE16(15),
1638fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Maltese = SkTEndian_SwapBE16(16),
1648fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Turkish = SkTEndian_SwapBE16(17),
1658fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Croatian = SkTEndian_SwapBE16(18),
1668fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ChineseTraditional = SkTEndian_SwapBE16(19),
1678fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Urdu = SkTEndian_SwapBE16(20),
1688fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hindi = SkTEndian_SwapBE16(21),
1698fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Thai = SkTEndian_SwapBE16(22),
1708fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Korean = SkTEndian_SwapBE16(23),
1718fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Lithuanian = SkTEndian_SwapBE16(24),
1728fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Polish = SkTEndian_SwapBE16(25),
1738fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hungarian = SkTEndian_SwapBE16(26),
1748fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Estonian = SkTEndian_SwapBE16(27),
1758fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Latvian = SkTEndian_SwapBE16(28),
1768fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sami = SkTEndian_SwapBE16(29),
1778fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Faroese = SkTEndian_SwapBE16(30),
1788fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Farsi_Persian = SkTEndian_SwapBE16(31),
1798fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Russian = SkTEndian_SwapBE16(32),
1808fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ChineseSimplified = SkTEndian_SwapBE16(33),
1818fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Flemish = SkTEndian_SwapBE16(34),
1828fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    IrishGaelic = SkTEndian_SwapBE16(35),
1838fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Albanian = SkTEndian_SwapBE16(36),
1848fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Romanian = SkTEndian_SwapBE16(37),
1858fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Czech = SkTEndian_SwapBE16(38),
1868fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Slovak = SkTEndian_SwapBE16(39),
1878fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Slovenian = SkTEndian_SwapBE16(40),
1888fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Yiddish = SkTEndian_SwapBE16(41),
1898fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Serbian = SkTEndian_SwapBE16(42),
1908fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Macedonian = SkTEndian_SwapBE16(43),
1918fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bulgarian = SkTEndian_SwapBE16(44),
1928fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Ukrainian = SkTEndian_SwapBE16(45),
1938fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Byelorussian = SkTEndian_SwapBE16(46),
1948fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Uzbek = SkTEndian_SwapBE16(47),
1958fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kazakh = SkTEndian_SwapBE16(48),
1968fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    AzerbaijaniCyrillic = SkTEndian_SwapBE16(49),
1978fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    AzerbaijaniArabic = SkTEndian_SwapBE16(50),
1988fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Armenian = SkTEndian_SwapBE16(51),
1998fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Georgian = SkTEndian_SwapBE16(52),
2008fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Moldavian = SkTEndian_SwapBE16(53),
2018fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kirghiz = SkTEndian_SwapBE16(54),
2028fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tajiki = SkTEndian_SwapBE16(55),
2038fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Turkmen = SkTEndian_SwapBE16(56),
2048fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MongolianTraditional = SkTEndian_SwapBE16(57),
2058fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MongolianCyrillic = SkTEndian_SwapBE16(58),
2068fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Pashto = SkTEndian_SwapBE16(59),
2078fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kurdish = SkTEndian_SwapBE16(60),
2088fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kashmiri = SkTEndian_SwapBE16(61),
2098fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sindhi = SkTEndian_SwapBE16(62),
2108fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tibetan = SkTEndian_SwapBE16(63),
2118fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Nepali = SkTEndian_SwapBE16(64),
2128fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sanskrit = SkTEndian_SwapBE16(65),
2138fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Marathi = SkTEndian_SwapBE16(66),
2148fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bengali = SkTEndian_SwapBE16(67),
2158fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Assamese = SkTEndian_SwapBE16(68),
2168fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Gujarati = SkTEndian_SwapBE16(69),
2178fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Punjabi = SkTEndian_SwapBE16(70),
2188fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Oriya = SkTEndian_SwapBE16(71),
2198fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malayalam = SkTEndian_SwapBE16(72),
2208fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kannada = SkTEndian_SwapBE16(73),
2218fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tamil = SkTEndian_SwapBE16(74),
2228fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Telugu = SkTEndian_SwapBE16(75),
2238fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sinhalese = SkTEndian_SwapBE16(76),
2248fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Burmese = SkTEndian_SwapBE16(77),
2258fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Khmer = SkTEndian_SwapBE16(78),
2268fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Lao = SkTEndian_SwapBE16(79),
2278fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Vietnamese = SkTEndian_SwapBE16(80),
2288fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Indonesian = SkTEndian_SwapBE16(81),
2298fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tagalong = SkTEndian_SwapBE16(82),
2308fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MalayRoman = SkTEndian_SwapBE16(83),
2318fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MalayArabic = SkTEndian_SwapBE16(84),
2328fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Amharic = SkTEndian_SwapBE16(85),
2338fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tigrinya = SkTEndian_SwapBE16(86),
2348fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Galla = SkTEndian_SwapBE16(87),
2358fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Somali = SkTEndian_SwapBE16(88),
2368fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Swahili = SkTEndian_SwapBE16(89),
2378fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kinyarwanda_Ruanda = SkTEndian_SwapBE16(90),
2388fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Rundi = SkTEndian_SwapBE16(91),
2398fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Nyanja_Chewa = SkTEndian_SwapBE16(92),
2408fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malagasy = SkTEndian_SwapBE16(93),
2418fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Esperanto = SkTEndian_SwapBE16(94),
2428fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Welsh = SkTEndian_SwapBE16(128),
2438fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Basque = SkTEndian_SwapBE16(129),
2448fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Catalan = SkTEndian_SwapBE16(130),
2458fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Latin = SkTEndian_SwapBE16(131),
2468fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Quenchua = SkTEndian_SwapBE16(132),
2478fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Guarani = SkTEndian_SwapBE16(133),
2488fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Aymara = SkTEndian_SwapBE16(134),
2498fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tatar = SkTEndian_SwapBE16(135),
2508fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Uighur = SkTEndian_SwapBE16(136),
2518fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Dzongkha = SkTEndian_SwapBE16(137),
2528fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    JavaneseRoman = SkTEndian_SwapBE16(138),
2538fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SundaneseRoman = SkTEndian_SwapBE16(139),
2548fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Galician = SkTEndian_SwapBE16(140),
2558fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Afrikaans = SkTEndian_SwapBE16(141),
2568fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Breton = SkTEndian_SwapBE16(142),
2578fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Inuktitut = SkTEndian_SwapBE16(143),
2588fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ScottishGaelic = SkTEndian_SwapBE16(144),
2598fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ManxGaelic = SkTEndian_SwapBE16(145),
2608fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    IrishGaelicWithLenition = SkTEndian_SwapBE16(146),
2618fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tongan = SkTEndian_SwapBE16(147),
2628fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    GreekPolytonic = SkTEndian_SwapBE16(148),
2638fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Greenlandic = SkTEndian_SwapBE16(149),
2648fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    AzerbaijaniRoman = SkTEndian_SwapBE16(150),
2658fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
26607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } macintosh;
26707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
26807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** These are known as LCIDs.
26907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID.
27007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
27107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            struct Windows {
2728fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
2738fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Afrikaans_SouthAfrica = SkTEndian_SwapBE16(0x0436),
2748fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Albanian_Albania = SkTEndian_SwapBE16(0x041C),
2758fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Alsatian_France = SkTEndian_SwapBE16(0x0484),
2768fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Amharic_Ethiopia = SkTEndian_SwapBE16(0x045E),
2778fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Algeria = SkTEndian_SwapBE16(0x1401),
2788fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Bahrain = SkTEndian_SwapBE16(0x3C01),
2798fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Egypt = SkTEndian_SwapBE16(0x0C01),
2808fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Iraq = SkTEndian_SwapBE16(0x0801),
2818fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Jordan = SkTEndian_SwapBE16(0x2C01),
2828fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Kuwait = SkTEndian_SwapBE16(0x3401),
2838fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Lebanon = SkTEndian_SwapBE16(0x3001),
2848fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Libya = SkTEndian_SwapBE16(0x1001),
2858fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Morocco = SkTEndian_SwapBE16(0x1801),
2868fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Oman = SkTEndian_SwapBE16(0x2001),
2878fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Qatar = SkTEndian_SwapBE16(0x4001),
2888fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_SaudiArabia = SkTEndian_SwapBE16(0x0401),
2898fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Syria = SkTEndian_SwapBE16(0x2801),
2908fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Tunisia = SkTEndian_SwapBE16(0x1C01),
2918fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_UAE = SkTEndian_SwapBE16(0x3801),
2928fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Arabic_Yemen = SkTEndian_SwapBE16(0x2401),
2938fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Armenian_Armenia = SkTEndian_SwapBE16(0x042B),
2948fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Assamese_India = SkTEndian_SwapBE16(0x044D),
2958fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    AzeriCyrillic_Azerbaijan = SkTEndian_SwapBE16(0x082C),
2968fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    AzeriLatin_Azerbaijan = SkTEndian_SwapBE16(0x042C),
2978fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bashkir_Russia = SkTEndian_SwapBE16(0x046D),
2988fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Basque_Basque = SkTEndian_SwapBE16(0x042D),
2998fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Belarusian_Belarus = SkTEndian_SwapBE16(0x0423),
3008fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bengali_Bangladesh = SkTEndian_SwapBE16(0x0845),
3018fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bengali_India = SkTEndian_SwapBE16(0x0445),
3028fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    BosnianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x201A),
3038fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    BosnianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x141A),
3048fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Breton_France = SkTEndian_SwapBE16(0x047E),
3058fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Bulgarian_Bulgaria = SkTEndian_SwapBE16(0x0402),
3068fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Catalan_Catalan = SkTEndian_SwapBE16(0x0403),
3078fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Chinese_HongKongSAR = SkTEndian_SwapBE16(0x0C04),
3088fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Chinese_MacaoSAR = SkTEndian_SwapBE16(0x1404),
3098fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Chinese_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0804),
3108fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Chinese_Singapore = SkTEndian_SwapBE16(0x1004),
3118fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Chinese_Taiwan = SkTEndian_SwapBE16(0x0404),
3128fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Corsican_France = SkTEndian_SwapBE16(0x0483),
3138fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Croatian_Croatia = SkTEndian_SwapBE16(0x041A),
3148fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    CroatianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x101A),
3158fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Czech_CzechRepublic = SkTEndian_SwapBE16(0x0405),
3168fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Danish_Denmark = SkTEndian_SwapBE16(0x0406),
3178fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Dari_Afghanistan = SkTEndian_SwapBE16(0x048C),
3188fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Divehi_Maldives = SkTEndian_SwapBE16(0x0465),
3198fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Dutch_Belgium = SkTEndian_SwapBE16(0x0813),
3208fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Dutch_Netherlands = SkTEndian_SwapBE16(0x0413),
3218fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Australia = SkTEndian_SwapBE16(0x0C09),
3228fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Belize = SkTEndian_SwapBE16(0x2809),
3238fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Canada = SkTEndian_SwapBE16(0x1009),
3248fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Caribbean = SkTEndian_SwapBE16(0x2409),
3258fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_India = SkTEndian_SwapBE16(0x4009),
3268fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Ireland = SkTEndian_SwapBE16(0x1809),
3278fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Jamaica = SkTEndian_SwapBE16(0x2009),
3288fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Malaysia = SkTEndian_SwapBE16(0x4409),
3298fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_NewZealand = SkTEndian_SwapBE16(0x1409),
3308fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_RepublicOfThePhilippines = SkTEndian_SwapBE16(0x3409),
3318fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Singapore = SkTEndian_SwapBE16(0x4809),
3328fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_SouthAfrica = SkTEndian_SwapBE16(0x1C09),
3338fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_TrinidadAndTobago = SkTEndian_SwapBE16(0x2C09),
3348fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_UnitedKingdom = SkTEndian_SwapBE16(0x0809),
3358fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_UnitedStates = SkTEndian_SwapBE16(0x0409),
3368fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    English_Zimbabwe = SkTEndian_SwapBE16(0x3009),
3378fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Estonian_Estonia = SkTEndian_SwapBE16(0x0425),
3388fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Faroese_FaroeIslands = SkTEndian_SwapBE16(0x0438),
3398fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Filipino_Philippines = SkTEndian_SwapBE16(0x0464),
3408fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Finnish_Finland = SkTEndian_SwapBE16(0x040B),
3418fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_Belgium = SkTEndian_SwapBE16(0x080C),
3428fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_Canada = SkTEndian_SwapBE16(0x0C0C),
3438fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_France = SkTEndian_SwapBE16(0x040C),
3448fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_Luxembourg = SkTEndian_SwapBE16(0x140c),
3458fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_PrincipalityOfMonoco = SkTEndian_SwapBE16(0x180C),
3468fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    French_Switzerland = SkTEndian_SwapBE16(0x100C),
3478fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Frisian_Netherlands = SkTEndian_SwapBE16(0x0462),
3488fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Galician_Galician = SkTEndian_SwapBE16(0x0456),
3498fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Georgian_Georgia = SkTEndian_SwapBE16(0x0437),
3508fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German_Austria = SkTEndian_SwapBE16(0x0C07),
3518fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German_Germany = SkTEndian_SwapBE16(0x0407),
3528fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German_Liechtenstein = SkTEndian_SwapBE16(0x1407),
3538fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German_Luxembourg = SkTEndian_SwapBE16(0x1007),
3548fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    German_Switzerland = SkTEndian_SwapBE16(0x0807),
3558fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Greek_Greece = SkTEndian_SwapBE16(0x0408),
3568fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Greenlandic_Greenland = SkTEndian_SwapBE16(0x046F),
3578fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Gujarati_India = SkTEndian_SwapBE16(0x0447),
3588fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    HausaLatin_Nigeria = SkTEndian_SwapBE16(0x0468),
3598fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hebrew_Israel = SkTEndian_SwapBE16(0x040D),
3608fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hindi_India = SkTEndian_SwapBE16(0x0439),
3618fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Hungarian_Hungary = SkTEndian_SwapBE16(0x040E),
3628fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Icelandic_Iceland = SkTEndian_SwapBE16(0x040F),
3638fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Igbo_Nigeria = SkTEndian_SwapBE16(0x0470),
3648fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Indonesian_Indonesia = SkTEndian_SwapBE16(0x0421),
3658fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Inuktitut_Canada = SkTEndian_SwapBE16(0x045D),
3668fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    InuktitutLatin_Canada = SkTEndian_SwapBE16(0x085D),
3678fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Irish_Ireland = SkTEndian_SwapBE16(0x083C),
3688fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    isiXhosa_SouthAfrica = SkTEndian_SwapBE16(0x0434),
3698fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    isiZulu_SouthAfrica = SkTEndian_SwapBE16(0x0435),
3708fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Italian_Italy = SkTEndian_SwapBE16(0x0410),
3718fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Italian_Switzerland = SkTEndian_SwapBE16(0x0810),
3728fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Japanese_Japan = SkTEndian_SwapBE16(0x0411),
3738fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kannada_India = SkTEndian_SwapBE16(0x044B),
3748fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kazakh_Kazakhstan = SkTEndian_SwapBE16(0x043F),
3758fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Khmer_Cambodia = SkTEndian_SwapBE16(0x0453),
3768fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kiche_Guatemala = SkTEndian_SwapBE16(0x0486),
3778fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kinyarwanda_Rwanda = SkTEndian_SwapBE16(0x0487),
3788fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kiswahili_Kenya = SkTEndian_SwapBE16(0x0441),
3798fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Konkani_India = SkTEndian_SwapBE16(0x0457),
3808fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Korean_Korea = SkTEndian_SwapBE16(0x0412),
3818fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Kyrgyz_Kyrgyzstan = SkTEndian_SwapBE16(0x0440),
3828fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Lao_LaoPDR = SkTEndian_SwapBE16(0x0454),
3838fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Latvian_Latvia = SkTEndian_SwapBE16(0x0426),
3848fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Lithuanian_Lithuania = SkTEndian_SwapBE16(0x0427),
3858fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    LowerSorbian_Germany = SkTEndian_SwapBE16(0x082E),
3868fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Luxembourgish_Luxembourg = SkTEndian_SwapBE16(0x046E),
3878fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MacedonianFYROM_FormerYugoslavRepublicOfMacedonia = SkTEndian_SwapBE16(0x042F),
3888fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malay_BruneiDarussalam = SkTEndian_SwapBE16(0x083E),
3898fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malay_Malaysia = SkTEndian_SwapBE16(0x043E),
3908fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Malayalam_India = SkTEndian_SwapBE16(0x044C),
3918fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Maltese_Malta = SkTEndian_SwapBE16(0x043A),
3928fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Maori_NewZealand = SkTEndian_SwapBE16(0x0481),
3938fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Mapudungun_Chile = SkTEndian_SwapBE16(0x047A),
3948fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Marathi_India = SkTEndian_SwapBE16(0x044E),
3958fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Mohawk_Mohawk = SkTEndian_SwapBE16(0x047C),
3968fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MongolianCyrillic_Mongolia = SkTEndian_SwapBE16(0x0450),
3978fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    MongolianTraditional_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0850),
3988fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Nepali_Nepal = SkTEndian_SwapBE16(0x0461),
3998fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    NorwegianBokmal_Norway = SkTEndian_SwapBE16(0x0414),
4008fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    NorwegianNynorsk_Norway = SkTEndian_SwapBE16(0x0814),
4018fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Occitan_France = SkTEndian_SwapBE16(0x0482),
4028fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Odia_India = SkTEndian_SwapBE16(0x0448),
4038fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Pashto_Afghanistan = SkTEndian_SwapBE16(0x0463),
4048fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Polish_Poland = SkTEndian_SwapBE16(0x0415),
4058fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Portuguese_Brazil = SkTEndian_SwapBE16(0x0416),
4068fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Portuguese_Portugal = SkTEndian_SwapBE16(0x0816),
4078fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Punjabi_India = SkTEndian_SwapBE16(0x0446),
4088fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Quechua_Bolivia = SkTEndian_SwapBE16(0x046B),
4098fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Quechua_Ecuador = SkTEndian_SwapBE16(0x086B),
4108fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Quechua_Peru = SkTEndian_SwapBE16(0x0C6B),
4118fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Romanian_Romania = SkTEndian_SwapBE16(0x0418),
4128fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Romansh_Switzerland = SkTEndian_SwapBE16(0x0417),
4138fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Russian_Russia = SkTEndian_SwapBE16(0x0419),
4148fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiInari_Finland = SkTEndian_SwapBE16(0x243B),
4158fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiLule_Norway = SkTEndian_SwapBE16(0x103B),
4168fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiLule_Sweden = SkTEndian_SwapBE16(0x143B),
4178fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiNorthern_Finland = SkTEndian_SwapBE16(0x0C3B),
4188fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiNorthern_Norway = SkTEndian_SwapBE16(0x043B),
4198fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiNorthern_Sweden = SkTEndian_SwapBE16(0x083B),
4208fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiSkolt_Finland = SkTEndian_SwapBE16(0x203B),
4218fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiSouthern_Norway = SkTEndian_SwapBE16(0x183B),
4228fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SamiSouthern_Sweden = SkTEndian_SwapBE16(0x1C3B),
4238fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sanskrit_India = SkTEndian_SwapBE16(0x044F),
4248fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SerbianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x1C1A),
4258fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SerbianCyrillic_Serbia = SkTEndian_SwapBE16(0x0C1A),
4268fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SerbianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x181A),
4278fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SerbianLatin_Serbia = SkTEndian_SwapBE16(0x081A),
4288fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SesothoSaLeboa_SouthAfrica = SkTEndian_SwapBE16(0x046C),
4298fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Setswana_SouthAfrica = SkTEndian_SwapBE16(0x0432),
4308fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sinhala_SriLanka = SkTEndian_SwapBE16(0x045B),
4318fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Slovak_Slovakia = SkTEndian_SwapBE16(0x041B),
4328fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Slovenian_Slovenia = SkTEndian_SwapBE16(0x0424),
4338fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Argentina = SkTEndian_SwapBE16(0x2C0A),
4348fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Bolivia = SkTEndian_SwapBE16(0x400A),
4358fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Chile = SkTEndian_SwapBE16(0x340A),
4368fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Colombia = SkTEndian_SwapBE16(0x240A),
4378fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_CostaRica = SkTEndian_SwapBE16(0x140A),
4388fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_DominicanRepublic = SkTEndian_SwapBE16(0x1C0A),
4398fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Ecuador = SkTEndian_SwapBE16(0x300A),
4408fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_ElSalvador = SkTEndian_SwapBE16(0x440A),
4418fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Guatemala = SkTEndian_SwapBE16(0x100A),
4428fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Honduras = SkTEndian_SwapBE16(0x480A),
4438fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Mexico = SkTEndian_SwapBE16(0x080A),
4448fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Nicaragua = SkTEndian_SwapBE16(0x4C0A),
4458fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Panama = SkTEndian_SwapBE16(0x180A),
4468fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Paraguay = SkTEndian_SwapBE16(0x3C0A),
4478fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Peru = SkTEndian_SwapBE16(0x280A),
4488fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_PuertoRico = SkTEndian_SwapBE16(0x500A),
4498fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SpanishModernSort_Spain = SkTEndian_SwapBE16(0x0C0A),
4508fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SpanishTraditionalSort_Spain = SkTEndian_SwapBE16(0x040A),
4518fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_UnitedStates = SkTEndian_SwapBE16(0x540A),
4528fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Uruguay = SkTEndian_SwapBE16(0x380A),
4538fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Spanish_Venezuela = SkTEndian_SwapBE16(0x200A),
4548fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Sweden_Finland = SkTEndian_SwapBE16(0x081D),
4558fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Swedish_Sweden = SkTEndian_SwapBE16(0x041D),
4568fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Syriac_Syria = SkTEndian_SwapBE16(0x045A),
4578fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    TajikCyrillic_Tajikistan = SkTEndian_SwapBE16(0x0428),
4588fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    TamazightLatin_Algeria = SkTEndian_SwapBE16(0x085F),
4598fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tamil_India = SkTEndian_SwapBE16(0x0449),
4608fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tatar_Russia = SkTEndian_SwapBE16(0x0444),
4618fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Telugu_India = SkTEndian_SwapBE16(0x044A),
4628fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Thai_Thailand = SkTEndian_SwapBE16(0x041E),
4638fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Tibetan_PRC = SkTEndian_SwapBE16(0x0451),
4648fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Turkish_Turkey = SkTEndian_SwapBE16(0x041F),
4658fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Turkmen_Turkmenistan = SkTEndian_SwapBE16(0x0442),
4668fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Uighur_PRC = SkTEndian_SwapBE16(0x0480),
4678fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Ukrainian_Ukraine = SkTEndian_SwapBE16(0x0422),
4688fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UpperSorbian_Germany = SkTEndian_SwapBE16(0x042E),
4698fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Urdu_IslamicRepublicOfPakistan = SkTEndian_SwapBE16(0x0420),
4708fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UzbekCyrillic_Uzbekistan = SkTEndian_SwapBE16(0x0843),
4718fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UzbekLatin_Uzbekistan = SkTEndian_SwapBE16(0x0443),
4728fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Vietnamese_Vietnam = SkTEndian_SwapBE16(0x042A),
4738fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Welsh_UnitedKingdom = SkTEndian_SwapBE16(0x0452),
4748fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Wolof_Senegal = SkTEndian_SwapBE16(0x0488),
4758fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Yakut_Russia = SkTEndian_SwapBE16(0x0485),
4768fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Yi_PRC = SkTEndian_SwapBE16(0x0478),
4778fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Yoruba_Nigeria = SkTEndian_SwapBE16(0x046A),
4788fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
47907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } windows;
48007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        } languageID;
48107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
48207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */
48307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        union NameID {
48407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com           /** A font specific name id which should be greater than 0xFF. */
48507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com           SK_OT_USHORT fontSpecific;
48607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com           struct Predefined {
4878fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                enum Value : SK_OT_USHORT {
4888fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    CopyrightNotice = SkTEndian_SwapBE16(0),
4898fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    FontFamilyName = SkTEndian_SwapBE16(1),
4908fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    FontSubfamilyName = SkTEndian_SwapBE16(2),
4918fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    UniqueFontIdentifier = SkTEndian_SwapBE16(3),
4928fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    FullFontName = SkTEndian_SwapBE16(4),
4938fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    VersionString = SkTEndian_SwapBE16(5), //Version <number>.<number>
4948fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    PostscriptName = SkTEndian_SwapBE16(6), //See spec for constraints.
4958fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Trademark = SkTEndian_SwapBE16(7),
4968fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    ManufacturerName = SkTEndian_SwapBE16(8),
4978fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Designer = SkTEndian_SwapBE16(9),
4988fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    Description = SkTEndian_SwapBE16(10),
4998fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    URLVendor = SkTEndian_SwapBE16(11),
5008fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    URLDesigner = SkTEndian_SwapBE16(12),
5018fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    LicenseDescription = SkTEndian_SwapBE16(13),
5028fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    LicenseInfoURL = SkTEndian_SwapBE16(14),
5038fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    PreferredFamily = SkTEndian_SwapBE16(16),
5048fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    PreferredSubfamily = SkTEndian_SwapBE16(17),
5058fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    CompatibleFullName = SkTEndian_SwapBE16(18),
5068fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    SampleText = SkTEndian_SwapBE16(19),
5078fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    PostscriptCIDFindfontName = SkTEndian_SwapBE16(20),
5088fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    WWSFamilyName = SkTEndian_SwapBE16(21),
5098fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                    WWSSubfamilyName = SkTEndian_SwapBE16(22),
5108fd23a86d0d16c93e4fa08f79cdcca4b48b6d7f9bungeman                } value;
51107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            } predefined;
51207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        } nameID;
51307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
51407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** The length of the string in SK_OT_BYTEs. */
51507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SK_OT_USHORT length;
51607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
51707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** Offset in SK_OT_BYTEs from start of string storage area
51807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         *  (see SkOTTableName::stringOffset).
51907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         */
52007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SK_OT_USHORT offset;
52107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    }; //nameRecord[count];
52207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
52307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    struct Format1Ext {
52407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** The number of languageTagRecords which follow. */
52507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        SK_OT_USHORT langTagCount;
52607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
52707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        /** The encoding of a langTagRecord string is always UTF-16BE.
52807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         *  The content should follow IETF specification BCP 47.
52907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com         */
53007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        struct LangTagRecord {
53107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** The length of the string in SK_OT_BYTEs. */
53207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SK_OT_USHORT length;
53307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
53407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            /** Offset in SK_OT_BYTEs from start of string storage area
53507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             *  (see SkOTTableName::stringOffset).
53607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com             */
53707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SK_OT_USHORT offset;
53807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        }; //langTagRecord[langTagCount]
53907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    }; //format1ext (if format == format_1)
54007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
54107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    class Iterator {
54207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    public:
54307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        Iterator(const SkOTTableName& name) : fName(name), fIndex(0), fType(-1) { }
54407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        Iterator(const SkOTTableName& name, SkOTTableName::Record::NameID::Predefined::Value type)
545041e2dbc0614e3341e1349fd0e962744a45b6194skia.committer@gmail.com            : fName(name), fIndex(0), fType(type)
54607a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        { }
54707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
548a980269c2498836101146adc729ef780fb89824ebungeman@google.com        void reset(SkOTTableName::Record::NameID::Predefined::Value type) {
549a980269c2498836101146adc729ef780fb89824ebungeman@google.com            fIndex = 0;
550a980269c2498836101146adc729ef780fb89824ebungeman@google.com            fType = type;
551a980269c2498836101146adc729ef780fb89824ebungeman@google.com        }
552a980269c2498836101146adc729ef780fb89824ebungeman@google.com
55307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        struct Record {
55407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SkString name;
55507a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com            SkString language;
5560a25b2ccf850ea41f3b083422f0420822832c540bungeman            SK_OT_USHORT type;
55707a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        };
55807a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        bool next(Record&);
55907a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com
56007a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    private:
56107a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        const SkOTTableName& fName;
56207a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        size_t fIndex;
56307a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com        int fType;
56407a69f848cd6e28e0870ac9eeeba2d05f8e8d8bebungeman@google.com    };
5658ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com};
5668ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
5678ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#pragma pack(pop)
5688ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
5698ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
57099fe82260633fcf5d92cca38d12ef0937ecca61cbungemanstatic_assert(sizeof(SkOTTableName) == 6, "sizeof_SkOTTableName_not_6");
57199fe82260633fcf5d92cca38d12ef0937ecca61cbungemanstatic_assert(sizeof(SkOTTableName::Format1Ext) == 2, "sizeof_SkOTTableNameF1_not_2");
57299fe82260633fcf5d92cca38d12ef0937ecca61cbungemanstatic_assert(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, "sizeof_SkOTTableNameLangTagRecord_not_4");
57399fe82260633fcf5d92cca38d12ef0937ecca61cbungemanstatic_assert(sizeof(SkOTTableName::Record) == 12, "sizeof_SkOTTableNameRecord_not_12");
5748ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com
5758ec9956bdfc173132de52acf1aa03746fabca287bungeman@google.com#endif
576