/*
 * Copyright © 2009  Red Hat, Inc.
 * Copyright © 2011  Google, Inc.
 *
 *  This is part of HarfBuzz, a text shaping library.
 *
 * Permission is hereby granted, without written agreement and without
 * license or royalty fees, to use, copy, modify, and distribute this
 * software and its documentation for any purpose, provided that the
 * above copyright notice and the following two paragraphs appear in
 * all copies of this software.
 *
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 *
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 *
 * Red Hat Author(s): Behdad Esfahbod
 * Google Author(s): Behdad Esfahbod, Roozbeh Pournader
 */

#include "hb-private.hh"


/* hb_script_t */

static hb_tag_t
hb_ot_old_tag_from_script (hb_script_t script)
{
  /* This seems to be accurate as of end of 2012. */

  switch ((hb_tag_t) script) {
    case HB_SCRIPT_INVALID:		return HB_OT_TAG_DEFAULT_SCRIPT;

    /* KATAKANA and HIRAGANA both map to 'kana' */
    case HB_SCRIPT_HIRAGANA:		return HB_TAG('k','a','n','a');

    /* Spaces at the end are preserved, unlike ISO 15924 */
    case HB_SCRIPT_LAO:			return HB_TAG('l','a','o',' ');
    case HB_SCRIPT_YI:			return HB_TAG('y','i',' ',' ');
    /* Unicode-5.0 additions */
    case HB_SCRIPT_NKO:			return HB_TAG('n','k','o',' ');
    /* Unicode-5.1 additions */
    case HB_SCRIPT_VAI:			return HB_TAG('v','a','i',' ');
    /* Unicode-5.2 additions */
    /* Unicode-6.0 additions */
  }

  /* Else, just change first char to lowercase and return */
  return ((hb_tag_t) script) | 0x20000000u;
}

static hb_script_t
hb_ot_old_tag_to_script (hb_tag_t tag)
{
  if (unlikely (tag == HB_OT_TAG_DEFAULT_SCRIPT))
    return HB_SCRIPT_INVALID;

  /* This side of the conversion is fully algorithmic. */

  /* Any spaces at the end of the tag are replaced by repeating the last
   * letter.  Eg 'nko ' -> 'Nkoo' */
  if (unlikely ((tag & 0x0000FF00u) == 0x00002000u))
    tag |= (tag >> 8) & 0x0000FF00u; /* Copy second letter to third */
  if (unlikely ((tag & 0x000000FFu) == 0x00000020u))
    tag |= (tag >> 8) & 0x000000FFu; /* Copy third letter to fourth */

  /* Change first char to uppercase and return */
  return (hb_script_t) (tag & ~0x20000000u);
}

static hb_tag_t
hb_ot_new_tag_from_script (hb_script_t script)
{
  switch ((hb_tag_t) script) {
    case HB_SCRIPT_BENGALI:		return HB_TAG('b','n','g','2');
    case HB_SCRIPT_DEVANAGARI:		return HB_TAG('d','e','v','2');
    case HB_SCRIPT_GUJARATI:		return HB_TAG('g','j','r','2');
    case HB_SCRIPT_GURMUKHI:		return HB_TAG('g','u','r','2');
    case HB_SCRIPT_KANNADA:		return HB_TAG('k','n','d','2');
    case HB_SCRIPT_MALAYALAM:		return HB_TAG('m','l','m','2');
    case HB_SCRIPT_ORIYA:		return HB_TAG('o','r','y','2');
    case HB_SCRIPT_TAMIL:		return HB_TAG('t','m','l','2');
    case HB_SCRIPT_TELUGU:		return HB_TAG('t','e','l','2');
    case HB_SCRIPT_MYANMAR:		return HB_TAG('m','y','m','2');
  }

  return HB_OT_TAG_DEFAULT_SCRIPT;
}

static hb_script_t
hb_ot_new_tag_to_script (hb_tag_t tag)
{
  switch (tag) {
    case HB_TAG('b','n','g','2'):	return HB_SCRIPT_BENGALI;
    case HB_TAG('d','e','v','2'):	return HB_SCRIPT_DEVANAGARI;
    case HB_TAG('g','j','r','2'):	return HB_SCRIPT_GUJARATI;
    case HB_TAG('g','u','r','2'):	return HB_SCRIPT_GURMUKHI;
    case HB_TAG('k','n','d','2'):	return HB_SCRIPT_KANNADA;
    case HB_TAG('m','l','m','2'):	return HB_SCRIPT_MALAYALAM;
    case HB_TAG('o','r','y','2'):	return HB_SCRIPT_ORIYA;
    case HB_TAG('t','m','l','2'):	return HB_SCRIPT_TAMIL;
    case HB_TAG('t','e','l','2'):	return HB_SCRIPT_TELUGU;
    case HB_TAG('m','y','m','2'):	return HB_SCRIPT_MYANMAR;
  }

  return HB_SCRIPT_UNKNOWN;
}

/*
 * Complete list at:
 * https://docs.microsoft.com/en-us/typography/opentype/spec/scripttags
 *
 * Most of the script tags are the same as the ISO 15924 tag but lowercased.
 * So we just do that, and handle the exceptional cases in a switch.
 */

void
hb_ot_tags_from_script (hb_script_t  script,
			hb_tag_t    *script_tag_1,
			hb_tag_t    *script_tag_2)
{
  hb_tag_t new_tag;

  *script_tag_2 = HB_OT_TAG_DEFAULT_SCRIPT;
  *script_tag_1 = hb_ot_old_tag_from_script (script);

  new_tag = hb_ot_new_tag_from_script (script);
  if (unlikely (new_tag != HB_OT_TAG_DEFAULT_SCRIPT)) {
    *script_tag_2 = *script_tag_1;
    *script_tag_1 = new_tag;
  }
}

hb_script_t
hb_ot_tag_to_script (hb_tag_t tag)
{
  if (unlikely ((tag & 0x000000FFu) == '2'))
    return hb_ot_new_tag_to_script (tag);

  return hb_ot_old_tag_to_script (tag);
}


/* hb_language_t */

typedef struct {
  char language[4];
  hb_tag_t tag;
} LangTag;

/*
 * Complete list at:
 * https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
 *
 * Generated by intersecting the OpenType language tag list from
 * Draft OpenType 1.5 spec, with with the ISO 639-3 codes from
 * 2008-08-04, matching on name, and finally adjusted manually.
 *
 * Updated on 2012-12-07 with more research into remaining codes.
 *
 * Updated on 2013-11-23 based on usage in SIL and Microsoft fonts,
 * the new proposal from Microsoft, and latest ISO 639-3 names.
 *
 * Some items still missing.  Those are commented out at the end.
 * Keep sorted for bsearch.
 *
 * Updated as of 2015-05-06: OT1.7 on MS website has some newer
 * items that we don't have here, eg. Zazaki.  This is the new
 * items in OpenType 1.7 (red items), most of which we have:
 * https://docs.microsoft.com/en-us/typography/opentype/spec/languagetags
 */

