153b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com/* 253b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com * Copyright 2012 Google Inc. 353b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com * 453b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com * Use of this source code is governed by a BSD-style license that can be 553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com * found in the LICENSE file. 653b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com */ 753b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 853b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#ifndef SkOTTable_name_DEFINED 953b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#define SkOTTable_name_DEFINED 1053b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 1153b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#include "SkEndian.h" 1253b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#include "SkOTTableTypes.h" 1367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com#include "SkString.h" 1453b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#include "SkTypedEnum.h" 1553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 1653b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#pragma pack(push, 1) 1753b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 1853b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.comstruct SkOTTableName { 19a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_CHAR TAG0 = 'n'; 20a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_CHAR TAG1 = 'a'; 21a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_CHAR TAG2 = 'm'; 22a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_CHAR TAG3 = 'e'; 23a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value; 24a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com 2553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com SK_OT_USHORT format; 2653b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0); 2767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Format 1 was added in OpenType 1.6 (April 2009). */ 2853b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1); 2967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 3067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The number of name records which follow. */ 3153b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com SK_OT_USHORT count; 3253b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 3367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */ 3467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT stringOffset; 3553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 3667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Record { 3767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The platform ID specifies how to interpret the encoding and language ID. */ 3867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct PlatformID { 3953b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 4067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Unicode, SkTEndian_SwapBE16(0))) 4167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Macintosh, SkTEndian_SwapBE16(1))) 4267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ISO, SkTEndian_SwapBE16(2))) // Deprecated, use Unicode instead. 4367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Windows, SkTEndian_SwapBE16(3))) 4467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Custom, SkTEndian_SwapBE16(4))) 4553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com SK_SEQ_END, 4653b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com (value)SK_SEQ_END) 4767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } platformID; 4867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 4967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com union EncodingID { 5067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT custom; 5167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 5267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Always UTF-16BE. */ 5367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Unicode { 5467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 5567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Unicode10, SkTEndian_SwapBE16(0))) 5667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Unicode11, SkTEndian_SwapBE16(1))) 5767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ISO10646, SkTEndian_SwapBE16(2))) //deprecated, use Unicode11 5867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Unicode20BMP, SkTEndian_SwapBE16(3))) 5967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Unicode20, SkTEndian_SwapBE16(4))) 6067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UnicodeVariationSequences, SkTEndian_SwapBE16(5))) 6167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UnicodeFull, SkTEndian_SwapBE16(6))) 6267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 6367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 6467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } unicode; 6567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 6667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/ 6767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * for their mappings to unicode. 6867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * Name table strings using PlatformID::Macintosh must use Roman. 6967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 7067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Macintosh { 7167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 7267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Roman, SkTEndian_SwapBE16(0))) 7367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Japanese, SkTEndian_SwapBE16(1))) 7467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ChineseTraditional, SkTEndian_SwapBE16(2))) 7567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Korean, SkTEndian_SwapBE16(3))) 7667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic, SkTEndian_SwapBE16(4))) 7767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hebrew, SkTEndian_SwapBE16(5))) 7867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Greek, SkTEndian_SwapBE16(6))) 7967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Russian, SkTEndian_SwapBE16(7))) 8067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((RSymbol, SkTEndian_SwapBE16(8))) 8167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Devanagari, SkTEndian_SwapBE16(9))) 8267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Gurmukhi, SkTEndian_SwapBE16(10))) 8367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Gujarati, SkTEndian_SwapBE16(11))) 8467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Oriya, SkTEndian_SwapBE16(12))) 8567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bengali, SkTEndian_SwapBE16(13))) 8667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tamil, SkTEndian_SwapBE16(14))) 8767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Telugu, SkTEndian_SwapBE16(15))) 8867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kannada, SkTEndian_SwapBE16(16))) 8967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malayalam, SkTEndian_SwapBE16(17))) 9067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sinhalese, SkTEndian_SwapBE16(18))) 9167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Burmese, SkTEndian_SwapBE16(19))) 9267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Khmer, SkTEndian_SwapBE16(20))) 9367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Thai, SkTEndian_SwapBE16(21))) 9467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Laotian, SkTEndian_SwapBE16(22))) 9567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Georgian, SkTEndian_SwapBE16(23))) 9667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Armenian, SkTEndian_SwapBE16(24))) 9767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ChineseSimplified, SkTEndian_SwapBE16(25))) 9867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tibetan, SkTEndian_SwapBE16(26))) 9967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Mongolian, SkTEndian_SwapBE16(27))) 10067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Geez, SkTEndian_SwapBE16(28))) 10167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Slavic, SkTEndian_SwapBE16(29))) 10267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Vietnamese, SkTEndian_SwapBE16(30))) 10367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sindhi, SkTEndian_SwapBE16(31))) 10467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Uninterpreted, SkTEndian_SwapBE16(32))) 10567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 10667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 10767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } macintosh; 10867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 10967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Deprecated, use Unicode instead. */ 11067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct ISO { 11167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 11267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ASCII7, SkTEndian_SwapBE16(0))) 11367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ISO10646, SkTEndian_SwapBE16(1))) 11467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ISO88591, SkTEndian_SwapBE16(2))) 11567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 11667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 11767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } iso; 11867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 11967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or 12067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually 12167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * UTF-16BE. 12267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 12367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Windows { 12467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 12567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Symbol, SkTEndian_SwapBE16(0))) // UCS2-BE, but don't use this font to display it's own name. 12667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UnicodeBMPUCS2, SkTEndian_SwapBE16(1))) // UCS2-BE, Windows default 12767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ShiftJIS, SkTEndian_SwapBE16(2))) 12867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((PRC, SkTEndian_SwapBE16(3))) 12967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Big5, SkTEndian_SwapBE16(4))) 13067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Wansung, SkTEndian_SwapBE16(5))) 13167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Johab, SkTEndian_SwapBE16(6))) 13267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UnicodeUCS4, SkTEndian_SwapBE16(10))) // UTF-16BE. It means UCS4 in charmaps. 13367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 13467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 13567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } windows; 13667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } encodingID; 13767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 13867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** LanguageIDs <= 0x7FFF are predefined. 13967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * LanguageIDs > 0x7FFF are indexes into the langTagRecord array 14067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * (in format 1 name tables, see SkOTTableName::format). 14167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 14267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com union LanguageID { 14367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** A value greater than 0x7FFF. 14467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * languageTagID - 0x8000 is an index into the langTagRecord array. 14567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 14667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT languageTagID; 14767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 14867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** These are known as Language Designators. 14967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * Apple now uses BCP 47 (post OSX10.4), so there will be no new entries. 15067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 15167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Macintosh { 15267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 15367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English, SkTEndian_SwapBE16(0))) 15467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French, SkTEndian_SwapBE16(1))) 15567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German, SkTEndian_SwapBE16(2))) 15667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Italian, SkTEndian_SwapBE16(3))) 15767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Dutch, SkTEndian_SwapBE16(4))) 15867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Swedish, SkTEndian_SwapBE16(5))) 15967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish, SkTEndian_SwapBE16(6))) 16067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Danish, SkTEndian_SwapBE16(7))) 16167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Portuguese, SkTEndian_SwapBE16(8))) 16267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Norwegian, SkTEndian_SwapBE16(9))) 16367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hebrew, SkTEndian_SwapBE16(10))) 16467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Japanese, SkTEndian_SwapBE16(11))) 16567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic, SkTEndian_SwapBE16(12))) 16667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Finnish, SkTEndian_SwapBE16(13))) 16767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Greek, SkTEndian_SwapBE16(14))) 16867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Icelandic, SkTEndian_SwapBE16(15))) 16967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Maltese, SkTEndian_SwapBE16(16))) 17067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Turkish, SkTEndian_SwapBE16(17))) 17167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Croatian, SkTEndian_SwapBE16(18))) 17267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ChineseTraditional, SkTEndian_SwapBE16(19))) 17367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Urdu, SkTEndian_SwapBE16(20))) 17467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hindi, SkTEndian_SwapBE16(21))) 17567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Thai, SkTEndian_SwapBE16(22))) 17667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Korean, SkTEndian_SwapBE16(23))) 17767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Lithuanian, SkTEndian_SwapBE16(24))) 17867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Polish, SkTEndian_SwapBE16(25))) 17967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hungarian, SkTEndian_SwapBE16(26))) 18067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Estonian, SkTEndian_SwapBE16(27))) 18167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Latvian, SkTEndian_SwapBE16(28))) 18267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sami, SkTEndian_SwapBE16(29))) 18367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Faroese, SkTEndian_SwapBE16(30))) 18467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Farsi_Persian, SkTEndian_SwapBE16(31))) 18567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Russian, SkTEndian_SwapBE16(32))) 18667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ChineseSimplified, SkTEndian_SwapBE16(33))) 18767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Flemish, SkTEndian_SwapBE16(34))) 18867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((IrishGaelic, SkTEndian_SwapBE16(35))) 18967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Albanian, SkTEndian_SwapBE16(36))) 19067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Romanian, SkTEndian_SwapBE16(37))) 19167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Czech, SkTEndian_SwapBE16(38))) 19267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Slovak, SkTEndian_SwapBE16(39))) 19367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Slovenian, SkTEndian_SwapBE16(40))) 19467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Yiddish, SkTEndian_SwapBE16(41))) 19567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Serbian, SkTEndian_SwapBE16(42))) 19667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Macedonian, SkTEndian_SwapBE16(43))) 19767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bulgarian, SkTEndian_SwapBE16(44))) 19867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Ukrainian, SkTEndian_SwapBE16(45))) 19967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Byelorussian, SkTEndian_SwapBE16(46))) 20067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Uzbek, SkTEndian_SwapBE16(47))) 20167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kazakh, SkTEndian_SwapBE16(48))) 20267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((AzerbaijaniCyrillic, SkTEndian_SwapBE16(49))) 20367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((AzerbaijaniArabic, SkTEndian_SwapBE16(50))) 20467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Armenian, SkTEndian_SwapBE16(51))) 20567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Georgian, SkTEndian_SwapBE16(52))) 20667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Moldavian, SkTEndian_SwapBE16(53))) 20767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kirghiz, SkTEndian_SwapBE16(54))) 20867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tajiki, SkTEndian_SwapBE16(55))) 20967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Turkmen, SkTEndian_SwapBE16(56))) 21067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MongolianTraditional, SkTEndian_SwapBE16(57))) 21167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MongolianCyrillic, SkTEndian_SwapBE16(58))) 21267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Pashto, SkTEndian_SwapBE16(59))) 21367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kurdish, SkTEndian_SwapBE16(60))) 21467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kashmiri, SkTEndian_SwapBE16(61))) 21567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sindhi, SkTEndian_SwapBE16(62))) 21667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tibetan, SkTEndian_SwapBE16(63))) 21767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Nepali, SkTEndian_SwapBE16(64))) 21867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sanskrit, SkTEndian_SwapBE16(65))) 21967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Marathi, SkTEndian_SwapBE16(66))) 22067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bengali, SkTEndian_SwapBE16(67))) 22167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Assamese, SkTEndian_SwapBE16(68))) 22267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Gujarati, SkTEndian_SwapBE16(69))) 22367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Punjabi, SkTEndian_SwapBE16(70))) 22467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Oriya, SkTEndian_SwapBE16(71))) 22567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malayalam, SkTEndian_SwapBE16(72))) 22667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kannada, SkTEndian_SwapBE16(73))) 22767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tamil, SkTEndian_SwapBE16(74))) 22867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Telugu, SkTEndian_SwapBE16(75))) 22967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sinhalese, SkTEndian_SwapBE16(76))) 23067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Burmese, SkTEndian_SwapBE16(77))) 23167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Khmer, SkTEndian_SwapBE16(78))) 23267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Lao, SkTEndian_SwapBE16(79))) 23367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Vietnamese, SkTEndian_SwapBE16(80))) 23467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Indonesian, SkTEndian_SwapBE16(81))) 23567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tagalong, SkTEndian_SwapBE16(82))) 23667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MalayRoman, SkTEndian_SwapBE16(83))) 23767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MalayArabic, SkTEndian_SwapBE16(84))) 23867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Amharic, SkTEndian_SwapBE16(85))) 23967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tigrinya, SkTEndian_SwapBE16(86))) 24067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Galla, SkTEndian_SwapBE16(87))) 24167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Somali, SkTEndian_SwapBE16(88))) 24267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Swahili, SkTEndian_SwapBE16(89))) 24367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kinyarwanda_Ruanda, SkTEndian_SwapBE16(90))) 24467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Rundi, SkTEndian_SwapBE16(91))) 24567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Nyanja_Chewa, SkTEndian_SwapBE16(92))) 24667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malagasy, SkTEndian_SwapBE16(93))) 24767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Esperanto, SkTEndian_SwapBE16(94))) 24867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Welsh, SkTEndian_SwapBE16(128))) 24967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Basque, SkTEndian_SwapBE16(129))) 25067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Catalan, SkTEndian_SwapBE16(130))) 25167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Latin, SkTEndian_SwapBE16(131))) 25267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Quenchua, SkTEndian_SwapBE16(132))) 25367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Guarani, SkTEndian_SwapBE16(133))) 25467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Aymara, SkTEndian_SwapBE16(134))) 25567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tatar, SkTEndian_SwapBE16(135))) 25667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Uighur, SkTEndian_SwapBE16(136))) 25767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Dzongkha, SkTEndian_SwapBE16(137))) 25867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((JavaneseRoman, SkTEndian_SwapBE16(138))) 25967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SundaneseRoman, SkTEndian_SwapBE16(139))) 26067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Galician, SkTEndian_SwapBE16(140))) 26167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Afrikaans, SkTEndian_SwapBE16(141))) 26267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Breton, SkTEndian_SwapBE16(142))) 26367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Inuktitut, SkTEndian_SwapBE16(143))) 26467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ScottishGaelic, SkTEndian_SwapBE16(144))) 26567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ManxGaelic, SkTEndian_SwapBE16(145))) 26667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((IrishGaelicWithLenition, SkTEndian_SwapBE16(146))) 26767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tongan, SkTEndian_SwapBE16(147))) 26867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((GreekPolytonic, SkTEndian_SwapBE16(148))) 26967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Greenlandic, SkTEndian_SwapBE16(149))) 27067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((AzerbaijaniRoman, SkTEndian_SwapBE16(150))) 27167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 27267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 27367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } macintosh; 27467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 27567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** These are known as LCIDs. 27667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID. 27767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 27867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Windows { 27967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 28067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Afrikaans_SouthAfrica, SkTEndian_SwapBE16(0x0436))) 28167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Albanian_Albania, SkTEndian_SwapBE16(0x041C))) 28267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Alsatian_France, SkTEndian_SwapBE16(0x0484))) 28367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Amharic_Ethiopia, SkTEndian_SwapBE16(0x045E))) 28467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Algeria, SkTEndian_SwapBE16(0x1401))) 28567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Bahrain, SkTEndian_SwapBE16(0x3C01))) 28667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Egypt, SkTEndian_SwapBE16(0x0C01))) 28767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Iraq, SkTEndian_SwapBE16(0x0801))) 28867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Jordan, SkTEndian_SwapBE16(0x2C01))) 28967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Kuwait, SkTEndian_SwapBE16(0x3401))) 29067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Lebanon, SkTEndian_SwapBE16(0x3001))) 29167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Libya, SkTEndian_SwapBE16(0x1001))) 29267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Morocco, SkTEndian_SwapBE16(0x1801))) 29367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Oman, SkTEndian_SwapBE16(0x2001))) 29467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Qatar, SkTEndian_SwapBE16(0x4001))) 29567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_SaudiArabia, SkTEndian_SwapBE16(0x0401))) 29667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Syria, SkTEndian_SwapBE16(0x2801))) 29767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Tunisia, SkTEndian_SwapBE16(0x1C01))) 29867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_UAE, SkTEndian_SwapBE16(0x3801))) 29967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Arabic_Yemen, SkTEndian_SwapBE16(0x2401))) 30067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Armenian_Armenia, SkTEndian_SwapBE16(0x042B))) 30167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Assamese_India, SkTEndian_SwapBE16(0x044D))) 30267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((AzeriCyrillic_Azerbaijan, SkTEndian_SwapBE16(0x082C))) 30367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((AzeriLatin_Azerbaijan, SkTEndian_SwapBE16(0x042C))) 30467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bashkir_Russia, SkTEndian_SwapBE16(0x046D))) 30567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Basque_Basque, SkTEndian_SwapBE16(0x042D))) 30667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Belarusian_Belarus, SkTEndian_SwapBE16(0x0423))) 30767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bengali_Bangladesh, SkTEndian_SwapBE16(0x0845))) 30867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bengali_India, SkTEndian_SwapBE16(0x0445))) 30967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((BosnianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x201A))) 31067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((BosnianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x141A))) 31167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Breton_France, SkTEndian_SwapBE16(0x047E))) 31267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Bulgarian_Bulgaria, SkTEndian_SwapBE16(0x0402))) 31367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Catalan_Catalan, SkTEndian_SwapBE16(0x0403))) 31467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Chinese_HongKongSAR, SkTEndian_SwapBE16(0x0C04))) 31567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Chinese_MacaoSAR, SkTEndian_SwapBE16(0x1404))) 31667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Chinese_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0804))) 31767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Chinese_Singapore, SkTEndian_SwapBE16(0x1004))) 31867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Chinese_Taiwan, SkTEndian_SwapBE16(0x0404))) 31967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Corsican_France, SkTEndian_SwapBE16(0x0483))) 32067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Croatian_Croatia, SkTEndian_SwapBE16(0x041A))) 32167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((CroatianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x101A))) 32267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Czech_CzechRepublic, SkTEndian_SwapBE16(0x0405))) 32367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Danish_Denmark, SkTEndian_SwapBE16(0x0406))) 32467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Dari_Afghanistan, SkTEndian_SwapBE16(0x048C))) 32567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Divehi_Maldives, SkTEndian_SwapBE16(0x0465))) 32667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Dutch_Belgium, SkTEndian_SwapBE16(0x0813))) 32767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Dutch_Netherlands, SkTEndian_SwapBE16(0x0413))) 32867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Australia, SkTEndian_SwapBE16(0x0C09))) 32967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Belize, SkTEndian_SwapBE16(0x2809))) 33067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Canada, SkTEndian_SwapBE16(0x1009))) 33167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Caribbean, SkTEndian_SwapBE16(0x2409))) 33267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_India, SkTEndian_SwapBE16(0x4009))) 33367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Ireland, SkTEndian_SwapBE16(0x1809))) 33467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Jamaica, SkTEndian_SwapBE16(0x2009))) 33567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Malaysia, SkTEndian_SwapBE16(0x4409))) 33667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_NewZealand, SkTEndian_SwapBE16(0x1409))) 33767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_RepublicOfThePhilippines, SkTEndian_SwapBE16(0x3409))) 33867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Singapore, SkTEndian_SwapBE16(0x4809))) 33967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_SouthAfrica, SkTEndian_SwapBE16(0x1C09))) 34067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_TrinidadAndTobago, SkTEndian_SwapBE16(0x2C09))) 34167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_UnitedKingdom, SkTEndian_SwapBE16(0x0809))) 34267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_UnitedStates, SkTEndian_SwapBE16(0x0409))) 34367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((English_Zimbabwe, SkTEndian_SwapBE16(0x3009))) 34467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Estonian_Estonia, SkTEndian_SwapBE16(0x0425))) 34567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Faroese_FaroeIslands, SkTEndian_SwapBE16(0x0438))) 34667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Filipino_Philippines, SkTEndian_SwapBE16(0x0464))) 34767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Finnish_Finland, SkTEndian_SwapBE16(0x040B))) 34867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_Belgium, SkTEndian_SwapBE16(0x080C))) 34967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_Canada, SkTEndian_SwapBE16(0x0C0C))) 35067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_France, SkTEndian_SwapBE16(0x040C))) 35167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_Luxembourg, SkTEndian_SwapBE16(0x140c))) 35267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_PrincipalityOfMonoco, SkTEndian_SwapBE16(0x180C))) 35367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((French_Switzerland, SkTEndian_SwapBE16(0x100C))) 35467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Frisian_Netherlands, SkTEndian_SwapBE16(0x0462))) 35567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Galician_Galician, SkTEndian_SwapBE16(0x0456))) 35667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Georgian_Georgia, SkTEndian_SwapBE16(0x0437))) 35767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German_Austria, SkTEndian_SwapBE16(0x0C07))) 35867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German_Germany, SkTEndian_SwapBE16(0x0407))) 35967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German_Liechtenstein, SkTEndian_SwapBE16(0x1407))) 36067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German_Luxembourg, SkTEndian_SwapBE16(0x1007))) 36167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((German_Switzerland, SkTEndian_SwapBE16(0x0807))) 36267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Greek_Greece, SkTEndian_SwapBE16(0x0408))) 36367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Greenlandic_Greenland, SkTEndian_SwapBE16(0x046F))) 36467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Gujarati_India, SkTEndian_SwapBE16(0x0447))) 36567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((HausaLatin_Nigeria, SkTEndian_SwapBE16(0x0468))) 36667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hebrew_Israel, SkTEndian_SwapBE16(0x040D))) 36767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hindi_India, SkTEndian_SwapBE16(0x0439))) 36867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Hungarian_Hungary, SkTEndian_SwapBE16(0x040E))) 36967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Icelandic_Iceland, SkTEndian_SwapBE16(0x040F))) 37067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Igbo_Nigeria, SkTEndian_SwapBE16(0x0470))) 37167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Indonesian_Indonesia, SkTEndian_SwapBE16(0x0421))) 37267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Inuktitut_Canada, SkTEndian_SwapBE16(0x045D))) 37367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((InuktitutLatin_Canada, SkTEndian_SwapBE16(0x085D))) 37467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Irish_Ireland, SkTEndian_SwapBE16(0x083C))) 37567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((isiXhosa_SouthAfrica, SkTEndian_SwapBE16(0x0434))) 37667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((isiZulu_SouthAfrica, SkTEndian_SwapBE16(0x0435))) 37767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Italian_Italy, SkTEndian_SwapBE16(0x0410))) 37867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Italian_Switzerland, SkTEndian_SwapBE16(0x0810))) 37967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Japanese_Japan, SkTEndian_SwapBE16(0x0411))) 38067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kannada_India, SkTEndian_SwapBE16(0x044B))) 38167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kazakh_Kazakhstan, SkTEndian_SwapBE16(0x043F))) 38267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Khmer_Cambodia, SkTEndian_SwapBE16(0x0453))) 38367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kiche_Guatemala, SkTEndian_SwapBE16(0x0486))) 38467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kinyarwanda_Rwanda, SkTEndian_SwapBE16(0x0487))) 38567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kiswahili_Kenya, SkTEndian_SwapBE16(0x0441))) 38667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Konkani_India, SkTEndian_SwapBE16(0x0457))) 38767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Korean_Korea, SkTEndian_SwapBE16(0x0412))) 38867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Kyrgyz_Kyrgyzstan, SkTEndian_SwapBE16(0x0440))) 38967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Lao_LaoPDR, SkTEndian_SwapBE16(0x0454))) 39067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Latvian_Latvia, SkTEndian_SwapBE16(0x0426))) 39167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Lithuanian_Lithuania, SkTEndian_SwapBE16(0x0427))) 39267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((LowerSorbian_Germany, SkTEndian_SwapBE16(0x082E))) 39367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Luxembourgish_Luxembourg, SkTEndian_SwapBE16(0x046E))) 39467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MacedonianFYROM_FormerYugoslavRepublicOfMacedonia, SkTEndian_SwapBE16(0x042F))) 39567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malay_BruneiDarussalam, SkTEndian_SwapBE16(0x083E))) 39667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malay_Malaysia, SkTEndian_SwapBE16(0x043E))) 39767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Malayalam_India, SkTEndian_SwapBE16(0x044C))) 39867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Maltese_Malta, SkTEndian_SwapBE16(0x043A))) 39967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Maori_NewZealand, SkTEndian_SwapBE16(0x0481))) 40067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Mapudungun_Chile, SkTEndian_SwapBE16(0x047A))) 40167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Marathi_India, SkTEndian_SwapBE16(0x044E))) 40267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Mohawk_Mohawk, SkTEndian_SwapBE16(0x047C))) 40367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MongolianCyrillic_Mongolia, SkTEndian_SwapBE16(0x0450))) 40467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((MongolianTraditional_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0850))) 40567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Nepali_Nepal, SkTEndian_SwapBE16(0x0461))) 40667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((NorwegianBokmal_Norway, SkTEndian_SwapBE16(0x0414))) 40767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((NorwegianNynorsk_Norway, SkTEndian_SwapBE16(0x0814))) 40867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Occitan_France, SkTEndian_SwapBE16(0x0482))) 40967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Odia_India, SkTEndian_SwapBE16(0x0448))) 41067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Pashto_Afghanistan, SkTEndian_SwapBE16(0x0463))) 41167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Polish_Poland, SkTEndian_SwapBE16(0x0415))) 41267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Portuguese_Brazil, SkTEndian_SwapBE16(0x0416))) 41367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Portuguese_Portugal, SkTEndian_SwapBE16(0x0816))) 41467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Punjabi_India, SkTEndian_SwapBE16(0x0446))) 41567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Quechua_Bolivia, SkTEndian_SwapBE16(0x046B))) 41667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Quechua_Ecuador, SkTEndian_SwapBE16(0x086B))) 41767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Quechua_Peru, SkTEndian_SwapBE16(0x0C6B))) 41867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Romanian_Romania, SkTEndian_SwapBE16(0x0418))) 41967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Romansh_Switzerland, SkTEndian_SwapBE16(0x0417))) 42067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Russian_Russia, SkTEndian_SwapBE16(0x0419))) 42167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiInari_Finland, SkTEndian_SwapBE16(0x243B))) 42267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiLule_Norway, SkTEndian_SwapBE16(0x103B))) 42367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiLule_Sweden, SkTEndian_SwapBE16(0x143B))) 42467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiNorthern_Finland, SkTEndian_SwapBE16(0x0C3B))) 42567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiNorthern_Norway, SkTEndian_SwapBE16(0x043B))) 42667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiNorthern_Sweden, SkTEndian_SwapBE16(0x083B))) 42767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiSkolt_Finland, SkTEndian_SwapBE16(0x203B))) 42867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiSouthern_Norway, SkTEndian_SwapBE16(0x183B))) 42967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SamiSouthern_Sweden, SkTEndian_SwapBE16(0x1C3B))) 43067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sanskrit_India, SkTEndian_SwapBE16(0x044F))) 43167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SerbianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x1C1A))) 43267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SerbianCyrillic_Serbia, SkTEndian_SwapBE16(0x0C1A))) 43367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SerbianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x181A))) 43467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SerbianLatin_Serbia, SkTEndian_SwapBE16(0x081A))) 43567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SesothoSaLeboa_SouthAfrica, SkTEndian_SwapBE16(0x046C))) 43667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Setswana_SouthAfrica, SkTEndian_SwapBE16(0x0432))) 43767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sinhala_SriLanka, SkTEndian_SwapBE16(0x045B))) 43867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Slovak_Slovakia, SkTEndian_SwapBE16(0x041B))) 43967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Slovenian_Slovenia, SkTEndian_SwapBE16(0x0424))) 44067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Argentina, SkTEndian_SwapBE16(0x2C0A))) 44167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Bolivia, SkTEndian_SwapBE16(0x400A))) 44267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Chile, SkTEndian_SwapBE16(0x340A))) 44367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Colombia, SkTEndian_SwapBE16(0x240A))) 44467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_CostaRica, SkTEndian_SwapBE16(0x140A))) 44567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_DominicanRepublic, SkTEndian_SwapBE16(0x1C0A))) 44667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Ecuador, SkTEndian_SwapBE16(0x300A))) 44767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_ElSalvador, SkTEndian_SwapBE16(0x440A))) 44867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Guatemala, SkTEndian_SwapBE16(0x100A))) 44967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Honduras, SkTEndian_SwapBE16(0x480A))) 45067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Mexico, SkTEndian_SwapBE16(0x080A))) 45167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Nicaragua, SkTEndian_SwapBE16(0x4C0A))) 45267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Panama, SkTEndian_SwapBE16(0x180A))) 45367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Paraguay, SkTEndian_SwapBE16(0x3C0A))) 45467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Peru, SkTEndian_SwapBE16(0x280A))) 45567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_PuertoRico, SkTEndian_SwapBE16(0x500A))) 45667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SpanishModernSort_Spain, SkTEndian_SwapBE16(0x0C0A))) 45767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SpanishTraditionalSort_Spain, SkTEndian_SwapBE16(0x040A))) 45867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_UnitedStates, SkTEndian_SwapBE16(0x540A))) 45967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Uruguay, SkTEndian_SwapBE16(0x380A))) 46067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Spanish_Venezuela, SkTEndian_SwapBE16(0x200A))) 46167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Sweden_Finland, SkTEndian_SwapBE16(0x081D))) 46267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Swedish_Sweden, SkTEndian_SwapBE16(0x041D))) 46367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Syriac_Syria, SkTEndian_SwapBE16(0x045A))) 46467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((TajikCyrillic_Tajikistan, SkTEndian_SwapBE16(0x0428))) 46567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((TamazightLatin_Algeria, SkTEndian_SwapBE16(0x085F))) 46667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tamil_India, SkTEndian_SwapBE16(0x0449))) 46767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tatar_Russia, SkTEndian_SwapBE16(0x0444))) 46867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Telugu_India, SkTEndian_SwapBE16(0x044A))) 46967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Thai_Thailand, SkTEndian_SwapBE16(0x041E))) 47067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Tibetan_PRC, SkTEndian_SwapBE16(0x0451))) 47167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Turkish_Turkey, SkTEndian_SwapBE16(0x041F))) 47267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Turkmen_Turkmenistan, SkTEndian_SwapBE16(0x0442))) 47367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Uighur_PRC, SkTEndian_SwapBE16(0x0480))) 47467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Ukrainian_Ukraine, SkTEndian_SwapBE16(0x0422))) 47567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UpperSorbian_Germany, SkTEndian_SwapBE16(0x042E))) 47667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Urdu_IslamicRepublicOfPakistan, SkTEndian_SwapBE16(0x0420))) 47767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UzbekCyrillic_Uzbekistan, SkTEndian_SwapBE16(0x0843))) 47867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UzbekLatin_Uzbekistan, SkTEndian_SwapBE16(0x0443))) 47967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Vietnamese_Vietnam, SkTEndian_SwapBE16(0x042A))) 48067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Welsh_UnitedKingdom, SkTEndian_SwapBE16(0x0452))) 48167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Wolof_Senegal, SkTEndian_SwapBE16(0x0488))) 48267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Yakut_Russia, SkTEndian_SwapBE16(0x0485))) 48367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Yi_PRC, SkTEndian_SwapBE16(0x0478))) 48467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Yoruba_Nigeria, SkTEndian_SwapBE16(0x046A))) 48567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 48667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 48767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } windows; 48867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } languageID; 48967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 49067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */ 49167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com union NameID { 49267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** A font specific name id which should be greater than 0xFF. */ 49367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT fontSpecific; 49467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Predefined { 49567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_TYPED_ENUM(Value, SK_OT_USHORT, 49667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((CopyrightNotice, SkTEndian_SwapBE16(0))) 49767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((FontFamilyName, SkTEndian_SwapBE16(1))) 49867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((FontSubfamilyName, SkTEndian_SwapBE16(2))) 49967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((UniqueFontIdentifier, SkTEndian_SwapBE16(3))) 50067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((FullFontName, SkTEndian_SwapBE16(4))) 50167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((VersionString, SkTEndian_SwapBE16(5))) //Version <number>.<number> 50267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((PostscriptName, SkTEndian_SwapBE16(6))) //See spec for constraints. 50367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Trademark, SkTEndian_SwapBE16(7))) 50467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((ManufacturerName, SkTEndian_SwapBE16(8))) 50567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Designer, SkTEndian_SwapBE16(9))) 50667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((Description, SkTEndian_SwapBE16(10))) 50767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((URLVendor, SkTEndian_SwapBE16(11))) 50867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((URLDesigner, SkTEndian_SwapBE16(12))) 50967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((LicenseDescription, SkTEndian_SwapBE16(13))) 51067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((LicenseInfoURL, SkTEndian_SwapBE16(14))) 51167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((PreferredFamily, SkTEndian_SwapBE16(16))) 51267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((PreferredSubfamily, SkTEndian_SwapBE16(17))) 51367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((CompatibleFullName, SkTEndian_SwapBE16(18))) 51467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((SampleText, SkTEndian_SwapBE16(19))) 51567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((PostscriptCIDFindfontName, SkTEndian_SwapBE16(20))) 51667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((WWSFamilyName, SkTEndian_SwapBE16(21))) 51767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com ((WWSSubfamilyName, SkTEndian_SwapBE16(22))) 51867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_SEQ_END, 51967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com (value)SK_SEQ_END) 52067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } predefined; 52167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com } nameID; 52267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 52367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The length of the string in SK_OT_BYTEs. */ 52467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT length; 52567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 52667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Offset in SK_OT_BYTEs from start of string storage area 52767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * (see SkOTTableName::stringOffset). 52867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 52967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT offset; 53067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com }; //nameRecord[count]; 53167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 53267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Format1Ext { 53367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The number of languageTagRecords which follow. */ 53467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT langTagCount; 53567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 53667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The encoding of a langTagRecord string is always UTF-16BE. 53767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * The content should follow IETF specification BCP 47. 53867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 53967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct LangTagRecord { 54067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** The length of the string in SK_OT_BYTEs. */ 54167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT length; 54267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 54367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com /** Offset in SK_OT_BYTEs from start of string storage area 54467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com * (see SkOTTableName::stringOffset). 54567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com */ 54667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SK_OT_USHORT offset; 54767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com }; //langTagRecord[langTagCount] 54867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com }; //format1ext (if format == format_1) 54967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 55067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com class Iterator { 55167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com public: 55267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com Iterator(const SkOTTableName& name) : fName(name), fIndex(0), fType(-1) { } 55367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com Iterator(const SkOTTableName& name, SkOTTableName::Record::NameID::Predefined::Value type) 554965c36a5682f9b68df6b37a1f77712e70a39be7fskia.committer@gmail.com : fName(name), fIndex(0), fType(type) 55567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com { } 55667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 557ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com void reset(SkOTTableName::Record::NameID::Predefined::Value type) { 558ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com fIndex = 0; 559ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com fType = type; 560ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com } 561ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com 56267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com struct Record { 563ee8341d57355c54ea8db5fb21be75e7354069fb3bungeman@google.com SK_OT_USHORT type; 56467227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SkString name; 56567227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com SkString language; 56667227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com }; 56767227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com bool next(Record&); 56867227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com 56967227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com private: 57067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com const SkOTTableName& fName; 57167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com size_t fIndex; 57267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com int fType; 57367227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.com }; 57453b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com}; 57553b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 57653b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#pragma pack(pop) 57753b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 57853b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 57953b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.comSK_COMPILE_ASSERT(sizeof(SkOTTableName) == 6, sizeof_SkOTTableName_not_6); 58067227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.comSK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext) == 2, sizeof_SkOTTableNameF1_not_2); 58167227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.comSK_COMPILE_ASSERT(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, sizeof_SkOTTableNameLangTagRecord_not_4); 58267227c5b179ea775aa83f2c17a3b1ab50946bf6ebungeman@google.comSK_COMPILE_ASSERT(sizeof(SkOTTableName::Record) == 12, sizeof_SkOTTableNameRecord_not_12); 58353b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com 58453b95875e13b9881f659ad0d308335a866eb09a4bungeman@google.com#endif 585