/*
|
* Copyright 2012 Google Inc.
|
*
|
* Use of this source code is governed by a BSD-style license that can be
|
* found in the LICENSE file.
|
*/
|
|
#ifndef SkOTTable_name_DEFINED
|
#define SkOTTable_name_DEFINED
|
|
#include "SkEndian.h"
|
#include "SkOTTableTypes.h"
|
#include "SkString.h"
|
|
#pragma pack(push, 1)
|
|
struct SkOTTableName {
|
static const SK_OT_CHAR TAG0 = 'n';
|
static const SK_OT_CHAR TAG1 = 'a';
|
static const SK_OT_CHAR TAG2 = 'm';
|
static const SK_OT_CHAR TAG3 = 'e';
|
static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value;
|
|
SK_OT_USHORT format;
|
static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0);
|
/** Format 1 was added in OpenType 1.6 (April 2009). */
|
static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1);
|
|
/** The number of name records which follow. */
|
SK_OT_USHORT count;
|
|
/** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */
|
SK_OT_USHORT stringOffset;
|
|
struct Record {
|
/** The platform ID specifies how to interpret the encoding and language ID. */
|
struct PlatformID {
|
enum Value : SK_OT_USHORT {
|
Unicode = SkTEndian_SwapBE16(0),
|
Macintosh = SkTEndian_SwapBE16(1),
|
ISO = SkTEndian_SwapBE16(2), // Deprecated, use Unicode instead.
|
Windows = SkTEndian_SwapBE16(3),
|
Custom = SkTEndian_SwapBE16(4),
|
} value;
|
} platformID;
|
|
union EncodingID {
|
SK_OT_USHORT custom;
|
|
/** Always UTF-16BE. */
|
struct Unicode {
|
enum Value : SK_OT_USHORT {
|
Unicode10 = SkTEndian_SwapBE16(0),
|
Unicode11 = SkTEndian_SwapBE16(1),
|
ISO10646 = SkTEndian_SwapBE16(2), //deprecated, use Unicode11
|
Unicode20BMP = SkTEndian_SwapBE16(3),
|
Unicode20 = SkTEndian_SwapBE16(4),
|
UnicodeVariationSequences = SkTEndian_SwapBE16(5),
|
UnicodeFull = SkTEndian_SwapBE16(6),
|
} value;
|
} unicode;
|
|
/** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/
|
* for their mappings to unicode.
|
* Name table strings using PlatformID::Macintosh must use Roman.
|
*/
|
struct Macintosh {
|
enum Value : SK_OT_USHORT {
|
Roman = SkTEndian_SwapBE16(0),
|
Japanese = SkTEndian_SwapBE16(1),
|
ChineseTraditional = SkTEndian_SwapBE16(2),
|
Korean = SkTEndian_SwapBE16(3),
|
Arabic = SkTEndian_SwapBE16(4),
|
Hebrew = SkTEndian_SwapBE16(5),
|
Greek = SkTEndian_SwapBE16(6),
|
Russian = SkTEndian_SwapBE16(7),
|
RSymbol = SkTEndian_SwapBE16(8),
|
Devanagari = SkTEndian_SwapBE16(9),
|
Gurmukhi = SkTEndian_SwapBE16(10),
|
Gujarati = SkTEndian_SwapBE16(11),
|
Oriya = SkTEndian_SwapBE16(12),
|
Bengali = SkTEndian_SwapBE16(13),
|
Tamil = SkTEndian_SwapBE16(14),
|
Telugu = SkTEndian_SwapBE16(15),
|
Kannada = SkTEndian_SwapBE16(16),
|
Malayalam = SkTEndian_SwapBE16(17),
|
Sinhalese = SkTEndian_SwapBE16(18),
|
Burmese = SkTEndian_SwapBE16(19),
|
Khmer = SkTEndian_SwapBE16(20),
|
Thai = SkTEndian_SwapBE16(21),
|
Laotian = SkTEndian_SwapBE16(22),
|
Georgian = SkTEndian_SwapBE16(23),
|
Armenian = SkTEndian_SwapBE16(24),
|
ChineseSimplified = SkTEndian_SwapBE16(25),
|
Tibetan = SkTEndian_SwapBE16(26),
|
Mongolian = SkTEndian_SwapBE16(27),
|
Geez = SkTEndian_SwapBE16(28),
|
Slavic = SkTEndian_SwapBE16(29),
|
Vietnamese = SkTEndian_SwapBE16(30),
|
Sindhi = SkTEndian_SwapBE16(31),
|
Uninterpreted = SkTEndian_SwapBE16(32),
|
} value;
|
} macintosh;
|
|
/** Deprecated, use Unicode instead. */
|
struct ISO {
|
enum Value : SK_OT_USHORT {
|
ASCII7 = SkTEndian_SwapBE16(0),
|
ISO10646 = SkTEndian_SwapBE16(1),
|
ISO88591 = SkTEndian_SwapBE16(2),
|
} value;
|
} iso;
|
|
/** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or
|
* UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually
|
* UTF-16BE.
|
*/
|
struct Windows {
|
enum Value : SK_OT_USHORT {
|
Symbol = SkTEndian_SwapBE16(0), // UCS2-BE, but don't use this font to display it's own name.
|
UnicodeBMPUCS2 = SkTEndian_SwapBE16(1), // UCS2-BE, Windows default
|
ShiftJIS = SkTEndian_SwapBE16(2),
|
PRC = SkTEndian_SwapBE16(3),
|
Big5 = SkTEndian_SwapBE16(4),
|
Wansung = SkTEndian_SwapBE16(5),
|
Johab = SkTEndian_SwapBE16(6),
|
UnicodeUCS4 = SkTEndian_SwapBE16(10), // UTF-16BE. It means UCS4 in charmaps.
|
} value;
|
} windows;
|
} encodingID;
|
|
/** LanguageIDs <= 0x7FFF are predefined.
|
* LanguageIDs > 0x7FFF are indexes into the langTagRecord array
|
* (in format 1 name tables, see SkOTTableName::format).
|
*/
|
union LanguageID {
|
/** A value greater than 0x7FFF.
|
* languageTagID - 0x8000 is an index into the langTagRecord array.
|
*/
|
SK_OT_USHORT languageTagID;
|
|
/** These are known as Language Designators.
|
* Apple now uses BCP 47 (post OSX10.4), so there will be no new entries.
|
*/
|
struct Macintosh {
|
enum Value : SK_OT_USHORT {
|
English = SkTEndian_SwapBE16(0),
|
French = SkTEndian_SwapBE16(1),
|
German = SkTEndian_SwapBE16(2),
|
Italian = SkTEndian_SwapBE16(3),
|
Dutch = SkTEndian_SwapBE16(4),
|
Swedish = SkTEndian_SwapBE16(5),
|
Spanish = SkTEndian_SwapBE16(6),
|
Danish = SkTEndian_SwapBE16(7),
|
Portuguese = SkTEndian_SwapBE16(8),
|
Norwegian = SkTEndian_SwapBE16(9),
|
Hebrew = SkTEndian_SwapBE16(10),
|
Japanese = SkTEndian_SwapBE16(11),
|
Arabic = SkTEndian_SwapBE16(12),
|
Finnish = SkTEndian_SwapBE16(13),
|
Greek = SkTEndian_SwapBE16(14),
|
Icelandic = SkTEndian_SwapBE16(15),
|
Maltese = SkTEndian_SwapBE16(16),
|
Turkish = SkTEndian_SwapBE16(17),
|
Croatian = SkTEndian_SwapBE16(18),
|
ChineseTraditional = SkTEndian_SwapBE16(19),
|
Urdu = SkTEndian_SwapBE16(20),
|
Hindi = SkTEndian_SwapBE16(21),
|
Thai = SkTEndian_SwapBE16(22),
|
Korean = SkTEndian_SwapBE16(23),
|
Lithuanian = SkTEndian_SwapBE16(24),
|
Polish = SkTEndian_SwapBE16(25),
|
Hungarian = SkTEndian_SwapBE16(26),
|
Estonian = SkTEndian_SwapBE16(27),
|
Latvian = SkTEndian_SwapBE16(28),
|
Sami = SkTEndian_SwapBE16(29),
|
Faroese = SkTEndian_SwapBE16(30),
|
Farsi_Persian = SkTEndian_SwapBE16(31),
|
Russian = SkTEndian_SwapBE16(32),
|
ChineseSimplified = SkTEndian_SwapBE16(33),
|
Flemish = SkTEndian_SwapBE16(34),
|
IrishGaelic = SkTEndian_SwapBE16(35),
|
Albanian = SkTEndian_SwapBE16(36),
|
Romanian = SkTEndian_SwapBE16(37),
|
Czech = SkTEndian_SwapBE16(38),
|
Slovak = SkTEndian_SwapBE16(39),
|
Slovenian = SkTEndian_SwapBE16(40),
|
Yiddish = SkTEndian_SwapBE16(41),
|
Serbian = SkTEndian_SwapBE16(42),
|
Macedonian = SkTEndian_SwapBE16(43),
|
Bulgarian = SkTEndian_SwapBE16(44),
|
Ukrainian = SkTEndian_SwapBE16(45),
|
Byelorussian = SkTEndian_SwapBE16(46),
|
Uzbek = SkTEndian_SwapBE16(47),
|
Kazakh = SkTEndian_SwapBE16(48),
|
AzerbaijaniCyrillic = SkTEndian_SwapBE16(49),
|
AzerbaijaniArabic = SkTEndian_SwapBE16(50),
|
Armenian = SkTEndian_SwapBE16(51),
|
Georgian = SkTEndian_SwapBE16(52),
|
Moldavian = SkTEndian_SwapBE16(53),
|
Kirghiz = SkTEndian_SwapBE16(54),
|
Tajiki = SkTEndian_SwapBE16(55),
|
Turkmen = SkTEndian_SwapBE16(56),
|
MongolianTraditional = SkTEndian_SwapBE16(57),
|
MongolianCyrillic = SkTEndian_SwapBE16(58),
|
Pashto = SkTEndian_SwapBE16(59),
|
Kurdish = SkTEndian_SwapBE16(60),
|
Kashmiri = SkTEndian_SwapBE16(61),
|
Sindhi = SkTEndian_SwapBE16(62),
|
Tibetan = SkTEndian_SwapBE16(63),
|
Nepali = SkTEndian_SwapBE16(64),
|
Sanskrit = SkTEndian_SwapBE16(65),
|
Marathi = SkTEndian_SwapBE16(66),
|
Bengali = SkTEndian_SwapBE16(67),
|
Assamese = SkTEndian_SwapBE16(68),
|
Gujarati = SkTEndian_SwapBE16(69),
|
Punjabi = SkTEndian_SwapBE16(70),
|
Oriya = SkTEndian_SwapBE16(71),
|
Malayalam = SkTEndian_SwapBE16(72),
|
Kannada = SkTEndian_SwapBE16(73),
|
Tamil = SkTEndian_SwapBE16(74),
|
Telugu = SkTEndian_SwapBE16(75),
|
Sinhalese = SkTEndian_SwapBE16(76),
|
Burmese = SkTEndian_SwapBE16(77),
|
Khmer = SkTEndian_SwapBE16(78),
|
Lao = SkTEndian_SwapBE16(79),
|
Vietnamese = SkTEndian_SwapBE16(80),
|
Indonesian = SkTEndian_SwapBE16(81),
|
Tagalong = SkTEndian_SwapBE16(82),
|
MalayRoman = SkTEndian_SwapBE16(83),
|
MalayArabic = SkTEndian_SwapBE16(84),
|
Amharic = SkTEndian_SwapBE16(85),
|
Tigrinya = SkTEndian_SwapBE16(86),
|
Galla = SkTEndian_SwapBE16(87),
|
Somali = SkTEndian_SwapBE16(88),
|
Swahili = SkTEndian_SwapBE16(89),
|
Kinyarwanda_Ruanda = SkTEndian_SwapBE16(90),
|
Rundi = SkTEndian_SwapBE16(91),
|
Nyanja_Chewa = SkTEndian_SwapBE16(92),
|
Malagasy = SkTEndian_SwapBE16(93),
|
Esperanto = SkTEndian_SwapBE16(94),
|
Welsh = SkTEndian_SwapBE16(128),
|
Basque = SkTEndian_SwapBE16(129),
|
Catalan = SkTEndian_SwapBE16(130),
|
Latin = SkTEndian_SwapBE16(131),
|
Quenchua = SkTEndian_SwapBE16(132),
|
Guarani = SkTEndian_SwapBE16(133),
|
Aymara = SkTEndian_SwapBE16(134),
|
Tatar = SkTEndian_SwapBE16(135),
|
Uighur = SkTEndian_SwapBE16(136),
|
Dzongkha = SkTEndian_SwapBE16(137),
|
JavaneseRoman = SkTEndian_SwapBE16(138),
|
SundaneseRoman = SkTEndian_SwapBE16(139),
|
Galician = SkTEndian_SwapBE16(140),
|
Afrikaans = SkTEndian_SwapBE16(141),
|
Breton = SkTEndian_SwapBE16(142),
|
Inuktitut = SkTEndian_SwapBE16(143),
|
ScottishGaelic = SkTEndian_SwapBE16(144),
|
ManxGaelic = SkTEndian_SwapBE16(145),
|
IrishGaelicWithLenition = SkTEndian_SwapBE16(146),
|
Tongan = SkTEndian_SwapBE16(147),
|
GreekPolytonic = SkTEndian_SwapBE16(148),
|
Greenlandic = SkTEndian_SwapBE16(149),
|
AzerbaijaniRoman = SkTEndian_SwapBE16(150),
|
} value;
|
} macintosh;
|
|
/** These are known as LCIDs.
|
* On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID.
|
*/
|
struct Windows {
|
enum Value : SK_OT_USHORT {
|
Afrikaans_SouthAfrica = SkTEndian_SwapBE16(0x0436),
|
Albanian_Albania = SkTEndian_SwapBE16(0x041C),
|
Alsatian_France = SkTEndian_SwapBE16(0x0484),
|
Amharic_Ethiopia = SkTEndian_SwapBE16(0x045E),
|
Arabic_Algeria = SkTEndian_SwapBE16(0x1401),
|
Arabic_Bahrain = SkTEndian_SwapBE16(0x3C01),
|
Arabic_Egypt = SkTEndian_SwapBE16(0x0C01),
|
Arabic_Iraq = SkTEndian_SwapBE16(0x0801),
|
Arabic_Jordan = SkTEndian_SwapBE16(0x2C01),
|
Arabic_Kuwait = SkTEndian_SwapBE16(0x3401),
|
Arabic_Lebanon = SkTEndian_SwapBE16(0x3001),
|
Arabic_Libya = SkTEndian_SwapBE16(0x1001),
|
Arabic_Morocco = SkTEndian_SwapBE16(0x1801),
|
Arabic_Oman = SkTEndian_SwapBE16(0x2001),
|
Arabic_Qatar = SkTEndian_SwapBE16(0x4001),
|
Arabic_SaudiArabia = SkTEndian_SwapBE16(0x0401),
|
Arabic_Syria = SkTEndian_SwapBE16(0x2801),
|
Arabic_Tunisia = SkTEndian_SwapBE16(0x1C01),
|
Arabic_UAE = SkTEndian_SwapBE16(0x3801),
|
Arabic_Yemen = SkTEndian_SwapBE16(0x2401),
|
Armenian_Armenia = SkTEndian_SwapBE16(0x042B),
|
Assamese_India = SkTEndian_SwapBE16(0x044D),
|
AzeriCyrillic_Azerbaijan = SkTEndian_SwapBE16(0x082C),
|
AzeriLatin_Azerbaijan = SkTEndian_SwapBE16(0x042C),
|
Bashkir_Russia = SkTEndian_SwapBE16(0x046D),
|
Basque_Basque = SkTEndian_SwapBE16(0x042D),
|
Belarusian_Belarus = SkTEndian_SwapBE16(0x0423),
|
Bengali_Bangladesh = SkTEndian_SwapBE16(0x0845),
|
Bengali_India = SkTEndian_SwapBE16(0x0445),
|
BosnianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x201A),
|
BosnianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x141A),
|
Breton_France = SkTEndian_SwapBE16(0x047E),
|
Bulgarian_Bulgaria = SkTEndian_SwapBE16(0x0402),
|
Catalan_Catalan = SkTEndian_SwapBE16(0x0403),
|
Chinese_HongKongSAR = SkTEndian_SwapBE16(0x0C04),
|
Chinese_MacaoSAR = SkTEndian_SwapBE16(0x1404),
|
Chinese_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0804),
|
Chinese_Singapore = SkTEndian_SwapBE16(0x1004),
|
Chinese_Taiwan = SkTEndian_SwapBE16(0x0404),
|
Corsican_France = SkTEndian_SwapBE16(0x0483),
|
Croatian_Croatia = SkTEndian_SwapBE16(0x041A),
|
CroatianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x101A),
|
Czech_CzechRepublic = SkTEndian_SwapBE16(0x0405),
|
Danish_Denmark = SkTEndian_SwapBE16(0x0406),
|
Dari_Afghanistan = SkTEndian_SwapBE16(0x048C),
|
Divehi_Maldives = SkTEndian_SwapBE16(0x0465),
|
Dutch_Belgium = SkTEndian_SwapBE16(0x0813),
|
Dutch_Netherlands = SkTEndian_SwapBE16(0x0413),
|
English_Australia = SkTEndian_SwapBE16(0x0C09),
|
English_Belize = SkTEndian_SwapBE16(0x2809),
|
English_Canada = SkTEndian_SwapBE16(0x1009),
|
English_Caribbean = SkTEndian_SwapBE16(0x2409),
|
English_India = SkTEndian_SwapBE16(0x4009),
|
English_Ireland = SkTEndian_SwapBE16(0x1809),
|
English_Jamaica = SkTEndian_SwapBE16(0x2009),
|
English_Malaysia = SkTEndian_SwapBE16(0x4409),
|
English_NewZealand = SkTEndian_SwapBE16(0x1409),
|
English_RepublicOfThePhilippines = SkTEndian_SwapBE16(0x3409),
|
English_Singapore = SkTEndian_SwapBE16(0x4809),
|
English_SouthAfrica = SkTEndian_SwapBE16(0x1C09),
|
English_TrinidadAndTobago = SkTEndian_SwapBE16(0x2C09),
|
English_UnitedKingdom = SkTEndian_SwapBE16(0x0809),
|
English_UnitedStates = SkTEndian_SwapBE16(0x0409),
|
English_Zimbabwe = SkTEndian_SwapBE16(0x3009),
|
Estonian_Estonia = SkTEndian_SwapBE16(0x0425),
|
Faroese_FaroeIslands = SkTEndian_SwapBE16(0x0438),
|
Filipino_Philippines = SkTEndian_SwapBE16(0x0464),
|
Finnish_Finland = SkTEndian_SwapBE16(0x040B),
|
French_Belgium = SkTEndian_SwapBE16(0x080C),
|
French_Canada = SkTEndian_SwapBE16(0x0C0C),
|
French_France = SkTEndian_SwapBE16(0x040C),
|
French_Luxembourg = SkTEndian_SwapBE16(0x140c),
|
French_PrincipalityOfMonoco = SkTEndian_SwapBE16(0x180C),
|
French_Switzerland = SkTEndian_SwapBE16(0x100C),
|
Frisian_Netherlands = SkTEndian_SwapBE16(0x0462),
|
Galician_Galician = SkTEndian_SwapBE16(0x0456),
|
Georgian_Georgia = SkTEndian_SwapBE16(0x0437),
|
German_Austria = SkTEndian_SwapBE16(0x0C07),
|
German_Germany = SkTEndian_SwapBE16(0x0407),
|
German_Liechtenstein = SkTEndian_SwapBE16(0x1407),
|
German_Luxembourg = SkTEndian_SwapBE16(0x1007),
|
German_Switzerland = SkTEndian_SwapBE16(0x0807),
|
Greek_Greece = SkTEndian_SwapBE16(0x0408),
|
Greenlandic_Greenland = SkTEndian_SwapBE16(0x046F),
|
Gujarati_India = SkTEndian_SwapBE16(0x0447),
|
HausaLatin_Nigeria = SkTEndian_SwapBE16(0x0468),
|
Hebrew_Israel = SkTEndian_SwapBE16(0x040D),
|
Hindi_India = SkTEndian_SwapBE16(0x0439),
|
Hungarian_Hungary = SkTEndian_SwapBE16(0x040E),
|
Icelandic_Iceland = SkTEndian_SwapBE16(0x040F),
|
Igbo_Nigeria = SkTEndian_SwapBE16(0x0470),
|
Indonesian_Indonesia = SkTEndian_SwapBE16(0x0421),
|
Inuktitut_Canada = SkTEndian_SwapBE16(0x045D),
|
InuktitutLatin_Canada = SkTEndian_SwapBE16(0x085D),
|
Irish_Ireland = SkTEndian_SwapBE16(0x083C),
|
isiXhosa_SouthAfrica = SkTEndian_SwapBE16(0x0434),
|
isiZulu_SouthAfrica = SkTEndian_SwapBE16(0x0435),
|
Italian_Italy = SkTEndian_SwapBE16(0x0410),
|
Italian_Switzerland = SkTEndian_SwapBE16(0x0810),
|
Japanese_Japan = SkTEndian_SwapBE16(0x0411),
|
Kannada_India = SkTEndian_SwapBE16(0x044B),
|
Kazakh_Kazakhstan = SkTEndian_SwapBE16(0x043F),
|
Khmer_Cambodia = SkTEndian_SwapBE16(0x0453),
|
Kiche_Guatemala = SkTEndian_SwapBE16(0x0486),
|
Kinyarwanda_Rwanda = SkTEndian_SwapBE16(0x0487),
|
Kiswahili_Kenya = SkTEndian_SwapBE16(0x0441),
|
Konkani_India = SkTEndian_SwapBE16(0x0457),
|
Korean_Korea = SkTEndian_SwapBE16(0x0412),
|
Kyrgyz_Kyrgyzstan = SkTEndian_SwapBE16(0x0440),
|
Lao_LaoPDR = SkTEndian_SwapBE16(0x0454),
|
Latvian_Latvia = SkTEndian_SwapBE16(0x0426),
|
Lithuanian_Lithuania = SkTEndian_SwapBE16(0x0427),
|
LowerSorbian_Germany = SkTEndian_SwapBE16(0x082E),
|
Luxembourgish_Luxembourg = SkTEndian_SwapBE16(0x046E),
|
MacedonianFYROM_FormerYugoslavRepublicOfMacedonia = SkTEndian_SwapBE16(0x042F),
|
Malay_BruneiDarussalam = SkTEndian_SwapBE16(0x083E),
|
Malay_Malaysia = SkTEndian_SwapBE16(0x043E),
|
Malayalam_India = SkTEndian_SwapBE16(0x044C),
|
Maltese_Malta = SkTEndian_SwapBE16(0x043A),
|
Maori_NewZealand = SkTEndian_SwapBE16(0x0481),
|
Mapudungun_Chile = SkTEndian_SwapBE16(0x047A),
|
Marathi_India = SkTEndian_SwapBE16(0x044E),
|
Mohawk_Mohawk = SkTEndian_SwapBE16(0x047C),
|
MongolianCyrillic_Mongolia = SkTEndian_SwapBE16(0x0450),
|
MongolianTraditional_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0850),
|
Nepali_Nepal = SkTEndian_SwapBE16(0x0461),
|
NorwegianBokmal_Norway = SkTEndian_SwapBE16(0x0414),
|
NorwegianNynorsk_Norway = SkTEndian_SwapBE16(0x0814),
|
Occitan_France = SkTEndian_SwapBE16(0x0482),
|
Odia_India = SkTEndian_SwapBE16(0x0448),
|
Pashto_Afghanistan = SkTEndian_SwapBE16(0x0463),
|
Polish_Poland = SkTEndian_SwapBE16(0x0415),
|
Portuguese_Brazil = SkTEndian_SwapBE16(0x0416),
|
Portuguese_Portugal = SkTEndian_SwapBE16(0x0816),
|
Punjabi_India = SkTEndian_SwapBE16(0x0446),
|
Quechua_Bolivia = SkTEndian_SwapBE16(0x046B),
|
Quechua_Ecuador = SkTEndian_SwapBE16(0x086B),
|
Quechua_Peru = SkTEndian_SwapBE16(0x0C6B),
|
Romanian_Romania = SkTEndian_SwapBE16(0x0418),
|
Romansh_Switzerland = SkTEndian_SwapBE16(0x0417),
|
Russian_Russia = SkTEndian_SwapBE16(0x0419),
|
SamiInari_Finland = SkTEndian_SwapBE16(0x243B),
|
SamiLule_Norway = SkTEndian_SwapBE16(0x103B),
|
SamiLule_Sweden = SkTEndian_SwapBE16(0x143B),
|
SamiNorthern_Finland = SkTEndian_SwapBE16(0x0C3B),
|
SamiNorthern_Norway = SkTEndian_SwapBE16(0x043B),
|
SamiNorthern_Sweden = SkTEndian_SwapBE16(0x083B),
|
SamiSkolt_Finland = SkTEndian_SwapBE16(0x203B),
|
SamiSouthern_Norway = SkTEndian_SwapBE16(0x183B),
|
SamiSouthern_Sweden = SkTEndian_SwapBE16(0x1C3B),
|
Sanskrit_India = SkTEndian_SwapBE16(0x044F),
|
SerbianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x1C1A),
|
SerbianCyrillic_Serbia = SkTEndian_SwapBE16(0x0C1A),
|
SerbianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x181A),
|
SerbianLatin_Serbia = SkTEndian_SwapBE16(0x081A),
|
SesothoSaLeboa_SouthAfrica = SkTEndian_SwapBE16(0x046C),
|
Setswana_SouthAfrica = SkTEndian_SwapBE16(0x0432),
|
Sinhala_SriLanka = SkTEndian_SwapBE16(0x045B),
|
Slovak_Slovakia = SkTEndian_SwapBE16(0x041B),
|
Slovenian_Slovenia = SkTEndian_SwapBE16(0x0424),
|
Spanish_Argentina = SkTEndian_SwapBE16(0x2C0A),
|
Spanish_Bolivia = SkTEndian_SwapBE16(0x400A),
|
Spanish_Chile = SkTEndian_SwapBE16(0x340A),
|
Spanish_Colombia = SkTEndian_SwapBE16(0x240A),
|
Spanish_CostaRica = SkTEndian_SwapBE16(0x140A),
|
Spanish_DominicanRepublic = SkTEndian_SwapBE16(0x1C0A),
|
Spanish_Ecuador = SkTEndian_SwapBE16(0x300A),
|
Spanish_ElSalvador = SkTEndian_SwapBE16(0x440A),
|
Spanish_Guatemala = SkTEndian_SwapBE16(0x100A),
|
Spanish_Honduras = SkTEndian_SwapBE16(0x480A),
|
Spanish_Mexico = SkTEndian_SwapBE16(0x080A),
|
Spanish_Nicaragua = SkTEndian_SwapBE16(0x4C0A),
|
Spanish_Panama = SkTEndian_SwapBE16(0x180A),
|
Spanish_Paraguay = SkTEndian_SwapBE16(0x3C0A),
|
Spanish_Peru = SkTEndian_SwapBE16(0x280A),
|
Spanish_PuertoRico = SkTEndian_SwapBE16(0x500A),
|
SpanishModernSort_Spain = SkTEndian_SwapBE16(0x0C0A),
|
SpanishTraditionalSort_Spain = SkTEndian_SwapBE16(0x040A),
|
Spanish_UnitedStates = SkTEndian_SwapBE16(0x540A),
|
Spanish_Uruguay = SkTEndian_SwapBE16(0x380A),
|
Spanish_Venezuela = SkTEndian_SwapBE16(0x200A),
|
Sweden_Finland = SkTEndian_SwapBE16(0x081D),
|
Swedish_Sweden = SkTEndian_SwapBE16(0x041D),
|
Syriac_Syria = SkTEndian_SwapBE16(0x045A),
|
TajikCyrillic_Tajikistan = SkTEndian_SwapBE16(0x0428),
|
TamazightLatin_Algeria = SkTEndian_SwapBE16(0x085F),
|
Tamil_India = SkTEndian_SwapBE16(0x0449),
|
Tatar_Russia = SkTEndian_SwapBE16(0x0444),
|
Telugu_India = SkTEndian_SwapBE16(0x044A),
|
Thai_Thailand = SkTEndian_SwapBE16(0x041E),
|
Tibetan_PRC = SkTEndian_SwapBE16(0x0451),
|
Turkish_Turkey = SkTEndian_SwapBE16(0x041F),
|
Turkmen_Turkmenistan = SkTEndian_SwapBE16(0x0442),
|
Uighur_PRC = SkTEndian_SwapBE16(0x0480),
|
Ukrainian_Ukraine = SkTEndian_SwapBE16(0x0422),
|
UpperSorbian_Germany = SkTEndian_SwapBE16(0x042E),
|
Urdu_IslamicRepublicOfPakistan = SkTEndian_SwapBE16(0x0420),
|
UzbekCyrillic_Uzbekistan = SkTEndian_SwapBE16(0x0843),
|
UzbekLatin_Uzbekistan = SkTEndian_SwapBE16(0x0443),
|
Vietnamese_Vietnam = SkTEndian_SwapBE16(0x042A),
|
Welsh_UnitedKingdom = SkTEndian_SwapBE16(0x0452),
|
Wolof_Senegal = SkTEndian_SwapBE16(0x0488),
|
Yakut_Russia = SkTEndian_SwapBE16(0x0485),
|
Yi_PRC = SkTEndian_SwapBE16(0x0478),
|
Yoruba_Nigeria = SkTEndian_SwapBE16(0x046A),
|
} value;
|
} windows;
|
} languageID;
|
|
/** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */
|
union NameID {
|
/** A font specific name id which should be greater than 0xFF. */
|
SK_OT_USHORT fontSpecific;
|
struct Predefined {
|
enum Value : SK_OT_USHORT {
|
CopyrightNotice = SkTEndian_SwapBE16(0),
|
FontFamilyName = SkTEndian_SwapBE16(1),
|
FontSubfamilyName = SkTEndian_SwapBE16(2),
|
UniqueFontIdentifier = SkTEndian_SwapBE16(3),
|
FullFontName = SkTEndian_SwapBE16(4),
|
VersionString = SkTEndian_SwapBE16(5), //Version <number>.<number>
|
PostscriptName = SkTEndian_SwapBE16(6), //See spec for constraints.
|
Trademark = SkTEndian_SwapBE16(7),
|
ManufacturerName = SkTEndian_SwapBE16(8),
|
Designer = SkTEndian_SwapBE16(9),
|
Description = SkTEndian_SwapBE16(10),
|
URLVendor = SkTEndian_SwapBE16(11),
|
URLDesigner = SkTEndian_SwapBE16(12),
|
LicenseDescription = SkTEndian_SwapBE16(13),
|
LicenseInfoURL = SkTEndian_SwapBE16(14),
|
PreferredFamily = SkTEndian_SwapBE16(16),
|
PreferredSubfamily = SkTEndian_SwapBE16(17),
|
CompatibleFullName = SkTEndian_SwapBE16(18),
|
SampleText = SkTEndian_SwapBE16(19),
|
PostscriptCIDFindfontName = SkTEndian_SwapBE16(20),
|
WWSFamilyName = SkTEndian_SwapBE16(21),
|
WWSSubfamilyName = SkTEndian_SwapBE16(22),
|
} value;
|
} predefined;
|
} nameID;
|
|
/** The length of the string in SK_OT_BYTEs. */
|
SK_OT_USHORT length;
|
|
/** Offset in SK_OT_BYTEs from start of string storage area
|
* (see SkOTTableName::stringOffset).
|
*/
|
SK_OT_USHORT offset;
|
}; //nameRecord[count];
|
|
struct Format1Ext {
|
/** The number of languageTagRecords which follow. */
|
SK_OT_USHORT langTagCount;
|
|
/** The encoding of a langTagRecord string is always UTF-16BE.
|
* The content should follow IETF specification BCP 47.
|
*/
|
struct LangTagRecord {
|
/** The length of the string in SK_OT_BYTEs. */
|
SK_OT_USHORT length;
|
|
/** Offset in SK_OT_BYTEs from start of string storage area
|
* (see SkOTTableName::stringOffset).
|
*/
|
SK_OT_USHORT offset;
|
}; //langTagRecord[langTagCount]
|
}; //format1ext (if format == format_1)
|
|
class Iterator {
|
public:
|
Iterator(const uint8_t* nameTable, size_t size)
|
: fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(-1) { }
|
Iterator(const uint8_t* nameTable, size_t size, SK_OT_USHORT type)
|
: fNameTable(nameTable), fNameTableSize(size), fIndex(0), fType(type)
|
{ }
|
|
void reset(SK_OT_USHORT type) {
|
fIndex = 0;
|
fType = type;
|
}
|
|
struct Record {
|
SkString name;
|
SkString language;
|
SK_OT_USHORT type;
|
};
|
bool next(Record&);
|
|
private:
|
const uint8_t* fNameTable;
|
const size_t fNameTableSize;
|
size_t fIndex;
|
int fType;
|
};
|
};
|
|
#pragma pack(pop)
|
|
|
static_assert(sizeof(SkOTTableName) == 6, "sizeof_SkOTTableName_not_6");
|
static_assert(sizeof(SkOTTableName::Format1Ext) == 2, "sizeof_SkOTTableNameF1_not_2");
|
static_assert(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, "sizeof_SkOTTableNameLangTagRecord_not_4");
|
static_assert(sizeof(SkOTTableName::Record) == 12, "sizeof_SkOTTableNameRecord_not_12");
|
|
#endif
|