static const LangTag ot_languages[] = {
  {"aa",	HB_TAG('A','F','R',' ')},	/* Afar */
  {"ab",	HB_TAG('A','B','K',' ')},	/* Abkhazian */
  {"abq",	HB_TAG('A','B','A',' ')},	/* Abaza */
  {"acf",	HB_TAG('F','A','N',' ')},	/* French Antillean */
  {"ach",	HB_TAG('A','C','H',' ')},	/* Acoli */
  {"acr",	HB_TAG('A','C','R',' ')},	/* Achi */
  {"ada",	HB_TAG('D','N','G',' ')},	/* Dangme */
  {"ady",	HB_TAG('A','D','Y',' ')},	/* Adyghe */
  {"af",	HB_TAG('A','F','K',' ')},	/* Afrikaans */
  {"ahg",	HB_TAG('A','G','W',' ')},	/* Agaw */
  {"aii",	HB_TAG('S','W','A',' ')},	/* Swadaya Aramaic */
  {"aio",	HB_TAG('A','I','O',' ')},	/* Aiton */
  {"aiw",	HB_TAG('A','R','I',' ')},	/* Aari */
  {"ak",	HB_TAG('T','W','I',' ')},	/* Akan [macrolanguage] */
  {"aka",	HB_TAG('A','K','A',' ')},	/* Akan */
  {"alt",	HB_TAG('A','L','T',' ')},	/* [Southern] Altai */
  {"am",	HB_TAG('A','M','H',' ')},	/* Amharic */
  {"amf",	HB_TAG('H','B','N',' ')},	/* Hammer-Banna */
  {"amw",	HB_TAG('S','Y','R',' ')},	/* Western Neo-Aramaic */
  {"an",	HB_TAG('A','R','G',' ')},	/* Aragonese */
  {"ang",	HB_TAG('A','N','G',' ')},	/* Old English (ca. 450-1100) */
  {"ar",	HB_TAG('A','R','A',' ')},	/* Arabic [macrolanguage] */
  {"arb",	HB_TAG('A','R','A',' ')},	/* Standard Arabic */
  {"arn",	HB_TAG('M','A','P',' ')},	/* Mapudungun */
  {"ary",	HB_TAG('M','O','R',' ')},	/* Moroccan Arabic */
  {"as",	HB_TAG('A','S','M',' ')},	/* Assamese */
  {"ast",	HB_TAG('A','S','T',' ')},	/* Asturian/Asturleonese/Bable/Leonese */
  {"ath",	HB_TAG('A','T','H',' ')},	/* Athapaskan [family] */
  {"atj",	HB_TAG('R','C','R',' ')},	/* R-Cree */
  {"atv",	HB_TAG('A','L','T',' ')},	/* [Northern] Altai */
  {"av",	HB_TAG('A','V','R',' ')},	/* Avaric */
  {"awa",	HB_TAG('A','W','A',' ')},	/* Awadhi */
  {"ay",	HB_TAG('A','Y','M',' ')},	/* Aymara [macrolanguage] */
  {"az",	HB_TAG('A','Z','E',' ')},	/* Azerbaijani [macrolanguage] */
  {"azb",	HB_TAG('A','Z','B',' ')},	/* South Azerbaijani */
  {"azj",	HB_TAG('A','Z','E',' ')},	/* North Azerbaijani */
  {"ba",	HB_TAG('B','S','H',' ')},	/* Bashkir */
  {"bad",	HB_TAG('B','A','D','0')},	/* Banda */
  {"bai",	HB_TAG('B','M','L',' ')},	/* Bamileke [family] */
  {"bal",	HB_TAG('B','L','I',' ')},	/* Baluchi [macrolangauge] */
  {"ban",	HB_TAG('B','A','N',' ')},	/* Balinese */
  {"bar",	HB_TAG('B','A','R',' ')},	/* Bavarian */
  {"bbc",	HB_TAG('B','B','C',' ')},	/* Batak Toba */
  {"bci",	HB_TAG('B','A','U',' ')},	/* Baoulé */
  {"bcl",	HB_TAG('B','I','K',' ')},	/* Central Bikol */
  {"bcq",	HB_TAG('B','C','H',' ')},	/* Bench */
  {"bdy",	HB_TAG('B','D','Y',' ')},	/* Bandjalang */
  {"be",	HB_TAG('B','E','L',' ')},	/* Belarusian */
  {"bem",	HB_TAG('B','E','M',' ')},	/* Bemba (Zambia) */
  {"ber",	HB_TAG('B','E','R',' ')},	/* Berber [family] */
  {"bfq",	HB_TAG('B','A','D',' ')},	/* Badaga */
  {"bft",	HB_TAG('B','L','T',' ')},	/* Balti */
  {"bfu",	HB_TAG('L','A','H',' ')},	/* Lahuli */
  {"bfy",	HB_TAG('B','A','G',' ')},	/* Baghelkhandi */
  {"bg",	HB_TAG('B','G','R',' ')},	/* Bulgarian */
  {"bgc",	HB_TAG('B','G','C',' ')},	/* Haryanvi */
  {"bgq",	HB_TAG('B','G','Q',' ')},	/* Bagri */
  {"bgr",	HB_TAG('Q','I','N',' ')},	/* Bawm Chin */
  {"bhb",	HB_TAG('B','H','I',' ')},	/* Bhili */
  {"bhk",	HB_TAG('B','I','K',' ')},	/* Albay Bicolano (retired code) */
  {"bho",	HB_TAG('B','H','O',' ')},	/* Bhojpuri */
  {"bi",	HB_TAG('B','I','S',' ')},	/* Bislama */
  {"bik",	HB_TAG('B','I','K',' ')},	/* Bikol [macrolanguage] */
  {"bin",	HB_TAG('E','D','O',' ')},	/* Bini */
  {"bjj",	HB_TAG('B','J','J',' ')},	/* Kanauji */
  {"bjt",	HB_TAG('B','L','N',' ')},	/* Balanta-Ganja */
  {"bla",	HB_TAG('B','K','F',' ')},	/* Blackfoot */
  {"ble",	HB_TAG('B','L','N',' ')},	/* Balanta-Kentohe */
  {"blk",	HB_TAG('B','L','K',' ')},	/* Pa'O/Pa'o Karen */
  {"bln",	HB_TAG('B','I','K',' ')},	/* Southern Catanduanes Bikol */
  {"bm",	HB_TAG('B','M','B',' ')},	/* Bambara */
  {"bn",	HB_TAG('B','E','N',' ')},	/* Bengali */
  {"bo",	HB_TAG('T','I','B',' ')},	/* Tibetan */
  {"bpy",	HB_TAG('B','P','Y',' ')},	/* Bishnupriya */
  {"bqi",	HB_TAG('L','R','C',' ')},	/* Bakhtiari */
  {"br",	HB_TAG('B','R','E',' ')},	/* Breton */
  {"bra",	HB_TAG('B','R','I',' ')},	/* Braj Bhasha */
  {"brh",	HB_TAG('B','R','H',' ')},	/* Brahui */
  {"brx",	HB_TAG('B','R','X',' ')},	/* Bodo (India) */
  {"bs",	HB_TAG('B','O','S',' ')},	/* Bosnian */
  {"btb",	HB_TAG('B','T','I',' ')},	/* Beti (Cameroon) */
  {"bto",	HB_TAG('B','I','K',' ')},	/* Rinconada Bikol */
  {"bts",	HB_TAG('B','T','S',' ')},	/* Batak Simalungun */
  {"bug",	HB_TAG('B','U','G',' ')},	/* Buginese */
  {"bxr",	HB_TAG('R','B','U',' ')},	/* Russian Buriat */
  {"byn",	HB_TAG('B','I','L',' ')},	/* Bilen */
  {"ca",	HB_TAG('C','A','T',' ')},	/* Catalan */
  {"cak",	HB_TAG('C','A','K',' ')},	/* Kaqchikel */
  {"cbk",	HB_TAG('C','B','K',' ')},	/* Chavacano */
  {"cbl",	HB_TAG('Q','I','N',' ')},	/* Bualkhaw Chin */
  {"cco",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"ce",	HB_TAG('C','H','E',' ')},	/* Chechen */
  {"ceb",	HB_TAG('C','E','B',' ')},	/* Cebuano */
  {"cfm",	HB_TAG('H','A','L',' ')},	/* Halam/Falam Chin */
  {"cgg",	HB_TAG('C','G','G',' ')},	/* Chiga */
  {"ch",	HB_TAG('C','H','A',' ')},	/* Chamorro */
  {"chj",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"chk",	HB_TAG('C','H','K','0')},	/* Chuukese */
  {"cho",	HB_TAG('C','H','O',' ')},	/* Choctaw */
  {"chp",	HB_TAG('C','H','P',' ')},	/* Chipewyan */
  {"chq",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"chr",	HB_TAG('C','H','R',' ')},	/* Cherokee */
  {"chy",	HB_TAG('C','H','Y',' ')},	/* Cheyenne */
  {"chz",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cja",	HB_TAG('C','J','A',' ')},	/* Western Cham */
  {"cjm",	HB_TAG('C','J','M',' ')},	/* Eastern Cham */
  {"cka",	HB_TAG('Q','I','N',' ')},	/* Khumi Awa Chin */
  {"ckb",	HB_TAG('K','U','R',' ')},	/* Central Kurdish (Sorani) */
  {"ckt",	HB_TAG('C','H','K',' ')},	/* Chukchi */
  {"cld",	HB_TAG('S','Y','R',' ')},	/* Chaldean Neo-Aramaic */
  {"cle",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cmr",	HB_TAG('Q','I','N',' ')},	/* Mro-Khimi Chin */
  {"cnb",	HB_TAG('Q','I','N',' ')},	/* Chinbon Chin */
  {"cnh",	HB_TAG('Q','I','N',' ')},	/* Hakha Chin */
  {"cnk",	HB_TAG('Q','I','N',' ')},	/* Khumi Chin */
  {"cnl",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cnt",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cnw",	HB_TAG('Q','I','N',' ')},	/* Ngawn Chin */
  {"cop",	HB_TAG('C','O','P',' ')},	/* Coptic */
  {"cpa",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cpp",	HB_TAG('C','P','P',' ')},	/* Creoles */
  {"cr",	HB_TAG('C','R','E',' ')},	/* Cree */
  {"cre",	HB_TAG('Y','C','R',' ')},	/* Y-Cree */
  {"crh",	HB_TAG('C','R','T',' ')},	/* Crimean Tatar */
  {"crj",	HB_TAG('E','C','R',' ')},	/* [Southern] East Cree */
  {"crk",	HB_TAG('W','C','R',' ')},	/* West-Cree */
  {"crl",	HB_TAG('E','C','R',' ')},	/* [Northern] East Cree */
  {"crm",	HB_TAG('M','C','R',' ')},	/* Moose Cree */
  {"crx",	HB_TAG('C','R','R',' ')},	/* Carrier */
  {"cs",	HB_TAG('C','S','Y',' ')},	/* Czech */
  {"csa",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"csb",	HB_TAG('C','S','B',' ')},	/* Kashubian */
  {"csh",	HB_TAG('Q','I','N',' ')},	/* Asho Chin */
  {"cso",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"csy",	HB_TAG('Q','I','N',' ')},	/* Siyin Chin */
  {"ctd",	HB_TAG('Q','I','N',' ')},	/* Tedim Chin */
  {"cte",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"ctg",	HB_TAG('C','T','G',' ')},	/* Chittagonian */
  {"ctl",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cts",	HB_TAG('B','I','K',' ')},	/* Northern Catanduanes Bikol */
  {"cu",	HB_TAG('C','S','L',' ')},	/* Church Slavic */
  {"cuc",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cuk",	HB_TAG('C','U','K',' ')},	/* San Blas Kuna */
  {"cv",	HB_TAG('C','H','U',' ')},	/* Chuvash */
  {"cvn",	HB_TAG('C','C','H','N')},	/* Chinantec */
  {"cwd",	HB_TAG('D','C','R',' ')},	/* Woods Cree */
  {"cy",	HB_TAG('W','E','L',' ')},	/* Welsh */
  {"czt",	HB_TAG('Q','I','N',' ')},	/* Zotung Chin */
  {"da",	HB_TAG('D','A','N',' ')},	/* Danish */
  {"dao",	HB_TAG('Q','I','N',' ')},	/* Daai Chin */
  {"dap",	HB_TAG('N','I','S',' ')},	/* Nisi (India) */
  {"dar",	HB_TAG('D','A','R',' ')},	/* Dargwa */
  {"dax",	HB_TAG('D','A','X',' ')},	/* Dayi */
  {"de",	HB_TAG('D','E','U',' ')},	/* German */
  {"dgo",	HB_TAG('D','G','O',' ')},	/* Dogri */
  {"dhd",	HB_TAG('M','A','W',' ')},	/* Dhundari */
  {"dhg",	HB_TAG('D','H','G',' ')},	/* Dhangu */
  {"din",	HB_TAG('D','N','K',' ')},	/* Dinka [macrolanguage] */
  {"diq",	HB_TAG('D','I','Q',' ')},	/* Dimli */
  {"dje",	HB_TAG('D','J','R',' ')},	/* Zarma */
  {"djr",	HB_TAG('D','J','R','0')},	/* Djambarrpuyngu */
  {"dng",	HB_TAG('D','U','N',' ')},	/* Dungan */
  {"dnj",	HB_TAG('D','N','J',' ')},	/* Dan */
  {"doi",	HB_TAG('D','G','R',' ')},	/* Dogri [macrolanguage] */
  {"dsb",	HB_TAG('L','S','B',' ')},	/* Lower Sorbian */
  {"duj",	HB_TAG('D','U','J',' ')},	/* Dhuwal */
  {"dv",	HB_TAG('D','I','V',' ')},	/* Dhivehi/Divehi/Maldivian */
  {"dyu",	HB_TAG('J','U','L',' ')},	/* Jula */
  {"dz",	HB_TAG('D','Z','N',' ')},	/* Dzongkha */
  {"ee",	HB_TAG('E','W','E',' ')},	/* Ewe */
  {"efi",	HB_TAG('E','F','I',' ')},	/* Efik */
  {"ekk",	HB_TAG('E','T','I',' ')},	/* Standard Estonian */
  {"el",	HB_TAG('E','L','L',' ')},	/* Modern Greek (1453-) */
  {"emk",	HB_TAG('M','N','K',' ')},	/* Eastern Maninkakan */
  {"en",	HB_TAG('E','N','G',' ')},	/* English */
  {"enf",	HB_TAG('F','N','E',' ')},	/* Forest Nenets */
  {"enh",	HB_TAG('T','N','E',' ')},	/* Tundra Nenets */
  {"eo",	HB_TAG('N','T','O',' ')},	/* Esperanto */
  {"eot",	HB_TAG('B','T','I',' ')},	/* Beti (Côte d'Ivoire) */
  {"es",	HB_TAG('E','S','P',' ')},	/* Spanish */
  {"esu",	HB_TAG('E','S','U',' ')},	/* Central Yupik */
  {"et",	HB_TAG('E','T','I',' ')},	/* Estonian [macrolanguage] */
  {"eu",	HB_TAG('E','U','Q',' ')},	/* Basque */
  {"eve",	HB_TAG('E','V','N',' ')},	/* Even */
  {"evn",	HB_TAG('E','V','K',' ')},	/* Evenki */
  {"fa",	HB_TAG('F','A','R',' ')},	/* Persian [macrolanguage] */
  {"fan",	HB_TAG('F','A','N','0')},	/* Fang */
  {"fat",	HB_TAG('F','A','T',' ')},	/* Fanti */
  {"ff",	HB_TAG('F','U','L',' ')},	/* Fulah [macrolanguage] */
  {"fi",	HB_TAG('F','I','N',' ')},	/* Finnish */
  {"fil",	HB_TAG('P','I','L',' ')},	/* Filipino */
  {"fj",	HB_TAG('F','J','I',' ')},	/* Fijian */
  {"flm",	HB_TAG('H','A','L',' ')},	/* Halam/Falam Chin [retired ISO639 code] */
  {"fo",	HB_TAG('F','O','S',' ')},	/* Faroese */
  {"fon",	HB_TAG('F','O','N',' ')},	/* Fon */
  {"fr",	HB_TAG('F','R','A',' ')},	/* French */
  {"frc",	HB_TAG('F','R','C',' ')},	/* Cajun French */
  {"frp",	HB_TAG('F','R','P',' ')},	/* Arpitan/Francoprovençal */
  {"fuf",	HB_TAG('F','T','A',' ')},	/* Futa */
  {"fur",	HB_TAG('F','R','L',' ')},	/* Friulian */
  {"fuv",	HB_TAG('F','U','V',' ')},	/* Nigerian Fulfulde */
  {"fy",	HB_TAG('F','R','I',' ')},	/* Western Frisian */
  {"ga",	HB_TAG('I','R','I',' ')},	/* Irish */
  {"gaa",	HB_TAG('G','A','D',' ')},	/* Ga */
  {"gag",	HB_TAG('G','A','G',' ')},	/* Gagauz */
  {"gbm",	HB_TAG('G','A','W',' ')},	/* Garhwali */
  {"gd",	HB_TAG('G','A','E',' ')},	/* Scottish Gaelic */
  {"gez",	HB_TAG('G','E','Z',' ')},	/* Ge'ez */
  {"ggo",	HB_TAG('G','O','N',' ')},	/* Southern Gondi */
  {"gih",	HB_TAG('G','I','H',' ')},	/* Githabul */
  {"gil",	HB_TAG('G','I','L','0')},	/* Kiribati (Gilbertese) */
  {"gkp",	HB_TAG('G','K','P',' ')},	/* Kpelle (Guinea) */
  {"gl",	HB_TAG('G','A','L',' ')},	/* Galician */
  {"gld",	HB_TAG('N','A','N',' ')},	/* Nanai */
  {"glk",	HB_TAG('G','L','K',' ')},	/* Gilaki */
  {"gn",	HB_TAG('G','U','A',' ')},	/* Guarani [macrolanguage] */
  {"gnn",	HB_TAG('G','N','N',' ')},	/* Gumatj */
  {"gno",	HB_TAG('G','O','N',' ')},	/* Northern Gondi */
  {"gog",	HB_TAG('G','O','G',' ')},	/* Gogo */
  {"gon",	HB_TAG('G','O','N',' ')},	/* Gondi [macrolanguage] */
  {"grt",	HB_TAG('G','R','O',' ')},	/* Garo */
  {"gru",	HB_TAG('S','O','G',' ')},	/* Sodo Gurage */
  {"gsw",	HB_TAG('A','L','S',' ')},	/* Alsatian */
  {"gu",	HB_TAG('G','U','J',' ')},	/* Gujarati */
  {"guc",	HB_TAG('G','U','C',' ')},	/* Wayuu */
  {"guf",	HB_TAG('G','U','F',' ')},	/* Gupapuyngu */
  {"guk",	HB_TAG('G','M','Z',' ')},	/* Gumuz */
/*{"guk",	HB_TAG('G','U','K',' ')},*/	/* Gumuz (in SIL fonts) */
  {"guz",	HB_TAG('G','U','Z',' ')},	/* Ekegusii/Gusii */
  {"gv",	HB_TAG('M','N','X',' ')},	/* Manx */
  {"ha",	HB_TAG('H','A','U',' ')},	/* Hausa */
  {"har",	HB_TAG('H','R','I',' ')},	/* Harari */
  {"haw",	HB_TAG('H','A','W',' ')},	/* Hawaiian */
  {"hay",	HB_TAG('H','A','Y',' ')},	/* Haya */
  {"haz",	HB_TAG('H','A','Z',' ')},	/* Hazaragi */
  {"he",	HB_TAG('I','W','R',' ')},	/* Hebrew */
  {"hi",	HB_TAG('H','I','N',' ')},	/* Hindi */
  {"hil",	HB_TAG('H','I','L',' ')},	/* Hiligaynon */
  {"hlt",	HB_TAG('Q','I','N',' ')},	/* Matu Chin */
  {"hmn",	HB_TAG('H','M','N',' ')},	/* Hmong */
  {"hnd",	HB_TAG('H','N','D',' ')},	/* [Southern] Hindko */
  {"hne",	HB_TAG('C','H','H',' ')},	/* Chattisgarhi */
  {"hno",	HB_TAG('H','N','D',' ')},	/* [Northern] Hindko */
  {"ho",	HB_TAG('H','M','O',' ')},	/* Hiri Motu */
  {"hoc",	HB_TAG('H','O',' ',' ')},	/* Ho */
  {"hoj",	HB_TAG('H','A','R',' ')},	/* Harauti */
  {"hr",	HB_TAG('H','R','V',' ')},	/* Croatian */
  {"hsb",	HB_TAG('U','S','B',' ')},	/* Upper Sorbian */
  {"ht",	HB_TAG('H','A','I',' ')},	/* Haitian/Haitian Creole */
  {"hu",	HB_TAG('H','U','N',' ')},	/* Hungarian */
  {"hy",	HB_TAG('H','Y','E',' ')},	/* Armenian */
  {"hz",	HB_TAG('H','E','R',' ')},	/* Herero */
  {"ia",	HB_TAG('I','N','A',' ')},	/* Interlingua (International Auxiliary Language Association) */
  {"iba",	HB_TAG('I','B','A',' ')},	/* Iban */
  {"ibb",	HB_TAG('I','B','B',' ')},	/* Ibibio */
  {"id",	HB_TAG('I','N','D',' ')},	/* Indonesian */
  {"ie",	HB_TAG('I','L','E',' ')},	/* Interlingue/Occidental */
  {"ig",	HB_TAG('I','B','O',' ')},	/* Igbo */
  {"igb",	HB_TAG('E','B','I',' ')},	/* Ebira */
  {"ii",	HB_TAG('Y','I','M',' ')},	/* Yi Modern */
  {"ijc",	HB_TAG('I','J','O',' ')},	/* Izon */
  {"ijo",	HB_TAG('I','J','O',' ')},	/* Ijo [family] */
  {"ik",	HB_TAG('I','P','K',' ')},	/* Inupiaq [macrolanguage] */
  {"ilo",	HB_TAG('I','L','O',' ')},	/* Ilokano */
  {"inh",	HB_TAG('I','N','G',' ')},	/* Ingush */
  {"io",	HB_TAG('I','D','O',' ')},	/* Ido */
  {"is",	HB_TAG('I','S','L',' ')},	/* Icelandic */
  {"it",	HB_TAG('I','T','A',' ')},	/* Italian */
  {"iu",	HB_TAG('I','N','U',' ')},	/* Inuktitut [macrolanguage] */
  {"ja",	HB_TAG('J','A','N',' ')},	/* Japanese */
  {"jam",	HB_TAG('J','A','M',' ')},	/* Jamaican Creole English */
  {"jbo",	HB_TAG('J','B','O',' ')},	/* Lojban */
  {"jv",	HB_TAG('J','A','V',' ')},	/* Javanese */
  {"ka",	HB_TAG('K','A','T',' ')},	/* Georgian */
  {"kaa",	HB_TAG('K','R','K',' ')},	/* Karakalpak */
  {"kab",	HB_TAG('K','A','B','0')},	/* Kabyle */
  {"kam",	HB_TAG('K','M','B',' ')},	/* Kamba (Kenya) */
  {"kar",	HB_TAG('K','R','N',' ')},	/* Karen [family] */
  {"kat",	HB_TAG('K','G','E',' ')},	/* Khutsuri Georgian */
  {"kbd",	HB_TAG('K','A','B',' ')},	/* Kabardian */
  {"kde",	HB_TAG('K','D','E',' ')},	/* Makonde */
  {"kdr",	HB_TAG('K','R','M',' ')},	/* Karaim */
  {"kdt",	HB_TAG('K','U','Y',' ')},	/* Kuy */
  {"kea",	HB_TAG('K','E','A',' ')},	/* Kabuverdianu (Crioulo) */
  {"kek",	HB_TAG('K','E','K',' ')},	/* Kekchi */
  {"kex",	HB_TAG('K','K','N',' ')},	/* Kokni */
  {"kfa",	HB_TAG('K','O','D',' ')},	/* Kodagu */
  {"kfr",	HB_TAG('K','A','C',' ')},	/* Kachchi */
  {"kfx",	HB_TAG('K','U','L',' ')},	/* Kulvi */
  {"kfy",	HB_TAG('K','M','N',' ')},	/* Kumaoni */
  {"kg",	HB_TAG('K','O','N',' ')},	/* Kongo [macrolanguage] */
  {"kha",	HB_TAG('K','S','I',' ')},	/* Khasi */
  {"khb",	HB_TAG('X','B','D',' ')},	/* Lü */
  {"kht",	HB_TAG('K','H','N',' ')},	/* Khamti (Microsoft fonts) */
/*{"kht",	HB_TAG('K','H','T',' ')},*/	/* Khamti (OpenType spec and SIL fonts) */
  {"khw",	HB_TAG('K','H','W',' ')},	/* Khowar */
  {"ki",	HB_TAG('K','I','K',' ')},	/* Gikuyu/Kikuyu */
  {"kiu",	HB_TAG('K','I','U',' ')},	/* Kirmanjki */
  {"kj",	HB_TAG('K','U','A',' ')},	/* Kuanyama/Kwanyama */
  {"kjd",	HB_TAG('K','J','D',' ')},	/* Southern Kiwai */
  {"kjh",	HB_TAG('K','H','A',' ')},	/* Khakass */
  {"kjp",	HB_TAG('K','J','P',' ')},	/* Pwo Eastern Karen */
  {"kk",	HB_TAG('K','A','Z',' ')},	/* Kazakh */
  {"kl",	HB_TAG('G','R','N',' ')},	/* Kalaallisut */
  {"kln",	HB_TAG('K','A','L',' ')},	/* Kalenjin */
  {"km",	HB_TAG('K','H','M',' ')},	/* Central Khmer */
  {"kmb",	HB_TAG('M','B','N',' ')},	/* Kimbundu */
  {"kmw",	HB_TAG('K','M','O',' ')},	/* Komo (Democratic Republic of Congo) */
  {"kn",	HB_TAG('K','A','N',' ')},	/* Kannada */
  {"knn",	HB_TAG('K','O','K',' ')},	/* Konkani */
  {"ko",	HB_TAG('K','O','R',' ')},	/* Korean */
  {"koi",	HB_TAG('K','O','P',' ')},	/* Komi-Permyak */
  {"kok",	HB_TAG('K','O','K',' ')},	/* Konkani [macrolanguage] */
  {"kon",	HB_TAG('K','O','N','0')},	/* Kongo */
  {"kos",	HB_TAG('K','O','S',' ')},	/* Kosraean */
  {"kpe",	HB_TAG('K','P','L',' ')},	/* Kpelle [macrolanguage] */
  {"kpv",	HB_TAG('K','O','Z',' ')},	/* Komi-Zyrian */
  {"kpy",	HB_TAG('K','Y','K',' ')},	/* Koryak */
  {"kqy",	HB_TAG('K','R','T',' ')},	/* Koorete */
  {"kr",	HB_TAG('K','N','R',' ')},	/* Kanuri [macrolanguage] */
  {"kri",	HB_TAG('K','R','I',' ')},	/* Krio */
  {"krl",	HB_TAG('K','R','L',' ')},	/* Karelian */
  {"kru",	HB_TAG('K','U','U',' ')},	/* Kurukh */
  {"ks",	HB_TAG('K','S','H',' ')},	/* Kashmiri */
  {"ksh",	HB_TAG('K','S','H','0')},	/* Ripuarian, Kölsch */
/*{"ksw",	HB_TAG('K','R','N',' ')},*/	/* S'gaw Karen (Microsoft fonts?) */
  {"ksw",	HB_TAG('K','S','W',' ')},	/* S'gaw Karen (OpenType spec and SIL fonts) */
  {"ktb",	HB_TAG('K','E','B',' ')},	/* Kebena */
  {"ktu",	HB_TAG('K','O','N',' ')},	/* Kikongo */
  {"ku",	HB_TAG('K','U','R',' ')},	/* Kurdish [macrolanguage] */
  {"kum",	HB_TAG('K','U','M',' ')},	/* Kumyk */
  {"kv",	HB_TAG('K','O','M',' ')},	/* Komi [macrolanguage] */
  {"kvd",	HB_TAG('K','U','I',' ')},	/* Kui (Indonesia) */
  {"kw",	HB_TAG('C','O','R',' ')},	/* Cornish */
  {"kxc",	HB_TAG('K','M','S',' ')},	/* Komso */
  {"kxu",	HB_TAG('K','U','I',' ')},	/* Kui (India) */
  {"ky",	HB_TAG('K','I','R',' ')},	/* Kirghiz/Kyrgyz */
  {"kyu",	HB_TAG('K','Y','U',' ')},	/* Western Kayah */
  {"la",	HB_TAG('L','A','T',' ')},	/* Latin */
  {"lad",	HB_TAG('J','U','D',' ')},	/* Ladino */
  {"lb",	HB_TAG('L','T','Z',' ')},	/* Luxembourgish */
  {"lbe",	HB_TAG('L','A','K',' ')},	/* Lak */
  {"lbj",	HB_TAG('L','D','K',' ')},	/* Ladakhi */
  {"lez",	HB_TAG('L','E','Z',' ')},	/* Lezgi */
  {"lg",	HB_TAG('L','U','G',' ')},	/* Ganda */
  {"li",	HB_TAG('L','I','M',' ')},	/* Limburgan/Limburger/Limburgish */
  {"lif",	HB_TAG('L','M','B',' ')},	/* Limbu */
  {"lij",	HB_TAG('L','I','J',' ')},	/* Ligurian */
  {"lis",	HB_TAG('L','I','S',' ')},	/* Lisu */
  {"ljp",	HB_TAG('L','J','P',' ')},	/* Lampung Api */
  {"lki",	HB_TAG('L','K','I',' ')},	/* Laki */
  {"lld",	HB_TAG('L','A','D',' ')},	/* Ladin */
  {"lmn",	HB_TAG('L','A','M',' ')},	/* Lambani */
  {"lmo",	HB_TAG('L','M','O',' ')},	/* Lombard */
  {"ln",	HB_TAG('L','I','N',' ')},	/* Lingala */
  {"lo",	HB_TAG('L','A','O',' ')},	/* Lao */
  {"lom",	HB_TAG('L','O','M',' ')},	/* Loma */
  {"lrc",	HB_TAG('L','R','C',' ')},	/* Northern Luri */
  {"lt",	HB_TAG('L','T','H',' ')},	/* Lithuanian */
  {"lu",	HB_TAG('L','U','B',' ')},	/* Luba-Katanga */
  {"lua",	HB_TAG('L','U','B',' ')},	/* Luba-Kasai */
  {"luo",	HB_TAG('L','U','O',' ')},	/* Luo (Kenya and Tanzania) */
  {"lus",	HB_TAG('M','I','Z',' ')},	/* Mizo */
  {"luy",	HB_TAG('L','U','H',' ')},	/* Luyia/Oluluyia [macrolanguage] */
  {"luz",	HB_TAG('L','R','C',' ')},	/* Southern Luri */
  {"lv",	HB_TAG('L','V','I',' ')},	/* Latvian */
  {"lzz",	HB_TAG('L','A','Z',' ')},	/* Laz */
  {"mad",	HB_TAG('M','A','D',' ')},	/* Madurese */
  {"mag",	HB_TAG('M','A','G',' ')},	/* Magahi */
  {"mai",	HB_TAG('M','T','H',' ')},	/* Maithili */
  {"mak",	HB_TAG('M','K','R',' ')},	/* Makasar */
  {"mam",	HB_TAG('M','A','M',' ')},	/* Mam */
  {"man",	HB_TAG('M','N','K',' ')},	/* Manding/Mandingo [macrolanguage] */
  {"mdc",	HB_TAG('M','L','E',' ')},	/* Male (Papua New Guinea) */
  {"mdf",	HB_TAG('M','O','K',' ')},	/* Moksha */
  {"mdr",	HB_TAG('M','D','R',' ')},	/* Mandar */
  {"mdy",	HB_TAG('M','L','E',' ')},	/* Male (Ethiopia) */
  {"men",	HB_TAG('M','D','E',' ')},	/* Mende (Sierra Leone) */
  {"mer",	HB_TAG('M','E','R',' ')},	/* Meru */
  {"mfe",	HB_TAG('M','F','E',' ')},	/* Morisyen */
  {"mg",	HB_TAG('M','L','G',' ')},	/* Malagasy [macrolanguage] */
  {"mh",	HB_TAG('M','A','H',' ')},	/* Marshallese */
  {"mhr",	HB_TAG('L','M','A',' ')},	/* Low Mari */
  {"mi",	HB_TAG('M','R','I',' ')},	/* Maori */
  {"min",	HB_TAG('M','I','N',' ')},	/* Minangkabau */
  {"mk",	HB_TAG('M','K','D',' ')},	/* Macedonian */
  {"mku",	HB_TAG('M','N','K',' ')},	/* Konyanka Maninka */
  {"mkw",	HB_TAG('M','K','W',' ')},	/* Kituba (Congo) */
  {"ml",	HB_TAG('M','L','R',' ')},	/* Malayalam */
  {"mlq",	HB_TAG('M','N','K',' ')},	/* Western Maninkakan */
  {"mn",	HB_TAG('M','N','G',' ')},	/* Mongolian [macrolanguage] */
  {"mnc",	HB_TAG('M','C','H',' ')},	/* Manchu */
  {"mni",	HB_TAG('M','N','I',' ')},	/* Manipuri */
  {"mnk",	HB_TAG('M','N','D',' ')},	/* Mandinka */
  {"mns",	HB_TAG('M','A','N',' ')},	/* Mansi */
  {"mnw",	HB_TAG('M','O','N',' ')},	/* Mon */
  {"mo",	HB_TAG('M','O','L',' ')},	/* Moldavian */
  {"moh",	HB_TAG('M','O','H',' ')},	/* Mohawk */
  {"mos",	HB_TAG('M','O','S',' ')},	/* Mossi */
  {"mpe",	HB_TAG('M','A','J',' ')},	/* Majang */
  {"mr",	HB_TAG('M','A','R',' ')},	/* Marathi */
  {"mrh",	HB_TAG('Q','I','N',' ')},	/* Mara Chin */
  {"mrj",	HB_TAG('H','M','A',' ')},	/* High Mari */
  {"ms",	HB_TAG('M','L','Y',' ')},	/* Malay [macrolanguage] */
  {"msc",	HB_TAG('M','N','K',' ')},	/* Sankaran Maninka */
  {"mt",	HB_TAG('M','T','S',' ')},	/* Maltese */
  {"mtr",	HB_TAG('M','A','W',' ')},	/* Mewari */
  {"mus",	HB_TAG('M','U','S',' ')},	/* Creek */
  {"mve",	HB_TAG('M','A','W',' ')},	/* Marwari (Pakistan) */
  {"mwk",	HB_TAG('M','N','K',' ')},	/* Kita Maninkakan */
  {"mwl",	HB_TAG('M','W','L',' ')},	/* Mirandese */
  {"mwr",	HB_TAG('M','A','W',' ')},	/* Marwari [macrolanguage] */
  {"mww",	HB_TAG('M','W','W',' ')},	/* Hmong Daw */
  {"my",	HB_TAG('B','R','M',' ')},	/* Burmese */
  {"mym",	HB_TAG('M','E','N',' ')},	/* Me'en */
  {"myn",	HB_TAG('M','Y','N',' ')},	/* Mayan */
  {"myq",	HB_TAG('M','N','K',' ')},	/* Forest Maninka (retired code) */
  {"myv",	HB_TAG('E','R','Z',' ')},	/* Erzya */
  {"mzn",	HB_TAG('M','Z','N',' ')},	/* Mazanderani */
  {"na",	HB_TAG('N','A','U',' ')},	/* Nauru */
  {"nag",	HB_TAG('N','A','G',' ')},	/* Naga-Assamese */
  {"nah",	HB_TAG('N','A','H',' ')},	/* Nahuatl [family] */
  {"nap",	HB_TAG('N','A','P',' ')},	/* Neapolitan */
  {"nb",	HB_TAG('N','O','R',' ')},	/* Norwegian Bokmål */
  {"nco",	HB_TAG('S','I','B',' ')},	/* Sibe */
  {"nd",	HB_TAG('N','D','B',' ')},	/* [North] Ndebele */
  {"ndc",	HB_TAG('N','D','C',' ')},	/* Ndau */
  {"nds",	HB_TAG('N','D','S',' ')},	/* Low German/Low Saxon */
  {"ne",	HB_TAG('N','E','P',' ')},	/* Nepali */
  {"new",	HB_TAG('N','E','W',' ')},	/* Newari */
  {"ng",	HB_TAG('N','D','G',' ')},	/* Ndonga */
  {"nga",	HB_TAG('N','G','A',' ')},	/* Ngabaka */
  {"ngl",	HB_TAG('L','M','W',' ')},	/* Lomwe */
  {"ngo",	HB_TAG('S','X','T',' ')},	/* Sutu */
  {"niu",	HB_TAG('N','I','U',' ')},	/* Niuean */
  {"niv",	HB_TAG('G','I','L',' ')},	/* Gilyak */
  {"nl",	HB_TAG('N','L','D',' ')},	/* Dutch */
  {"nn",	HB_TAG('N','Y','N',' ')},	/* Norwegian Nynorsk */
  {"no",	HB_TAG('N','O','R',' ')},	/* Norwegian [macrolanguage] */
  {"nod",	HB_TAG('N','T','A',' ')},	/* Northern Thai */
  {"noe",	HB_TAG('N','O','E',' ')},	/* Nimadi */
  {"nog",	HB_TAG('N','O','G',' ')},	/* Nogai */
  {"nov",	HB_TAG('N','O','V',' ')},	/* Novial */
  {"nqo",	HB_TAG('N','K','O',' ')},	/* N'Ko */
  {"nr",	HB_TAG('N','D','B',' ')},	/* [South] Ndebele */
  {"nsk",	HB_TAG('N','A','S',' ')},	/* Naskapi */
  {"nso",	HB_TAG('S','O','T',' ')},	/* [Northern] Sotho */
  {"nv",	HB_TAG('N','A','V',' ')},	/* Navajo */
  {"ny",	HB_TAG('C','H','I',' ')},	/* Chewa/Chichwa/Nyanja */
  {"nym",	HB_TAG('N','Y','M',' ')},	/* Nyamwezi */
  {"nyn",	HB_TAG('N','K','L',' ')},	/* Nyankole */
  {"oc",	HB_TAG('O','C','I',' ')},	/* Occitan (post 1500) */
  {"oj",	HB_TAG('O','J','B',' ')},	/* Ojibwa [macrolanguage] */
  {"ojs",	HB_TAG('O','C','R',' ')},	/* Oji-Cree */
  {"okm",	HB_TAG('K','O','H',' ')},	/* Korean Old Hangul */
  {"om",	HB_TAG('O','R','O',' ')},	/* Oromo [macrolanguage] */
  {"or",	HB_TAG('O','R','I',' ')},	/* Oriya */
  {"os",	HB_TAG('O','S','S',' ')},	/* Ossetian */
  {"pa",	HB_TAG('P','A','N',' ')},	/* Panjabi */
  {"pag",	HB_TAG('P','A','G',' ')},	/* Pangasinan */
  {"pam",	HB_TAG('P','A','M',' ')},	/* Kapampangan/Pampanga */
  {"pap",	HB_TAG('P','A','P','0')},	/* Papiamento */
  {"pau",	HB_TAG('P','A','U',' ')},	/* Palauan */
  {"pcc",	HB_TAG('P','C','C',' ')},	/* Bouyei */
  {"pcd",	HB_TAG('P','C','D',' ')},	/* Picard */
  {"pce",	HB_TAG('P','L','G',' ')},	/* [Ruching] Palaung */
  {"pck",	HB_TAG('Q','I','N',' ')},	/* Paite Chin */
  {"pdc",	HB_TAG('P','D','C',' ')},	/* Pennsylvania German */
  {"pes",	HB_TAG('F','A','R',' ')},	/* Iranian Persian */
  {"phk",	HB_TAG('P','H','K',' ')},	/* Phake */
  {"pi",	HB_TAG('P','A','L',' ')},	/* Pali */
  {"pih",	HB_TAG('P','I','H',' ')},	/* Pitcairn-Norfolk */
  {"pl",	HB_TAG('P','L','K',' ')},	/* Polish */
  {"pll",	HB_TAG('P','L','G',' ')},	/* [Shwe] Palaung */
  {"plp",	HB_TAG('P','A','P',' ')},	/* Palpa */
  {"pms",	HB_TAG('P','M','S',' ')},	/* Piemontese */
  {"pnb",	HB_TAG('P','N','B',' ')},	/* Western Panjabi */
  {"poh",	HB_TAG('P','O','H',' ')},	/* Pocomchi */
  {"pon",	HB_TAG('P','O','N',' ')},	/* Pohnpeian */
  {"prs",	HB_TAG('D','R','I',' ')},	/* Afghan Persian/Dari */
  {"ps",	HB_TAG('P','A','S',' ')},	/* Pashto/Pushto [macrolanguage] */
  {"pt",	HB_TAG('P','T','G',' ')},	/* Portuguese */
  {"pwo",	HB_TAG('P','W','O',' ')},	/* Pwo Western Karen */
  {"qu",	HB_TAG('Q','U','Z',' ')},	/* Quechua [macrolanguage] */
  {"quc",	HB_TAG('Q','U','C',' ')},	/* K'iche'/Quiché */
  {"quh",	HB_TAG('Q','U','H',' ')},	/* Quechua (Bolivia) */
  {"quz",	HB_TAG('Q','U','Z',' ')},	/* Cusco Quechua */
  {"qvi",	HB_TAG('Q','V','I',' ')},	/* Quechua (Ecuador) */
  {"qwh",	HB_TAG('Q','W','H',' ')},	/* Quechua (Peru) */
  {"raj",	HB_TAG('R','A','J',' ')},	/* Rajasthani [macrolanguage] */
  {"rar",	HB_TAG('R','A','R',' ')},	/* Rarotongan */
  {"rbb",	HB_TAG('P','L','G',' ')},	/* Rumai Palaung */
  {"rej",	HB_TAG('R','E','J',' ')},	/* Rejang */
  {"ria",	HB_TAG('R','I','A',' ')},	/* Riang (India) */
  {"rif",	HB_TAG('R','I','F',' ')},	/* Tarifit */
  {"ril",	HB_TAG('R','I','A',' ')},	/* Riang (Myanmar) */
  {"rit",	HB_TAG('R','I','T',' ')},	/* Ritarungo */
  {"rki",	HB_TAG('A','R','K',' ')},	/* Rakhine */
  {"rkw",	HB_TAG('R','K','W',' ')},	/* Arakwal */
  {"rm",	HB_TAG('R','M','S',' ')},	/* Romansh */
  {"rmy",	HB_TAG('R','M','Y',' ')},	/* Vlax Romani */
  {"rn",	HB_TAG('R','U','N',' ')},	/* Rundi */
  {"ro",	HB_TAG('R','O','M',' ')},	/* Romanian */
  {"rom",	HB_TAG('R','O','Y',' ')},	/* Romany [macrolanguage] */
  {"rtm",	HB_TAG('R','T','M',' ')},	/* Rotuman */
  {"ru",	HB_TAG('R','U','S',' ')},	/* Russian */
  {"rue",	HB_TAG('R','S','Y',' ')},	/* Rusyn */
  {"rup",	HB_TAG('R','U','P',' ')},	/* Aromanian/Arumanian/Macedo-Romanian */
  {"rw",	HB_TAG('R','U','A',' ')},	/* Kinyarwanda */
  {"rwr",	HB_TAG('M','A','W',' ')},	/* Marwari (India) */
  {"sa",	HB_TAG('S','A','N',' ')},	/* Sanskrit */
  {"sah",	HB_TAG('Y','A','K',' ')},	/* Yakut */
  {"sam",	HB_TAG('P','A','A',' ')},	/* Palestinian Aramaic */
  {"sas",	HB_TAG('S','A','S',' ')},	/* Sasak */
  {"sat",	HB_TAG('S','A','T',' ')},	/* Santali */
  {"sc",	HB_TAG('S','R','D',' ')},	/* Sardinian [macrolanguage] */
  {"sck",	HB_TAG('S','A','D',' ')},	/* Sadri */
  {"scn",	HB_TAG('S','C','N',' ')},	/* Sicilian */
  {"sco",	HB_TAG('S','C','O',' ')},	/* Scots */
  {"scs",	HB_TAG('S','L','A',' ')},	/* [North] Slavey */
  {"sd",	HB_TAG('S','N','D',' ')},	/* Sindhi */
  {"se",	HB_TAG('N','S','M',' ')},	/* Northern Sami */
  {"seh",	HB_TAG('S','N','A',' ')},	/* Sena */
  {"sel",	HB_TAG('S','E','L',' ')},	/* Selkup */
  {"sez",	HB_TAG('Q','I','N',' ')},	/* Senthang Chin */
  {"sg",	HB_TAG('S','G','O',' ')},	/* Sango */
  {"sga",	HB_TAG('S','G','A',' ')},	/* Old Irish (to 900) */
  {"sgs",	HB_TAG('S','G','S',' ')},	/* Samogitian */
  {"sgw",	HB_TAG('C','H','G',' ')},	/* Sebat Bet Gurage */
/*{"sgw",	HB_TAG('S','G','W',' ')},*/	/* Sebat Bet Gurage (in SIL fonts) */
  {"shi",	HB_TAG('S','H','I',' ')},	/* Tachelhit */
  {"shn",	HB_TAG('S','H','N',' ')},	/* Shan */
  {"si",	HB_TAG('S','N','H',' ')},	/* Sinhala */
  {"sid",	HB_TAG('S','I','D',' ')},	/* Sidamo */
  {"sjd",	HB_TAG('K','S','M',' ')},	/* Kildin Sami */
  {"sk",	HB_TAG('S','K','Y',' ')},	/* Slovak */
  {"skr",	HB_TAG('S','R','K',' ')},	/* Seraiki */
  {"sl",	HB_TAG('S','L','V',' ')},	/* Slovenian */
  {"sm",	HB_TAG('S','M','O',' ')},	/* Samoan */
  {"sma",	HB_TAG('S','S','M',' ')},	/* Southern Sami */
  {"smj",	HB_TAG('L','S','M',' ')},	/* Lule Sami */
  {"smn",	HB_TAG('I','S','M',' ')},	/* Inari Sami */
  {"sms",	HB_TAG('S','K','S',' ')},	/* Skolt Sami */
  {"sn",	HB_TAG('S','N','A','0')},	/* Shona */
  {"snk",	HB_TAG('S','N','K',' ')},	/* Soninke */
  {"so",	HB_TAG('S','M','L',' ')},	/* Somali */
  {"sop",	HB_TAG('S','O','P',' ')},	/* Songe */
  {"sq",	HB_TAG('S','Q','I',' ')},	/* Albanian [macrolanguage] */
  {"sr",	HB_TAG('S','R','B',' ')},	/* Serbian */
  {"srr",	HB_TAG('S','R','R',' ')},	/* Serer */
  {"ss",	HB_TAG('S','W','Z',' ')},	/* Swati */
  {"st",	HB_TAG('S','O','T',' ')},	/* [Southern] Sotho */
  {"stq",	HB_TAG('S','T','Q',' ')},	/* Saterfriesisch */
  {"stv",	HB_TAG('S','I','G',' ')},	/* Silt'e */
  {"su",	HB_TAG('S','U','N',' ')},	/* Sundanese */
  {"suk",	HB_TAG('S','U','K',' ')},	/* Sukama */
  {"suq",	HB_TAG('S','U','R',' ')},	/* Suri */
  {"sv",	HB_TAG('S','V','E',' ')},	/* Swedish */
  {"sva",	HB_TAG('S','V','A',' ')},	/* Svan */
  {"sw",	HB_TAG('S','W','K',' ')},	/* Swahili [macrolanguage] */
  {"swb",	HB_TAG('C','M','R',' ')},	/* Comorian */
  {"swh",	HB_TAG('S','W','K',' ')},	/* Kiswahili/Swahili */
  {"swv",	HB_TAG('M','A','W',' ')},	/* Shekhawati */
  {"sxu",	HB_TAG('S','X','U',' ')},	/* Upper Saxon */
  {"syc",	HB_TAG('S','Y','R',' ')},	/* Classical Syriac */
  {"syl",	HB_TAG('S','Y','L',' ')},	/* Sylheti */
  {"syr",	HB_TAG('S','Y','R',' ')},	/* Syriac [macrolanguage] */
  {"szl",	HB_TAG('S','Z','L',' ')},	/* Silesian */
  {"ta",	HB_TAG('T','A','M',' ')},	/* Tamil */
  {"tab",	HB_TAG('T','A','B',' ')},	/* Tabasaran */
  {"tcp",	HB_TAG('Q','I','N',' ')},	/* Tawr Chin */
  {"tcy",	HB_TAG('T','U','L',' ')},	/* Tulu */
  {"tcz",	HB_TAG('Q','I','N',' ')},	/* Thado Chin */
  {"tdd",	HB_TAG('T','D','D',' ')},	/* Tai Nüa */
  {"te",	HB_TAG('T','E','L',' ')},	/* Telugu */
  {"tem",	HB_TAG('T','M','N',' ')},	/* Temne */
  {"tet",	HB_TAG('T','E','T',' ')},	/* Tetum */
  {"tg",	HB_TAG('T','A','J',' ')},	/* Tajik */
  {"th",	HB_TAG('T','H','A',' ')},	/* Thai */
  {"ti",	HB_TAG('T','G','Y',' ')},	/* Tigrinya */
  {"tig",	HB_TAG('T','G','R',' ')},	/* Tigre */
  {"tiv",	HB_TAG('T','I','V',' ')},	/* Tiv */
  {"tk",	HB_TAG('T','K','M',' ')},	/* Turkmen */
  {"tl",	HB_TAG('T','G','L',' ')},	/* Tagalog */
  {"tmh",	HB_TAG('T','M','H',' ')},	/* Tamashek */
  {"tn",	HB_TAG('T','N','A',' ')},	/* Tswana */
  {"to",	HB_TAG('T','G','N',' ')},	/* Tonga (Tonga Islands) */
  {"tod",	HB_TAG('T','O','D','0')},	/* Toma */
  {"toi",	HB_TAG('T','N','G',' ')},	/* Tonga */
  {"tpi",	HB_TAG('T','P','I',' ')},	/* Tok Pisin */
  {"tr",	HB_TAG('T','R','K',' ')},	/* Turkish */
  {"tru",	HB_TAG('T','U','A',' ')},	/* Turoyo Aramaic */
  {"ts",	HB_TAG('T','S','G',' ')},	/* Tsonga */
  {"tt",	HB_TAG('T','A','T',' ')},	/* Tatar */
  {"tum",	HB_TAG('T','U','M',' ')},	/* Tumbuka */
  {"tvl",	HB_TAG('T','V','L',' ')},	/* Tuvalu */
  {"tw",	HB_TAG('T','W','I',' ')},	/* Twi */
  {"ty",	HB_TAG('T','H','T',' ')},	/* Tahitian */
  {"tyv",	HB_TAG('T','U','V',' ')},	/* Tuvin */
  {"tyz",	HB_TAG('T','Y','Z',' ')},	/* Tày */
  {"tzm",	HB_TAG('T','Z','M',' ')},	/* Central Atlas Tamazight */
  {"tzo",	HB_TAG('T','Z','O',' ')},	/* Tzotzil */
  {"udm",	HB_TAG('U','D','M',' ')},	/* Udmurt */
  {"ug",	HB_TAG('U','Y','G',' ')},	/* Uighur */
  {"uk",	HB_TAG('U','K','R',' ')},	/* Ukrainian */
  {"umb",	HB_TAG('U','M','B',' ')},	/* Umbundu */
  {"unr",	HB_TAG('M','U','N',' ')},	/* Mundari */
  {"ur",	HB_TAG('U','R','D',' ')},	/* Urdu */
  {"uz",	HB_TAG('U','Z','B',' ')},	/* Uzbek [macrolanguage] */
  {"uzn",	HB_TAG('U','Z','B',' ')},	/* Northern Uzbek */
  {"uzs",	HB_TAG('U','Z','B',' ')},	/* Southern Uzbek */
  {"ve",	HB_TAG('V','E','N',' ')},	/* Venda */
  {"vec",	HB_TAG('V','E','C',' ')},	/* Venetian */
  {"vi",	HB_TAG('V','I','T',' ')},	/* Vietnamese */
  {"vls",	HB_TAG('F','L','E',' ')},	/* Vlaams */
  {"vmw",	HB_TAG('M','A','K',' ')},	/* Makhuwa */
  {"vo",	HB_TAG('V','O','L',' ')},	/* Volapük */
  {"vro",	HB_TAG('V','R','O',' ')},	/* Võro */
  {"wa",	HB_TAG('W','L','N',' ')},	/* Walloon */
  {"war",	HB_TAG('W','A','R',' ')},	/* Waray (Philippines) */
  {"wbm",	HB_TAG('W','A',' ',' ')},	/* Wa */
  {"wbr",	HB_TAG('W','A','G',' ')},	/* Wagdi */
  {"wle",	HB_TAG('S','I','G',' ')},	/* Wolane */
  {"wo",	HB_TAG('W','L','F',' ')},	/* Wolof */
  {"wry",	HB_TAG('M','A','W',' ')},	/* Merwari */
  {"wtm",	HB_TAG('W','T','M',' ')},	/* Mewati */
  {"xal",	HB_TAG('K','L','M',' ')},	/* Kalmyk */
  {"xan",	HB_TAG('S','E','K',' ')},	/* Sekota */
  {"xh",	HB_TAG('X','H','S',' ')},	/* Xhosa */
  {"xjb",	HB_TAG('X','J','B',' ')},	/* Minjangbal */
  {"xog",	HB_TAG('X','O','G',' ')},	/* Soga */
  {"xom",	HB_TAG('K','M','O',' ')},	/* Komo (Sudan) */
  {"xpe",	HB_TAG('X','P','E',' ')},	/* Kpelle (Liberia) */
  {"xsl",	HB_TAG('S','S','L',' ')},	/* South Slavey */
  {"xst",	HB_TAG('S','I','G',' ')},	/* Silt'e (retired code) */
  {"xwo",	HB_TAG('T','O','D',' ')},	/* Written Oirat (Todo) */
  {"yao",	HB_TAG('Y','A','O',' ')},	/* Yao */
  {"yap",	HB_TAG('Y','A','P',' ')},	/* Yapese */
  {"yi",	HB_TAG('J','I','I',' ')},	/* Yiddish [macrolanguage] */
  {"yo",	HB_TAG('Y','B','A',' ')},	/* Yoruba */
  {"yos",	HB_TAG('Q','I','N',' ')},	/* Yos, deprecated by IANA in favor of Zou [zom] */
  {"yso",	HB_TAG('N','I','S',' ')},	/* Nisi (China) */
  {"za",	HB_TAG('Z','H','A',' ')},	/* Chuang/Zhuang [macrolanguage] */
  {"zea",	HB_TAG('Z','E','A',' ')},	/* Zeeuws */
  {"zgh",	HB_TAG('Z','G','H',' ')},	/* Standard Morrocan Tamazigh */
  {"zne",	HB_TAG('Z','N','D',' ')},	/* Zande */
  {"zom",	HB_TAG('Q','I','N',' ')},	/* Zou */
  {"zu",	HB_TAG('Z','U','L',' ')}, 	/* Zulu */
  {"zum",	HB_TAG('L','R','C',' ')},	/* Kumzari */
  {"zza",	HB_TAG('Z','Z','A',' ')},	/* Zazaki */

  /* The corresponding languages IDs for the following IDs are unclear,
   * overlap, or are architecturally weird. Needs more research. */

/*{"chp",	HB_TAG('S','A','Y',' ')},*/	/* Sayisi */
/*{"cwd",	HB_TAG('T','C','R',' ')},*/	/* TH-Cree */
/*{"emk",	HB_TAG('E','M','K',' ')},*/	/* Eastern Maninkakan */
/*{"krc",	HB_TAG('B','A','L',' ')},*/	/* Balkar */
/*{"??",	HB_TAG('B','C','R',' ')},*/	/* Bible Cree */
/*{"zh?",	HB_TAG('C','H','N',' ')},*/	/* Chinese (seen in Microsoft fonts) */
/*{"ar-Syrc?",	HB_TAG('G','A','R',' ')},*/	/* Garshuni */
/*{"hy?",	HB_TAG('H','Y','E','0')},*/	/* Armenian East (ISO 639-3 hye according to Microsoft, but that’s equivalent to ISO 639-1 hy) */
/*{"ga-Latg?/"	HB_TAG('I','R','T',' ')},*/	/* Irish Traditional */
/*{"krc",	HB_TAG('K','A','R',' ')},*/	/* Karachay */
/*{"ka-Geok?",	HB_TAG('K','G','E',' ')},*/	/* Khutsuri Georgian */
/*{"kca",	HB_TAG('K','H','K',' ')},*/	/* Khanty-Kazim */
/*{"kca",	HB_TAG('K','H','S',' ')},*/	/* Khanty-Shurishkar */
/*{"kca",	HB_TAG('K','H','V',' ')},*/	/* Khanty-Vakhi */
/*{"kqs, kss",	HB_TAG('K','I','S',' ')},*/	/* Kisii */
/*{"lua",	HB_TAG('L','U','A',' ')},*/	/* Luba-Lulua */
/*{"mlq",	HB_TAG('M','L','N',' ')},*/	/* Malinke */
/*{"nso",	HB_TAG('N','S','O',' ')},*/	/* Sotho, Northern */
/*{"??",	HB_TAG('M','A','L',' ')},*/	/* Malayalam Traditional */
/*{"csw",	HB_TAG('N','C','R',' ')},*/	/* N-Cree */
/*{"csw",	HB_TAG('N','H','C',' ')},*/	/* Norway House Cree */
/*{"el-polyton",	HB_TAG('P','G','R',' ')},*/	/* Polytonic Greek */
/*{"bgr, cnh, cnw, czt, sez, tcp, csy, ctd, flm, pck, tcz, zom, cmr, dao, hlt, cka, cnk, mrh, mwg, cbl, cnb, csh",	HB_TAG('Q','I','N',' ')},*/	/* Chin */
/*{"??",	HB_TAG('Y','I','C',' ')},*/	/* Yi Classic */
/*{"zh-Latn-pinyin",	HB_TAG('Z','H','P',' ')},*/	/* Chinese Phonetic */
};

typedef struct {
  char language[11];
  hb_tag_t tag;
} LangTagLong;
static const LangTagLong ot_languages_zh[] = {
  /* Store longest-first, if one is a prefix of another. */
  {"zh-cn",	HB_TAG('Z','H','S',' ')},	/* Chinese (China) */
  {"zh-hk",	HB_TAG('Z','H','H',' ')},	/* Chinese (Hong Kong) */
  {"zh-mo",	HB_TAG('Z','H','H',' ')},	/* Chinese (Macao) */
  {"zh-sg",	HB_TAG('Z','H','S',' ')},	/* Chinese (Singapore) */
  {"zh-tw",	HB_TAG('Z','H','T',' ')},	/* Chinese (Taiwan) */
  {"zh-hans",	HB_TAG('Z','H','S',' ')},	/* Chinese (Simplified) */
  {"zh-hant-hk",HB_TAG('Z','H','H',' ')},	/* Chinese (Hong Kong) */
  {"zh-hant-mo",HB_TAG('Z','H','H',' ')},	/* Chinese (Macao) */
  {"zh-hant",	HB_TAG('Z','H','T',' ')},	/* Chinese (Traditional) */
};

static int
lang_compare_first_component (const void *pa,
			      const void *pb)
{
  const char *a = (const char *) pa;
  const char *b = (const char *) pb;
  unsigned int da, db;
  const char *p;

  p = strchr (a, '-');
  da = p ? (unsigned int) (p - a) : strlen (a);

  p = strchr (b, '-');
  db = p ? (unsigned int) (p - b) : strlen (b);

  return strncmp (a, b, MAX (da, db));
}

static hb_bool_t
lang_matches (const char *lang_str, const char *spec)
{
  unsigned int len = strlen (spec);

  return strncmp (lang_str, spec, len) == 0 &&
	 (lang_str[len] == '\0' || lang_str[len] == '-');
}

hb_tag_t
hb_ot_tag_from_language (hb_language_t language)
{
  const char *lang_str, *s;

  if (language == HB_LANGUAGE_INVALID)
    return HB_OT_TAG_DEFAULT_LANGUAGE;

  lang_str = hb_language_to_string (language);

  s = strstr (lang_str, "x-hbot");
  if (s) {
    char tag[4];
    int i;
    s += 6;
    for (i = 0; i < 4 && ISALNUM (s[i]); i++)
      tag[i] = TOUPPER (s[i]);
    if (i) {
      for (; i < 4; i++)
	tag[i] = ' ';
      return HB_TAG (tag[0], tag[1], tag[2], tag[3]);
    }
  }

  /*
   * "fonipa" is a variant tag in BCP-47, meaning the International Phonetic Alphabet.
   * It can be applied to any language.
   */
  if (strstr (lang_str, "-fonipa")) {
    return HB_TAG('I','P','P','H');  /* Phonetic transcription—IPA conventions */
  }

  /*
   * "fonnapa" is a variant tag in BCP-47, meaning the North American Phonetic Alphabet
   * also known as Americanist Phonetic Notation.  It can be applied to any language.
   */
  if (strstr (lang_str, "-fonnapa")) {
    return HB_TAG('A','P','P','H');  /* Phonetic transcription—Americanist conventions */
  }

  /*
   * "Syre" is a BCP-47 script tag, meaning the Estrangela variant of the Syriac script.
   * It can be applied to any language.
   */
  if (strstr (lang_str, "-syre")) {
    return HB_TAG('S','Y','R','E');  /* Estrangela Syriac */
  }

  /*
   * "Syrj" is a BCP-47 script tag, meaning the Western variant of the Syriac script.
   * It can be applied to any language.
   */
  if (strstr (lang_str, "-syrj")) {
    return HB_TAG('S','Y','R','J');  /* Western Syriac */
  }

  /*
   * "Syrn" is a BCP-47 script tag, meaning the Eastern variant of the Syriac script.
   * It can be applied to any language.
   */
  if (strstr (lang_str, "-syrn")) {
    return HB_TAG('S','Y','R','N');  /* Eastern Syriac */
  }

  /* Find a language matching in the first component */
  {
    const LangTag *lang_tag;
    lang_tag = (LangTag *) bsearch (lang_str, ot_languages,
				    ARRAY_LENGTH (ot_languages), sizeof (LangTag),
				    lang_compare_first_component);
    if (lang_tag)
      return lang_tag->tag;
  }

  /* Otherwise, check the Chinese ones */
  if (0 == lang_compare_first_component (lang_str, "zh"))
  {
    unsigned int i;

    for (i = 0; i < ARRAY_LENGTH (ot_languages_zh); i++)
    {
      const LangTagLong *lang_tag;
      lang_tag = &ot_languages_zh[i];
      if (lang_matches (lang_str, lang_tag->language))
	return lang_tag->tag;
    }

    /* Otherwise just return 'ZHS ' */
    return HB_TAG('Z','H','S',' ');
  }

  s = strchr (lang_str, '-');
  if (!s)
    s = lang_str + strlen (lang_str);
  if (s - lang_str == 3) {
    /* Assume it's ISO-639-3 and upper-case and use it. */
    return hb_tag_from_string (lang_str, s - lang_str) & ~0x20202000u;
  }

  return HB_OT_TAG_DEFAULT_LANGUAGE;
}

/**
 * hb_ot_tag_to_language:
 *
 *
 *
 * Return value: (transfer none):
 *
 * Since: 0.9.2
 **/
hb_language_t
hb_ot_tag_to_language (hb_tag_t tag)
{
  unsigned int i;

  if (tag == HB_OT_TAG_DEFAULT_LANGUAGE)
    return nullptr;

  /* struct LangTag has only room for 3-letter language tags. */
  switch (tag) {
  case HB_TAG('A','P','P','H'):  /* Phonetic transcription—Americanist conventions */
    return hb_language_from_string ("und-fonnapa", -1);
  case HB_TAG('I','P','P','H'):  /* Phonetic transcription—IPA conventions */
    return hb_language_from_string ("und-fonipa", -1);
  case HB_TAG('S','Y','R',' '):  /* Syriac [macrolanguage] */
    return hb_language_from_string ("syr", -1);
  case HB_TAG('S','Y','R','E'):  /* Estrangela Syriac */
    return hb_language_from_string ("und-Syre", -1);
  case HB_TAG('S','Y','R','J'):  /* Western Syriac */
    return hb_language_from_string ("und-Syrj", -1);
  case HB_TAG('S','Y','R','N'):  /* Eastern Syriac */
    return hb_language_from_string ("und-Syrn", -1);
  }

  for (i = 0; i < ARRAY_LENGTH (ot_languages); i++)
    if (ot_languages[i].tag == tag)
      return hb_language_from_string (ot_languages[i].language, -1);

  /* If tag starts with ZH, it's Chinese */
  if ((tag & 0xFFFF0000u)  == 0x5A480000u) {
    switch (tag) {
      case HB_TAG('Z','H','H',' '): return hb_language_from_string ("zh-hk", -1); /* Hong Kong */
      case HB_TAG('Z','H','S',' '): return hb_language_from_string ("zh-Hans", -1); /* Simplified */
      case HB_TAG('Z','H','T',' '): return hb_language_from_string ("zh-Hant", -1); /* Traditional */
      default: break; /* Fall through */
    }
  }

  /* Else return a custom language in the form of "x-hbotABCD" */
  {
    unsigned char buf[11] = "x-hbot";
    buf[6] = tag >> 24;
    buf[7] = (tag >> 16) & 0xFF;
    buf[8] = (tag >> 8) & 0xFF;
    buf[9] = tag & 0xFF;
    if (buf[9] == 0x20)
      buf[9] = '\0';
    buf[10] = '\0';
    return hb_language_from_string ((char *) buf, -1);
  }
}

#ifdef MAIN
static inline void
test_langs_sorted (void)
{
  for (unsigned int i = 1; i < ARRAY_LENGTH (ot_languages); i++)
  {
    int c = lang_compare_first_component (ot_languages[i-1].language, ot_languages[i].language);
    if (c >= 0)
    {
      fprintf (stderr, "ot_languages not sorted at index %d: %s %d %s\n",
	       i, ot_languages[i-1].language, c, ot_languages[i].language);
      abort();
    }
  }
}

int
main (void)
{
  test_langs_sorted ();
  return 0;
}

#endif
