LCOV - code coverage report
Current view: top level - gfx/skia/skia/src/sfnt - SkOTTable_name.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 8 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 4 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright 2012 Google Inc.
       3             :  *
       4             :  * Use of this source code is governed by a BSD-style license that can be
       5             :  * found in the LICENSE file.
       6             :  */
       7             : 
       8             : #ifndef SkOTTable_name_DEFINED
       9             : #define SkOTTable_name_DEFINED
      10             : 
      11             : #include "SkEndian.h"
      12             : #include "SkOTTableTypes.h"
      13             : #include "SkString.h"
      14             : 
      15             : #pragma pack(push, 1)
      16             : 
      17             : struct SkOTTableName {
      18             :     static const SK_OT_CHAR TAG0 = 'n';
      19             :     static const SK_OT_CHAR TAG1 = 'a';
      20             :     static const SK_OT_CHAR TAG2 = 'm';
      21             :     static const SK_OT_CHAR TAG3 = 'e';
      22             :     static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableName>::value;
      23             : 
      24             :     SK_OT_USHORT format;
      25             :     static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0);
      26             :     /** Format 1 was added in OpenType 1.6 (April 2009). */
      27             :     static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1);
      28             : 
      29             :     /** The number of name records which follow. */
      30             :     SK_OT_USHORT count;
      31             : 
      32             :     /** Offset in SK_OT_BYTEs to start of string storage area (from start of table). */
      33             :     SK_OT_USHORT stringOffset;
      34             : 
      35             :     struct Record {
      36             :         /** The platform ID specifies how to interpret the encoding and language ID. */
      37             :         struct PlatformID {
      38             :             enum Value : SK_OT_USHORT {
      39             :                 Unicode = SkTEndian_SwapBE16(0),
      40             :                 Macintosh = SkTEndian_SwapBE16(1),
      41             :                 ISO = SkTEndian_SwapBE16(2), // Deprecated, use Unicode instead.
      42             :                 Windows = SkTEndian_SwapBE16(3),
      43             :                 Custom = SkTEndian_SwapBE16(4),
      44             :             } value;
      45             :         } platformID;
      46             : 
      47             :         union EncodingID {
      48             :             SK_OT_USHORT custom;
      49             : 
      50             :             /** Always UTF-16BE. */
      51             :             struct Unicode {
      52             :                 enum Value : SK_OT_USHORT {
      53             :                     Unicode10 = SkTEndian_SwapBE16(0),
      54             :                     Unicode11 = SkTEndian_SwapBE16(1),
      55             :                     ISO10646 = SkTEndian_SwapBE16(2), //deprecated, use Unicode11
      56             :                     Unicode20BMP = SkTEndian_SwapBE16(3),
      57             :                     Unicode20 = SkTEndian_SwapBE16(4),
      58             :                     UnicodeVariationSequences = SkTEndian_SwapBE16(5),
      59             :                     UnicodeFull = SkTEndian_SwapBE16(6),
      60             :                 } value;
      61             :             } unicode;
      62             : 
      63             :             /** These are Mac encodings, see http://www.unicode.org/Public/MAPPINGS/VENDORS/APPLE/
      64             :              *  for their mappings to unicode.
      65             :              *  Name table strings using PlatformID::Macintosh must use Roman.
      66             :              */
      67             :             struct Macintosh {
      68             :                 enum Value : SK_OT_USHORT {
      69             :                     Roman = SkTEndian_SwapBE16(0),
      70             :                     Japanese = SkTEndian_SwapBE16(1),
      71             :                     ChineseTraditional = SkTEndian_SwapBE16(2),
      72             :                     Korean = SkTEndian_SwapBE16(3),
      73             :                     Arabic = SkTEndian_SwapBE16(4),
      74             :                     Hebrew = SkTEndian_SwapBE16(5),
      75             :                     Greek = SkTEndian_SwapBE16(6),
      76             :                     Russian = SkTEndian_SwapBE16(7),
      77             :                     RSymbol = SkTEndian_SwapBE16(8),
      78             :                     Devanagari = SkTEndian_SwapBE16(9),
      79             :                     Gurmukhi = SkTEndian_SwapBE16(10),
      80             :                     Gujarati = SkTEndian_SwapBE16(11),
      81             :                     Oriya = SkTEndian_SwapBE16(12),
      82             :                     Bengali = SkTEndian_SwapBE16(13),
      83             :                     Tamil = SkTEndian_SwapBE16(14),
      84             :                     Telugu = SkTEndian_SwapBE16(15),
      85             :                     Kannada = SkTEndian_SwapBE16(16),
      86             :                     Malayalam = SkTEndian_SwapBE16(17),
      87             :                     Sinhalese = SkTEndian_SwapBE16(18),
      88             :                     Burmese = SkTEndian_SwapBE16(19),
      89             :                     Khmer = SkTEndian_SwapBE16(20),
      90             :                     Thai = SkTEndian_SwapBE16(21),
      91             :                     Laotian = SkTEndian_SwapBE16(22),
      92             :                     Georgian = SkTEndian_SwapBE16(23),
      93             :                     Armenian = SkTEndian_SwapBE16(24),
      94             :                     ChineseSimplified = SkTEndian_SwapBE16(25),
      95             :                     Tibetan = SkTEndian_SwapBE16(26),
      96             :                     Mongolian = SkTEndian_SwapBE16(27),
      97             :                     Geez = SkTEndian_SwapBE16(28),
      98             :                     Slavic = SkTEndian_SwapBE16(29),
      99             :                     Vietnamese = SkTEndian_SwapBE16(30),
     100             :                     Sindhi = SkTEndian_SwapBE16(31),
     101             :                     Uninterpreted = SkTEndian_SwapBE16(32),
     102             :                 } value;
     103             :             } macintosh;
     104             : 
     105             :             /** Deprecated, use Unicode instead. */
     106             :             struct ISO {
     107             :                 enum Value : SK_OT_USHORT {
     108             :                     ASCII7 = SkTEndian_SwapBE16(0),
     109             :                     ISO10646 = SkTEndian_SwapBE16(1),
     110             :                     ISO88591 = SkTEndian_SwapBE16(2),
     111             :                 } value;
     112             :             } iso;
     113             : 
     114             :             /** Name table strings using PlatformID::Windows must use Symbol, UnicodeBMPUCS2, or
     115             :              *  UnicodeUCS4. Symbol and UnicodeBMPUCS2 are both UCS2-BE, UnicodeUCS4 is actually
     116             :              *  UTF-16BE.
     117             :              */
     118             :             struct Windows {
     119             :                 enum Value : SK_OT_USHORT {
     120             :                     Symbol = SkTEndian_SwapBE16(0), // UCS2-BE, but don't use this font to display it's own name.
     121             :                     UnicodeBMPUCS2 = SkTEndian_SwapBE16(1), // UCS2-BE, Windows default
     122             :                     ShiftJIS = SkTEndian_SwapBE16(2),
     123             :                     PRC = SkTEndian_SwapBE16(3),
     124             :                     Big5 = SkTEndian_SwapBE16(4),
     125             :                     Wansung = SkTEndian_SwapBE16(5),
     126             :                     Johab = SkTEndian_SwapBE16(6),
     127             :                     UnicodeUCS4 = SkTEndian_SwapBE16(10), // UTF-16BE. It means UCS4 in charmaps.
     128             :                 } value;
     129             :             } windows;
     130             :         } encodingID;
     131             : 
     132             :         /** LanguageIDs <= 0x7FFF are predefined.
     133             :          *  LanguageIDs > 0x7FFF are indexes into the langTagRecord array
     134             :          *  (in format 1 name tables, see SkOTTableName::format).
     135             :          */
     136             :         union LanguageID {
     137             :             /** A value greater than 0x7FFF.
     138             :              *  languageTagID - 0x8000 is an index into the langTagRecord array.
     139             :              */
     140             :             SK_OT_USHORT languageTagID;
     141             : 
     142             :             /** These are known as Language Designators.
     143             :              *  Apple now uses BCP 47 (post OSX10.4), so there will be no new entries.
     144             :              */
     145             :             struct Macintosh {
     146             :                 enum Value : SK_OT_USHORT {
     147             :                     English = SkTEndian_SwapBE16(0),
     148             :                     French = SkTEndian_SwapBE16(1),
     149             :                     German = SkTEndian_SwapBE16(2),
     150             :                     Italian = SkTEndian_SwapBE16(3),
     151             :                     Dutch = SkTEndian_SwapBE16(4),
     152             :                     Swedish = SkTEndian_SwapBE16(5),
     153             :                     Spanish = SkTEndian_SwapBE16(6),
     154             :                     Danish = SkTEndian_SwapBE16(7),
     155             :                     Portuguese = SkTEndian_SwapBE16(8),
     156             :                     Norwegian = SkTEndian_SwapBE16(9),
     157             :                     Hebrew = SkTEndian_SwapBE16(10),
     158             :                     Japanese = SkTEndian_SwapBE16(11),
     159             :                     Arabic = SkTEndian_SwapBE16(12),
     160             :                     Finnish = SkTEndian_SwapBE16(13),
     161             :                     Greek = SkTEndian_SwapBE16(14),
     162             :                     Icelandic = SkTEndian_SwapBE16(15),
     163             :                     Maltese = SkTEndian_SwapBE16(16),
     164             :                     Turkish = SkTEndian_SwapBE16(17),
     165             :                     Croatian = SkTEndian_SwapBE16(18),
     166             :                     ChineseTraditional = SkTEndian_SwapBE16(19),
     167             :                     Urdu = SkTEndian_SwapBE16(20),
     168             :                     Hindi = SkTEndian_SwapBE16(21),
     169             :                     Thai = SkTEndian_SwapBE16(22),
     170             :                     Korean = SkTEndian_SwapBE16(23),
     171             :                     Lithuanian = SkTEndian_SwapBE16(24),
     172             :                     Polish = SkTEndian_SwapBE16(25),
     173             :                     Hungarian = SkTEndian_SwapBE16(26),
     174             :                     Estonian = SkTEndian_SwapBE16(27),
     175             :                     Latvian = SkTEndian_SwapBE16(28),
     176             :                     Sami = SkTEndian_SwapBE16(29),
     177             :                     Faroese = SkTEndian_SwapBE16(30),
     178             :                     Farsi_Persian = SkTEndian_SwapBE16(31),
     179             :                     Russian = SkTEndian_SwapBE16(32),
     180             :                     ChineseSimplified = SkTEndian_SwapBE16(33),
     181             :                     Flemish = SkTEndian_SwapBE16(34),
     182             :                     IrishGaelic = SkTEndian_SwapBE16(35),
     183             :                     Albanian = SkTEndian_SwapBE16(36),
     184             :                     Romanian = SkTEndian_SwapBE16(37),
     185             :                     Czech = SkTEndian_SwapBE16(38),
     186             :                     Slovak = SkTEndian_SwapBE16(39),
     187             :                     Slovenian = SkTEndian_SwapBE16(40),
     188             :                     Yiddish = SkTEndian_SwapBE16(41),
     189             :                     Serbian = SkTEndian_SwapBE16(42),
     190             :                     Macedonian = SkTEndian_SwapBE16(43),
     191             :                     Bulgarian = SkTEndian_SwapBE16(44),
     192             :                     Ukrainian = SkTEndian_SwapBE16(45),
     193             :                     Byelorussian = SkTEndian_SwapBE16(46),
     194             :                     Uzbek = SkTEndian_SwapBE16(47),
     195             :                     Kazakh = SkTEndian_SwapBE16(48),
     196             :                     AzerbaijaniCyrillic = SkTEndian_SwapBE16(49),
     197             :                     AzerbaijaniArabic = SkTEndian_SwapBE16(50),
     198             :                     Armenian = SkTEndian_SwapBE16(51),
     199             :                     Georgian = SkTEndian_SwapBE16(52),
     200             :                     Moldavian = SkTEndian_SwapBE16(53),
     201             :                     Kirghiz = SkTEndian_SwapBE16(54),
     202             :                     Tajiki = SkTEndian_SwapBE16(55),
     203             :                     Turkmen = SkTEndian_SwapBE16(56),
     204             :                     MongolianTraditional = SkTEndian_SwapBE16(57),
     205             :                     MongolianCyrillic = SkTEndian_SwapBE16(58),
     206             :                     Pashto = SkTEndian_SwapBE16(59),
     207             :                     Kurdish = SkTEndian_SwapBE16(60),
     208             :                     Kashmiri = SkTEndian_SwapBE16(61),
     209             :                     Sindhi = SkTEndian_SwapBE16(62),
     210             :                     Tibetan = SkTEndian_SwapBE16(63),
     211             :                     Nepali = SkTEndian_SwapBE16(64),
     212             :                     Sanskrit = SkTEndian_SwapBE16(65),
     213             :                     Marathi = SkTEndian_SwapBE16(66),
     214             :                     Bengali = SkTEndian_SwapBE16(67),
     215             :                     Assamese = SkTEndian_SwapBE16(68),
     216             :                     Gujarati = SkTEndian_SwapBE16(69),
     217             :                     Punjabi = SkTEndian_SwapBE16(70),
     218             :                     Oriya = SkTEndian_SwapBE16(71),
     219             :                     Malayalam = SkTEndian_SwapBE16(72),
     220             :                     Kannada = SkTEndian_SwapBE16(73),
     221             :                     Tamil = SkTEndian_SwapBE16(74),
     222             :                     Telugu = SkTEndian_SwapBE16(75),
     223             :                     Sinhalese = SkTEndian_SwapBE16(76),
     224             :                     Burmese = SkTEndian_SwapBE16(77),
     225             :                     Khmer = SkTEndian_SwapBE16(78),
     226             :                     Lao = SkTEndian_SwapBE16(79),
     227             :                     Vietnamese = SkTEndian_SwapBE16(80),
     228             :                     Indonesian = SkTEndian_SwapBE16(81),
     229             :                     Tagalong = SkTEndian_SwapBE16(82),
     230             :                     MalayRoman = SkTEndian_SwapBE16(83),
     231             :                     MalayArabic = SkTEndian_SwapBE16(84),
     232             :                     Amharic = SkTEndian_SwapBE16(85),
     233             :                     Tigrinya = SkTEndian_SwapBE16(86),
     234             :                     Galla = SkTEndian_SwapBE16(87),
     235             :                     Somali = SkTEndian_SwapBE16(88),
     236             :                     Swahili = SkTEndian_SwapBE16(89),
     237             :                     Kinyarwanda_Ruanda = SkTEndian_SwapBE16(90),
     238             :                     Rundi = SkTEndian_SwapBE16(91),
     239             :                     Nyanja_Chewa = SkTEndian_SwapBE16(92),
     240             :                     Malagasy = SkTEndian_SwapBE16(93),
     241             :                     Esperanto = SkTEndian_SwapBE16(94),
     242             :                     Welsh = SkTEndian_SwapBE16(128),
     243             :                     Basque = SkTEndian_SwapBE16(129),
     244             :                     Catalan = SkTEndian_SwapBE16(130),
     245             :                     Latin = SkTEndian_SwapBE16(131),
     246             :                     Quenchua = SkTEndian_SwapBE16(132),
     247             :                     Guarani = SkTEndian_SwapBE16(133),
     248             :                     Aymara = SkTEndian_SwapBE16(134),
     249             :                     Tatar = SkTEndian_SwapBE16(135),
     250             :                     Uighur = SkTEndian_SwapBE16(136),
     251             :                     Dzongkha = SkTEndian_SwapBE16(137),
     252             :                     JavaneseRoman = SkTEndian_SwapBE16(138),
     253             :                     SundaneseRoman = SkTEndian_SwapBE16(139),
     254             :                     Galician = SkTEndian_SwapBE16(140),
     255             :                     Afrikaans = SkTEndian_SwapBE16(141),
     256             :                     Breton = SkTEndian_SwapBE16(142),
     257             :                     Inuktitut = SkTEndian_SwapBE16(143),
     258             :                     ScottishGaelic = SkTEndian_SwapBE16(144),
     259             :                     ManxGaelic = SkTEndian_SwapBE16(145),
     260             :                     IrishGaelicWithLenition = SkTEndian_SwapBE16(146),
     261             :                     Tongan = SkTEndian_SwapBE16(147),
     262             :                     GreekPolytonic = SkTEndian_SwapBE16(148),
     263             :                     Greenlandic = SkTEndian_SwapBE16(149),
     264             :                     AzerbaijaniRoman = SkTEndian_SwapBE16(150),
     265             :                 } value;
     266             :             } macintosh;
     267             : 
     268             :             /** These are known as LCIDs.
     269             :              *  On Windows the current set can be had from EnumSystemLocalesEx and LocaleNameToLCID.
     270             :              */
     271             :             struct Windows {
     272             :                 enum Value : SK_OT_USHORT {
     273             :                     Afrikaans_SouthAfrica = SkTEndian_SwapBE16(0x0436),
     274             :                     Albanian_Albania = SkTEndian_SwapBE16(0x041C),
     275             :                     Alsatian_France = SkTEndian_SwapBE16(0x0484),
     276             :                     Amharic_Ethiopia = SkTEndian_SwapBE16(0x045E),
     277             :                     Arabic_Algeria = SkTEndian_SwapBE16(0x1401),
     278             :                     Arabic_Bahrain = SkTEndian_SwapBE16(0x3C01),
     279             :                     Arabic_Egypt = SkTEndian_SwapBE16(0x0C01),
     280             :                     Arabic_Iraq = SkTEndian_SwapBE16(0x0801),
     281             :                     Arabic_Jordan = SkTEndian_SwapBE16(0x2C01),
     282             :                     Arabic_Kuwait = SkTEndian_SwapBE16(0x3401),
     283             :                     Arabic_Lebanon = SkTEndian_SwapBE16(0x3001),
     284             :                     Arabic_Libya = SkTEndian_SwapBE16(0x1001),
     285             :                     Arabic_Morocco = SkTEndian_SwapBE16(0x1801),
     286             :                     Arabic_Oman = SkTEndian_SwapBE16(0x2001),
     287             :                     Arabic_Qatar = SkTEndian_SwapBE16(0x4001),
     288             :                     Arabic_SaudiArabia = SkTEndian_SwapBE16(0x0401),
     289             :                     Arabic_Syria = SkTEndian_SwapBE16(0x2801),
     290             :                     Arabic_Tunisia = SkTEndian_SwapBE16(0x1C01),
     291             :                     Arabic_UAE = SkTEndian_SwapBE16(0x3801),
     292             :                     Arabic_Yemen = SkTEndian_SwapBE16(0x2401),
     293             :                     Armenian_Armenia = SkTEndian_SwapBE16(0x042B),
     294             :                     Assamese_India = SkTEndian_SwapBE16(0x044D),
     295             :                     AzeriCyrillic_Azerbaijan = SkTEndian_SwapBE16(0x082C),
     296             :                     AzeriLatin_Azerbaijan = SkTEndian_SwapBE16(0x042C),
     297             :                     Bashkir_Russia = SkTEndian_SwapBE16(0x046D),
     298             :                     Basque_Basque = SkTEndian_SwapBE16(0x042D),
     299             :                     Belarusian_Belarus = SkTEndian_SwapBE16(0x0423),
     300             :                     Bengali_Bangladesh = SkTEndian_SwapBE16(0x0845),
     301             :                     Bengali_India = SkTEndian_SwapBE16(0x0445),
     302             :                     BosnianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x201A),
     303             :                     BosnianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x141A),
     304             :                     Breton_France = SkTEndian_SwapBE16(0x047E),
     305             :                     Bulgarian_Bulgaria = SkTEndian_SwapBE16(0x0402),
     306             :                     Catalan_Catalan = SkTEndian_SwapBE16(0x0403),
     307             :                     Chinese_HongKongSAR = SkTEndian_SwapBE16(0x0C04),
     308             :                     Chinese_MacaoSAR = SkTEndian_SwapBE16(0x1404),
     309             :                     Chinese_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0804),
     310             :                     Chinese_Singapore = SkTEndian_SwapBE16(0x1004),
     311             :                     Chinese_Taiwan = SkTEndian_SwapBE16(0x0404),
     312             :                     Corsican_France = SkTEndian_SwapBE16(0x0483),
     313             :                     Croatian_Croatia = SkTEndian_SwapBE16(0x041A),
     314             :                     CroatianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x101A),
     315             :                     Czech_CzechRepublic = SkTEndian_SwapBE16(0x0405),
     316             :                     Danish_Denmark = SkTEndian_SwapBE16(0x0406),
     317             :                     Dari_Afghanistan = SkTEndian_SwapBE16(0x048C),
     318             :                     Divehi_Maldives = SkTEndian_SwapBE16(0x0465),
     319             :                     Dutch_Belgium = SkTEndian_SwapBE16(0x0813),
     320             :                     Dutch_Netherlands = SkTEndian_SwapBE16(0x0413),
     321             :                     English_Australia = SkTEndian_SwapBE16(0x0C09),
     322             :                     English_Belize = SkTEndian_SwapBE16(0x2809),
     323             :                     English_Canada = SkTEndian_SwapBE16(0x1009),
     324             :                     English_Caribbean = SkTEndian_SwapBE16(0x2409),
     325             :                     English_India = SkTEndian_SwapBE16(0x4009),
     326             :                     English_Ireland = SkTEndian_SwapBE16(0x1809),
     327             :                     English_Jamaica = SkTEndian_SwapBE16(0x2009),
     328             :                     English_Malaysia = SkTEndian_SwapBE16(0x4409),
     329             :                     English_NewZealand = SkTEndian_SwapBE16(0x1409),
     330             :                     English_RepublicOfThePhilippines = SkTEndian_SwapBE16(0x3409),
     331             :                     English_Singapore = SkTEndian_SwapBE16(0x4809),
     332             :                     English_SouthAfrica = SkTEndian_SwapBE16(0x1C09),
     333             :                     English_TrinidadAndTobago = SkTEndian_SwapBE16(0x2C09),
     334             :                     English_UnitedKingdom = SkTEndian_SwapBE16(0x0809),
     335             :                     English_UnitedStates = SkTEndian_SwapBE16(0x0409),
     336             :                     English_Zimbabwe = SkTEndian_SwapBE16(0x3009),
     337             :                     Estonian_Estonia = SkTEndian_SwapBE16(0x0425),
     338             :                     Faroese_FaroeIslands = SkTEndian_SwapBE16(0x0438),
     339             :                     Filipino_Philippines = SkTEndian_SwapBE16(0x0464),
     340             :                     Finnish_Finland = SkTEndian_SwapBE16(0x040B),
     341             :                     French_Belgium = SkTEndian_SwapBE16(0x080C),
     342             :                     French_Canada = SkTEndian_SwapBE16(0x0C0C),
     343             :                     French_France = SkTEndian_SwapBE16(0x040C),
     344             :                     French_Luxembourg = SkTEndian_SwapBE16(0x140c),
     345             :                     French_PrincipalityOfMonoco = SkTEndian_SwapBE16(0x180C),
     346             :                     French_Switzerland = SkTEndian_SwapBE16(0x100C),
     347             :                     Frisian_Netherlands = SkTEndian_SwapBE16(0x0462),
     348             :                     Galician_Galician = SkTEndian_SwapBE16(0x0456),
     349             :                     Georgian_Georgia = SkTEndian_SwapBE16(0x0437),
     350             :                     German_Austria = SkTEndian_SwapBE16(0x0C07),
     351             :                     German_Germany = SkTEndian_SwapBE16(0x0407),
     352             :                     German_Liechtenstein = SkTEndian_SwapBE16(0x1407),
     353             :                     German_Luxembourg = SkTEndian_SwapBE16(0x1007),
     354             :                     German_Switzerland = SkTEndian_SwapBE16(0x0807),
     355             :                     Greek_Greece = SkTEndian_SwapBE16(0x0408),
     356             :                     Greenlandic_Greenland = SkTEndian_SwapBE16(0x046F),
     357             :                     Gujarati_India = SkTEndian_SwapBE16(0x0447),
     358             :                     HausaLatin_Nigeria = SkTEndian_SwapBE16(0x0468),
     359             :                     Hebrew_Israel = SkTEndian_SwapBE16(0x040D),
     360             :                     Hindi_India = SkTEndian_SwapBE16(0x0439),
     361             :                     Hungarian_Hungary = SkTEndian_SwapBE16(0x040E),
     362             :                     Icelandic_Iceland = SkTEndian_SwapBE16(0x040F),
     363             :                     Igbo_Nigeria = SkTEndian_SwapBE16(0x0470),
     364             :                     Indonesian_Indonesia = SkTEndian_SwapBE16(0x0421),
     365             :                     Inuktitut_Canada = SkTEndian_SwapBE16(0x045D),
     366             :                     InuktitutLatin_Canada = SkTEndian_SwapBE16(0x085D),
     367             :                     Irish_Ireland = SkTEndian_SwapBE16(0x083C),
     368             :                     isiXhosa_SouthAfrica = SkTEndian_SwapBE16(0x0434),
     369             :                     isiZulu_SouthAfrica = SkTEndian_SwapBE16(0x0435),
     370             :                     Italian_Italy = SkTEndian_SwapBE16(0x0410),
     371             :                     Italian_Switzerland = SkTEndian_SwapBE16(0x0810),
     372             :                     Japanese_Japan = SkTEndian_SwapBE16(0x0411),
     373             :                     Kannada_India = SkTEndian_SwapBE16(0x044B),
     374             :                     Kazakh_Kazakhstan = SkTEndian_SwapBE16(0x043F),
     375             :                     Khmer_Cambodia = SkTEndian_SwapBE16(0x0453),
     376             :                     Kiche_Guatemala = SkTEndian_SwapBE16(0x0486),
     377             :                     Kinyarwanda_Rwanda = SkTEndian_SwapBE16(0x0487),
     378             :                     Kiswahili_Kenya = SkTEndian_SwapBE16(0x0441),
     379             :                     Konkani_India = SkTEndian_SwapBE16(0x0457),
     380             :                     Korean_Korea = SkTEndian_SwapBE16(0x0412),
     381             :                     Kyrgyz_Kyrgyzstan = SkTEndian_SwapBE16(0x0440),
     382             :                     Lao_LaoPDR = SkTEndian_SwapBE16(0x0454),
     383             :                     Latvian_Latvia = SkTEndian_SwapBE16(0x0426),
     384             :                     Lithuanian_Lithuania = SkTEndian_SwapBE16(0x0427),
     385             :                     LowerSorbian_Germany = SkTEndian_SwapBE16(0x082E),
     386             :                     Luxembourgish_Luxembourg = SkTEndian_SwapBE16(0x046E),
     387             :                     MacedonianFYROM_FormerYugoslavRepublicOfMacedonia = SkTEndian_SwapBE16(0x042F),
     388             :                     Malay_BruneiDarussalam = SkTEndian_SwapBE16(0x083E),
     389             :                     Malay_Malaysia = SkTEndian_SwapBE16(0x043E),
     390             :                     Malayalam_India = SkTEndian_SwapBE16(0x044C),
     391             :                     Maltese_Malta = SkTEndian_SwapBE16(0x043A),
     392             :                     Maori_NewZealand = SkTEndian_SwapBE16(0x0481),
     393             :                     Mapudungun_Chile = SkTEndian_SwapBE16(0x047A),
     394             :                     Marathi_India = SkTEndian_SwapBE16(0x044E),
     395             :                     Mohawk_Mohawk = SkTEndian_SwapBE16(0x047C),
     396             :                     MongolianCyrillic_Mongolia = SkTEndian_SwapBE16(0x0450),
     397             :                     MongolianTraditional_PeoplesRepublicOfChina = SkTEndian_SwapBE16(0x0850),
     398             :                     Nepali_Nepal = SkTEndian_SwapBE16(0x0461),
     399             :                     NorwegianBokmal_Norway = SkTEndian_SwapBE16(0x0414),
     400             :                     NorwegianNynorsk_Norway = SkTEndian_SwapBE16(0x0814),
     401             :                     Occitan_France = SkTEndian_SwapBE16(0x0482),
     402             :                     Odia_India = SkTEndian_SwapBE16(0x0448),
     403             :                     Pashto_Afghanistan = SkTEndian_SwapBE16(0x0463),
     404             :                     Polish_Poland = SkTEndian_SwapBE16(0x0415),
     405             :                     Portuguese_Brazil = SkTEndian_SwapBE16(0x0416),
     406             :                     Portuguese_Portugal = SkTEndian_SwapBE16(0x0816),
     407             :                     Punjabi_India = SkTEndian_SwapBE16(0x0446),
     408             :                     Quechua_Bolivia = SkTEndian_SwapBE16(0x046B),
     409             :                     Quechua_Ecuador = SkTEndian_SwapBE16(0x086B),
     410             :                     Quechua_Peru = SkTEndian_SwapBE16(0x0C6B),
     411             :                     Romanian_Romania = SkTEndian_SwapBE16(0x0418),
     412             :                     Romansh_Switzerland = SkTEndian_SwapBE16(0x0417),
     413             :                     Russian_Russia = SkTEndian_SwapBE16(0x0419),
     414             :                     SamiInari_Finland = SkTEndian_SwapBE16(0x243B),
     415             :                     SamiLule_Norway = SkTEndian_SwapBE16(0x103B),
     416             :                     SamiLule_Sweden = SkTEndian_SwapBE16(0x143B),
     417             :                     SamiNorthern_Finland = SkTEndian_SwapBE16(0x0C3B),
     418             :                     SamiNorthern_Norway = SkTEndian_SwapBE16(0x043B),
     419             :                     SamiNorthern_Sweden = SkTEndian_SwapBE16(0x083B),
     420             :                     SamiSkolt_Finland = SkTEndian_SwapBE16(0x203B),
     421             :                     SamiSouthern_Norway = SkTEndian_SwapBE16(0x183B),
     422             :                     SamiSouthern_Sweden = SkTEndian_SwapBE16(0x1C3B),
     423             :                     Sanskrit_India = SkTEndian_SwapBE16(0x044F),
     424             :                     SerbianCyrillic_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x1C1A),
     425             :                     SerbianCyrillic_Serbia = SkTEndian_SwapBE16(0x0C1A),
     426             :                     SerbianLatin_BosniaAndHerzegovina = SkTEndian_SwapBE16(0x181A),
     427             :                     SerbianLatin_Serbia = SkTEndian_SwapBE16(0x081A),
     428             :                     SesothoSaLeboa_SouthAfrica = SkTEndian_SwapBE16(0x046C),
     429             :                     Setswana_SouthAfrica = SkTEndian_SwapBE16(0x0432),
     430             :                     Sinhala_SriLanka = SkTEndian_SwapBE16(0x045B),
     431             :                     Slovak_Slovakia = SkTEndian_SwapBE16(0x041B),
     432             :                     Slovenian_Slovenia = SkTEndian_SwapBE16(0x0424),
     433             :                     Spanish_Argentina = SkTEndian_SwapBE16(0x2C0A),
     434             :                     Spanish_Bolivia = SkTEndian_SwapBE16(0x400A),
     435             :                     Spanish_Chile = SkTEndian_SwapBE16(0x340A),
     436             :                     Spanish_Colombia = SkTEndian_SwapBE16(0x240A),
     437             :                     Spanish_CostaRica = SkTEndian_SwapBE16(0x140A),
     438             :                     Spanish_DominicanRepublic = SkTEndian_SwapBE16(0x1C0A),
     439             :                     Spanish_Ecuador = SkTEndian_SwapBE16(0x300A),
     440             :                     Spanish_ElSalvador = SkTEndian_SwapBE16(0x440A),
     441             :                     Spanish_Guatemala = SkTEndian_SwapBE16(0x100A),
     442             :                     Spanish_Honduras = SkTEndian_SwapBE16(0x480A),
     443             :                     Spanish_Mexico = SkTEndian_SwapBE16(0x080A),
     444             :                     Spanish_Nicaragua = SkTEndian_SwapBE16(0x4C0A),
     445             :                     Spanish_Panama = SkTEndian_SwapBE16(0x180A),
     446             :                     Spanish_Paraguay = SkTEndian_SwapBE16(0x3C0A),
     447             :                     Spanish_Peru = SkTEndian_SwapBE16(0x280A),
     448             :                     Spanish_PuertoRico = SkTEndian_SwapBE16(0x500A),
     449             :                     SpanishModernSort_Spain = SkTEndian_SwapBE16(0x0C0A),
     450             :                     SpanishTraditionalSort_Spain = SkTEndian_SwapBE16(0x040A),
     451             :                     Spanish_UnitedStates = SkTEndian_SwapBE16(0x540A),
     452             :                     Spanish_Uruguay = SkTEndian_SwapBE16(0x380A),
     453             :                     Spanish_Venezuela = SkTEndian_SwapBE16(0x200A),
     454             :                     Sweden_Finland = SkTEndian_SwapBE16(0x081D),
     455             :                     Swedish_Sweden = SkTEndian_SwapBE16(0x041D),
     456             :                     Syriac_Syria = SkTEndian_SwapBE16(0x045A),
     457             :                     TajikCyrillic_Tajikistan = SkTEndian_SwapBE16(0x0428),
     458             :                     TamazightLatin_Algeria = SkTEndian_SwapBE16(0x085F),
     459             :                     Tamil_India = SkTEndian_SwapBE16(0x0449),
     460             :                     Tatar_Russia = SkTEndian_SwapBE16(0x0444),
     461             :                     Telugu_India = SkTEndian_SwapBE16(0x044A),
     462             :                     Thai_Thailand = SkTEndian_SwapBE16(0x041E),
     463             :                     Tibetan_PRC = SkTEndian_SwapBE16(0x0451),
     464             :                     Turkish_Turkey = SkTEndian_SwapBE16(0x041F),
     465             :                     Turkmen_Turkmenistan = SkTEndian_SwapBE16(0x0442),
     466             :                     Uighur_PRC = SkTEndian_SwapBE16(0x0480),
     467             :                     Ukrainian_Ukraine = SkTEndian_SwapBE16(0x0422),
     468             :                     UpperSorbian_Germany = SkTEndian_SwapBE16(0x042E),
     469             :                     Urdu_IslamicRepublicOfPakistan = SkTEndian_SwapBE16(0x0420),
     470             :                     UzbekCyrillic_Uzbekistan = SkTEndian_SwapBE16(0x0843),
     471             :                     UzbekLatin_Uzbekistan = SkTEndian_SwapBE16(0x0443),
     472             :                     Vietnamese_Vietnam = SkTEndian_SwapBE16(0x042A),
     473             :                     Welsh_UnitedKingdom = SkTEndian_SwapBE16(0x0452),
     474             :                     Wolof_Senegal = SkTEndian_SwapBE16(0x0488),
     475             :                     Yakut_Russia = SkTEndian_SwapBE16(0x0485),
     476             :                     Yi_PRC = SkTEndian_SwapBE16(0x0478),
     477             :                     Yoruba_Nigeria = SkTEndian_SwapBE16(0x046A),
     478             :                 } value;
     479             :             } windows;
     480             :         } languageID;
     481             : 
     482             :         /** NameIDs <= 0xFF are predefined. Those > 0xFF are font specific. */
     483             :         union NameID {
     484             :            /** A font specific name id which should be greater than 0xFF. */
     485             :            SK_OT_USHORT fontSpecific;
     486             :            struct Predefined {
     487             :                 enum Value : SK_OT_USHORT {
     488             :                     CopyrightNotice = SkTEndian_SwapBE16(0),
     489             :                     FontFamilyName = SkTEndian_SwapBE16(1),
     490             :                     FontSubfamilyName = SkTEndian_SwapBE16(2),
     491             :                     UniqueFontIdentifier = SkTEndian_SwapBE16(3),
     492             :                     FullFontName = SkTEndian_SwapBE16(4),
     493             :                     VersionString = SkTEndian_SwapBE16(5), //Version <number>.<number>
     494             :                     PostscriptName = SkTEndian_SwapBE16(6), //See spec for constraints.
     495             :                     Trademark = SkTEndian_SwapBE16(7),
     496             :                     ManufacturerName = SkTEndian_SwapBE16(8),
     497             :                     Designer = SkTEndian_SwapBE16(9),
     498             :                     Description = SkTEndian_SwapBE16(10),
     499             :                     URLVendor = SkTEndian_SwapBE16(11),
     500             :                     URLDesigner = SkTEndian_SwapBE16(12),
     501             :                     LicenseDescription = SkTEndian_SwapBE16(13),
     502             :                     LicenseInfoURL = SkTEndian_SwapBE16(14),
     503             :                     PreferredFamily = SkTEndian_SwapBE16(16),
     504             :                     PreferredSubfamily = SkTEndian_SwapBE16(17),
     505             :                     CompatibleFullName = SkTEndian_SwapBE16(18),
     506             :                     SampleText = SkTEndian_SwapBE16(19),
     507             :                     PostscriptCIDFindfontName = SkTEndian_SwapBE16(20),
     508             :                     WWSFamilyName = SkTEndian_SwapBE16(21),
     509             :                     WWSSubfamilyName = SkTEndian_SwapBE16(22),
     510             :                 } value;
     511             :             } predefined;
     512             :         } nameID;
     513             : 
     514             :         /** The length of the string in SK_OT_BYTEs. */
     515             :         SK_OT_USHORT length;
     516             : 
     517             :         /** Offset in SK_OT_BYTEs from start of string storage area
     518             :          *  (see SkOTTableName::stringOffset).
     519             :          */
     520             :         SK_OT_USHORT offset;
     521             :     }; //nameRecord[count];
     522             : 
     523             :     struct Format1Ext {
     524             :         /** The number of languageTagRecords which follow. */
     525             :         SK_OT_USHORT langTagCount;
     526             : 
     527             :         /** The encoding of a langTagRecord string is always UTF-16BE.
     528             :          *  The content should follow IETF specification BCP 47.
     529             :          */
     530             :         struct LangTagRecord {
     531             :             /** The length of the string in SK_OT_BYTEs. */
     532             :             SK_OT_USHORT length;
     533             : 
     534             :             /** Offset in SK_OT_BYTEs from start of string storage area
     535             :              *  (see SkOTTableName::stringOffset).
     536             :              */
     537             :             SK_OT_USHORT offset;
     538             :         }; //langTagRecord[langTagCount]
     539             :     }; //format1ext (if format == format_1)
     540             : 
     541             :     class Iterator {
     542             :     public:
     543             :         Iterator(const SkOTTableName& name) : fName(name), fIndex(0), fType(-1) { }
     544           0 :         Iterator(const SkOTTableName& name, SkOTTableName::Record::NameID::Predefined::Value type)
     545           0 :             : fName(name), fIndex(0), fType(type)
     546           0 :         { }
     547             : 
     548           0 :         void reset(SkOTTableName::Record::NameID::Predefined::Value type) {
     549           0 :             fIndex = 0;
     550           0 :             fType = type;
     551           0 :         }
     552             : 
     553           0 :         struct Record {
     554             :             SkString name;
     555             :             SkString language;
     556             :             SK_OT_USHORT type;
     557             :         };
     558             :         bool next(Record&);
     559             : 
     560             :     private:
     561             :         const SkOTTableName& fName;
     562             :         size_t fIndex;
     563             :         int fType;
     564             :     };
     565             : };
     566             : 
     567             : #pragma pack(pop)
     568             : 
     569             : 
     570             : static_assert(sizeof(SkOTTableName) == 6, "sizeof_SkOTTableName_not_6");
     571             : static_assert(sizeof(SkOTTableName::Format1Ext) == 2, "sizeof_SkOTTableNameF1_not_2");
     572             : static_assert(sizeof(SkOTTableName::Format1Ext::LangTagRecord) == 4, "sizeof_SkOTTableNameLangTagRecord_not_4");
     573             : static_assert(sizeof(SkOTTableName::Record) == 12, "sizeof_SkOTTableNameRecord_not_12");
     574             : 
     575             : #endif

Generated by: LCOV version 1.13