src/hb-ot-tag.cc |  212 ++++++++++++++++++++++++++++---------------------------
 1 file changed, 110 insertions(+), 102 deletions(-)

New commits:
commit ba2d543004573e8e4e56df70b7fe2a66a42bc83f
Author: Behdad Esfahbod <[email protected]>
Date:   Sat Dec 8 19:28:41 2012 -0500

    Update OT language tags
    
    Patch from Roozbeh Pournader.

diff --git a/src/hb-ot-tag.cc b/src/hb-ot-tag.cc
index fd077ac..91ebec7 100644
--- a/src/hb-ot-tag.cc
+++ b/src/hb-ot-tag.cc
@@ -23,7 +23,7 @@
  * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  *
  * Red Hat Author(s): Behdad Esfahbod
- * Google Author(s): Behdad Esfahbod
+ * Google Author(s): Behdad Esfahbod, Roozbeh Pournader
  */
 
 #include "hb-private.hh"
@@ -169,7 +169,9 @@ typedef struct {
  * Draft OpenType 1.5 spec, with with the ISO 639-3 codes from
  * 2008/08/04, matching on name, and finally adjusted manually.
  *
- * Many items still missing.  Those are commented out at the end.
+ * Updated on 2012/12/07 with more research into remaining codes.
+ *
+ * Some items still missing.  Those are commented out at the end.
  * Keep sorted for bsearch.
  */
 
@@ -177,43 +179,63 @@ 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 */
+  {"ada",      HB_TAG('D','N','G',' ')},       /* Dangme */
   {"ady",      HB_TAG('A','D','Y',' ')},       /* Adyghe */
   {"af",       HB_TAG('A','F','K',' ')},       /* Afrikaans */
+  {"aii",      HB_TAG('S','W','A',' ')},       /* Swadaya Aramaic */
   {"aiw",      HB_TAG('A','R','I',' ')},       /* Aari */
+  {"alt",      HB_TAG('A','L','T',' ')},       /* [Southern] Altai */
   {"am",       HB_TAG('A','M','H',' ')},       /* Amharic */
+  {"amf",      HB_TAG('H','B','N',' ')},       /* Hammer-Banna */
   {"ar",       HB_TAG('A','R','A',' ')},       /* Arabic */
   {"arn",      HB_TAG('M','A','P',' ')},       /* Mapudungun */
   {"as",       HB_TAG('A','S','M',' ')},       /* Assamese */
+  {"ath",      HB_TAG('A','T','H',' ')},       /* Athapaskan [family] */
+  {"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 */
   {"az",       HB_TAG('A','Z','E',' ')},       /* Azerbaijani */
   {"ba",       HB_TAG('B','S','H',' ')},       /* Bashkir */
+  {"bai",      HB_TAG('B','M','L',' ')},       /* Bamileke [family] */
   {"bal",      HB_TAG('B','L','I',' ')},       /* Baluchi */
+  {"bci",      HB_TAG('B','A','U',' ')},       /* Baule */
   {"bcq",      HB_TAG('B','C','H',' ')},       /* Bench */
+  {"be",       HB_TAG('B','E','L',' ')},       /* Belarussian */
   {"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 */
+  {"bfy",      HB_TAG('B','A','G',' ')},       /* Baghelkhandi */
   {"bg",       HB_TAG('B','G','R',' ')},       /* Bulgarian */
   {"bhb",      HB_TAG('B','H','I',' ')},       /* Bhili */
   {"bho",      HB_TAG('B','H','O',' ')},       /* Bhojpuri */
   {"bik",      HB_TAG('B','I','K',' ')},       /* Bikol */
   {"bin",      HB_TAG('E','D','O',' ')},       /* Bini */
+  {"bjt",      HB_TAG('B','L','N',' ')},       /* Balanta-Ganja */
+  {"bla",      HB_TAG('B','K','F',' ')},       /* Blackfoot */
+  {"ble",      HB_TAG('B','L','N',' ')},       /* Balanta-Kentohe */
   {"bm",       HB_TAG('B','M','B',' ')},       /* Bambara */
   {"bn",       HB_TAG('B','E','N',' ')},       /* Bengali */
   {"bo",       HB_TAG('T','I','B',' ')},       /* Tibetan */
   {"br",       HB_TAG('B','R','E',' ')},       /* Breton */
+  {"bra",      HB_TAG('B','R','I',' ')},       /* Braj Bhasha */
   {"brh",      HB_TAG('B','R','H',' ')},       /* Brahui */
   {"bs",       HB_TAG('B','O','S',' ')},       /* Bosnian */
   {"btb",      HB_TAG('B','T','I',' ')},       /* Beti (Cameroon) */
+  {"bxr",      HB_TAG('R','B','U',' ')},       /* Russian Buriat */
+  {"byn",      HB_TAG('B','I','L',' ')},       /* Bilen */
   {"ca",       HB_TAG('C','A','T',' ')},       /* Catalan */
   {"ce",       HB_TAG('C','H','E',' ')},       /* Chechen */
   {"ceb",      HB_TAG('C','E','B',' ')},       /* Cebuano */
   {"chp",      HB_TAG('C','H','P',' ')},       /* Chipewyan */
   {"chr",      HB_TAG('C','H','R',' ')},       /* Cherokee */
+  {"ckt",      HB_TAG('C','H','K',' ')},       /* Chukchi */
   {"cop",      HB_TAG('C','O','P',' ')},       /* Coptic */
   {"cr",       HB_TAG('C','R','E',' ')},       /* Cree */
   {"crh",      HB_TAG('C','R','T',' ')},       /* Crimean Tatar */
+  {"crj",      HB_TAG('E','C','R',' ')},       /* [Southern] East 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 */
@@ -226,10 +248,12 @@ static const LangTag ot_languages[] = {
   {"dar",      HB_TAG('D','A','R',' ')},       /* Dargwa */
   {"de",       HB_TAG('D','E','U',' ')},       /* German */
   {"din",      HB_TAG('D','N','K',' ')},       /* Dinka */
+  {"dje",      HB_TAG('D','J','R',' ')},       /* Djerma */
   {"dng",      HB_TAG('D','U','N',' ')},       /* Dungan */
   {"doi",      HB_TAG('D','G','R',' ')},       /* Dogri */
   {"dsb",      HB_TAG('L','S','B',' ')},       /* Lower Sorbian */
   {"dv",       HB_TAG('D','I','V',' ')},       /* Dhivehi */
+  {"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 */
@@ -257,20 +281,27 @@ static const LangTag ot_languages[] = {
   {"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 */
   {"gl",       HB_TAG('G','A','L',' ')},       /* Galician */
   {"gld",      HB_TAG('N','A','N',' ')},       /* Nanai */
   {"gn",       HB_TAG('G','U','A',' ')},       /* Guarani */
   {"gon",      HB_TAG('G','O','N',' ')},       /* Gondi */
   {"grt",      HB_TAG('G','R','O',' ')},       /* Garo */
+  {"gru",      HB_TAG('S','O','G',' ')},       /* Sodo Gurage */
   {"gu",       HB_TAG('G','U','J',' ')},       /* Gujarati */
   {"guk",      HB_TAG('G','M','Z',' ')},       /* Gumuz */
   {"gv",       HB_TAG('M','N','X',' ')},       /* Manx Gaelic */
   {"ha",       HB_TAG('H','A','U',' ')},       /* Hausa */
   {"har",      HB_TAG('H','R','I',' ')},       /* Harari */
+  {"haw",      HB_TAG('H','A','W',' ')},       /* Hawaiin */
   {"he",       HB_TAG('I','W','R',' ')},       /* Hebrew */
   {"hi",       HB_TAG('H','I','N',' ')},       /* Hindi */
   {"hil",      HB_TAG('H','I','L',' ')},       /* Hiligaynon */
+  {"hnd",      HB_TAG('H','N','D',' ')},       /* [Southern] Hindko */
+  {"hne",      HB_TAG('C','H','H',' ')},       /* Chattisgarhi */
+  {"hno",      HB_TAG('H','N','D',' ')},       /* [Northern] Hindko */
   {"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 */
@@ -279,6 +310,8 @@ static const LangTag ot_languages[] = {
   {"id",       HB_TAG('I','N','D',' ')},       /* Indonesian */
   {"ig",       HB_TAG('I','B','O',' ')},       /* Igbo */
   {"igb",      HB_TAG('E','B','I',' ')},       /* Ebira */
+  {"ijo",      HB_TAG('I','J','O',' ')},       /* Ijo [family] */
+  {"ilo",      HB_TAG('I','L','O',' ')},       /* Ilokano */
   {"inh",      HB_TAG('I','N','G',' ')},       /* Ingush */
   {"is",       HB_TAG('I','S','L',' ')},       /* Icelandic */
   {"it",       HB_TAG('I','T','A',' ')},       /* Italian */
@@ -286,19 +319,25 @@ static const LangTag ot_languages[] = {
   {"ja",       HB_TAG('J','A','N',' ')},       /* Japanese */
   {"jv",       HB_TAG('J','A','V',' ')},       /* Javanese */
   {"ka",       HB_TAG('K','A','T',' ')},       /* Georgian */
+  {"kaa",      HB_TAG('K','R','K',' ')},       /* Karakalpak */
   {"kam",      HB_TAG('K','M','B',' ')},       /* Kamba (Kenya) */
+  {"kar",      HB_TAG('K','R','N',' ')},       /* Karen [family] */
   {"kbd",      HB_TAG('K','A','B',' ')},       /* Kabardian */
   {"kdr",      HB_TAG('K','R','M',' ')},       /* Karaim */
   {"kdt",      HB_TAG('K','U','Y',' ')},       /* Kuy */
+  {"kex",      HB_TAG('K','K','N',' ')},       /* Kokni */
   {"kfr",      HB_TAG('K','A','C',' ')},       /* Kachchi */
   {"kfy",      HB_TAG('K','M','N',' ')},       /* Kumaoni */
   {"kha",      HB_TAG('K','S','I',' ')},       /* Khasi */
+  {"khb",      HB_TAG('X','B','D',' ')},       /* Tai Lue */
   {"khw",      HB_TAG('K','H','W',' ')},       /* Khowar */
   {"ki",       HB_TAG('K','I','K',' ')},       /* Kikuyu */
+  {"kjh",      HB_TAG('K','H','A',' ')},       /* Khakass */
   {"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',' ')},       /* [North] Mbundu */
   {"kmw",      HB_TAG('K','M','O',' ')},       /* Komo (Democratic Republic of 
Congo) */
   {"kn",       HB_TAG('K','A','N',' ')},       /* Kannada */
   {"ko",       HB_TAG('K','O','R',' ')},       /* Korean */
@@ -316,6 +355,7 @@ static const LangTag ot_languages[] = {
   {"ku",       HB_TAG('K','U','R',' ')},       /* Kurdish */
   {"kum",      HB_TAG('K','U','M',' ')},       /* Kumyk */
   {"kvd",      HB_TAG('K','U','I',' ')},       /* Kui (Indonesia) */
+  {"kxc",      HB_TAG('K','M','S',' ')},       /* Komso */
   {"kxu",      HB_TAG('K','U','I',' ')},       /* Kui (India) */
   {"ky",       HB_TAG('K','I','R',' ')},       /* Kirghiz */
   {"la",       HB_TAG('L','A','T',' ')},       /* Latin */
@@ -323,13 +363,19 @@ static const LangTag ot_languages[] = {
   {"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',' ')},       /* Luganda */
   {"lif",      HB_TAG('L','M','B',' ')},       /* Limbu */
   {"lld",      HB_TAG('L','A','D',' ')},       /* Ladin */
+  {"lmn",      HB_TAG('L','A','M',' ')},       /* Lambani */
   {"ln",       HB_TAG('L','I','N',' ')},       /* Lingala */
   {"lo",       HB_TAG('L','A','O',' ')},       /* Lao */
   {"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) */
-  {"luw",      HB_TAG('L','U','O',' ')},       /* Luo (Cameroon) */
+  {"lus",      HB_TAG('M','I','Z',' ')},       /* Mizo */
+  {"luy",      HB_TAG('L','U','H',' ')},       /* Luhya [macrolanguage] */
   {"lv",       HB_TAG('L','V','I',' ')},       /* Latvian */
   {"lzz",      HB_TAG('L','A','Z',' ')},       /* Laz */
   {"mai",      HB_TAG('M','T','H',' ')},       /* Maithili */
@@ -338,6 +384,7 @@ static const LangTag ot_languages[] = {
   {"mdy",      HB_TAG('M','L','E',' ')},       /* Male (Ethiopia) */
   {"men",      HB_TAG('M','D','E',' ')},       /* Mende (Sierra Leone) */
   {"mg",       HB_TAG('M','L','G',' ')},       /* Malagasy */
+  {"mhr",      HB_TAG('L','M','A',' ')},       /* Low Mari */
   {"mi",       HB_TAG('M','R','I',' ')},       /* Maori */
   {"mk",       HB_TAG('M','K','D',' ')},       /* Macedonian */
   {"ml",       HB_TAG('M','L','R',' ')},       /* Malayalam */
@@ -351,14 +398,17 @@ static const LangTag ot_languages[] = {
   {"moh",      HB_TAG('M','O','H',' ')},       /* Mohawk */
   {"mpe",      HB_TAG('M','A','J',' ')},       /* Majang */
   {"mr",       HB_TAG('M','A','R',' ')},       /* Marathi */
+  {"mrj",      HB_TAG('H','M','A',' ')},       /* High Mari */
   {"ms",       HB_TAG('M','L','Y',' ')},       /* Malay */
   {"mt",       HB_TAG('M','T','S',' ')},       /* Maltese */
   {"mwr",      HB_TAG('M','A','W',' ')},       /* Marwari */
   {"my",       HB_TAG('B','R','M',' ')},       /* Burmese */
   {"mym",      HB_TAG('M','E','N',' ')},       /* Me'en */
   {"myv",      HB_TAG('E','R','Z',' ')},       /* Erzya */
+  {"nag",      HB_TAG('N','A','G',' ')},       /* Naga-Assamese */
   {"nb",       HB_TAG('N','O','R',' ')},       /* Norwegian Bokmål */
   {"nco",      HB_TAG('S','I','B',' ')},       /* Sibe */
+  {"nd",       HB_TAG('N','D','B',' ')},       /* [North] Ndebele */
   {"ne",       HB_TAG('N','E','P',' ')},       /* Nepali */
   {"new",      HB_TAG('N','E','W',' ')},       /* Newari */
   {"ng",       HB_TAG('N','D','G',' ')},       /* Ndonga */
@@ -368,33 +418,45 @@ static const LangTag ot_languages[] = {
   {"nl",       HB_TAG('N','L','D',' ')},       /* Dutch */
   {"nn",       HB_TAG('N','Y','N',' ')},       /* Norwegian Nynorsk */
   {"no",       HB_TAG('N','O','R',' ')},       /* Norwegian (deprecated) */
+  {"nod",      HB_TAG('N','T','A',' ')},       /* Northern Tai */
   {"nog",      HB_TAG('N','O','G',' ')},       /* Nogai */
   {"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 */
   {"ny",       HB_TAG('C','H','I',' ')},       /* Nyanja */
+  {"nyn",      HB_TAG('N','K','L',' ')},       /* Nkole */
   {"oc",       HB_TAG('O','C','I',' ')},       /* Occitan (post 1500) */
   {"oj",       HB_TAG('O','J','B',' ')},       /* Ojibwa */
+  {"ojs",      HB_TAG('O','C','R',' ')},       /* Oji-Cree */
   {"om",       HB_TAG('O','R','O',' ')},       /* Oromo */
   {"or",       HB_TAG('O','R','I',' ')},       /* Oriya */
   {"os",       HB_TAG('O','S','S',' ')},       /* Ossetian */
   {"pa",       HB_TAG('P','A','N',' ')},       /* Panjabi */
+  {"pce",      HB_TAG('P','L','G',' ')},       /* [Ruching] Palaung */
   {"pi",       HB_TAG('P','A','L',' ')},       /* Pali */
   {"pl",       HB_TAG('P','L','K',' ')},       /* Polish */
+  {"pll",      HB_TAG('P','L','G',' ')},       /* [Shwe] Palaung */
   {"plp",      HB_TAG('P','A','P',' ')},       /* Palpa */
   {"prs",      HB_TAG('D','R','I',' ')},       /* Dari */
   {"ps",       HB_TAG('P','A','S',' ')},       /* Pushto */
   {"pt",       HB_TAG('P','T','G',' ')},       /* Portuguese */
   {"raj",      HB_TAG('R','A','J',' ')},       /* Rajasthani */
+  {"rbb",      HB_TAG('P','L','G',' ')},       /* [Rumai] Palaung */
   {"ria",      HB_TAG('R','I','A',' ')},       /* Riang (India) */
   {"ril",      HB_TAG('R','I','A',' ')},       /* Riang (Myanmar) */
+  {"rki",      HB_TAG('A','R','K',' ')},       /* Arakanese */
+  {"rm",       HB_TAG('R','M','S',' ')},       /* Rhaeto-Romanic */
   {"ro",       HB_TAG('R','O','M',' ')},       /* Romanian */
   {"rom",      HB_TAG('R','O','Y',' ')},       /* Romany */
   {"ru",       HB_TAG('R','U','S',' ')},       /* Russian */
   {"rue",      HB_TAG('R','S','Y',' ')},       /* Rusyn */
+  {"rw",       HB_TAG('R','U','A',' ')},       /* Ruanda */
   {"sa",       HB_TAG('S','A','N',' ')},       /* Sanskrit */
   {"sah",      HB_TAG('Y','A','K',' ')},       /* Yakut */
   {"sat",      HB_TAG('S','A','T',' ')},       /* Santali */
   {"sck",      HB_TAG('S','A','D',' ')},       /* Sadri */
+  {"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 */
@@ -417,6 +479,8 @@ static const LangTag ot_languages[] = {
   {"sq",       HB_TAG('S','Q','I',' ')},       /* Albanian */
   {"sr",       HB_TAG('S','R','B',' ')},       /* Serbian */
   {"srr",      HB_TAG('S','R','R',' ')},       /* Serer */
+  {"ss",       HB_TAG('S','W','Z',' ')},       /* Swazi */
+  {"st",       HB_TAG('S','O','T',' ')},       /* [Southern] Sotho */
   {"suq",      HB_TAG('S','U','R',' ')},       /* Suri */
   {"sv",       HB_TAG('S','V','E',' ')},       /* Swedish */
   {"sva",      HB_TAG('S','V','A',' ')},       /* Svan */
@@ -424,31 +488,34 @@ static const LangTag ot_languages[] = {
   {"swb",      HB_TAG('C','M','R',' ')},       /* Comorian */
   {"syr",      HB_TAG('S','Y','R',' ')},       /* Syriac */
   {"ta",       HB_TAG('T','A','M',' ')},       /* Tamil */
+  {"tab",      HB_TAG('T','A','B',' ')},       /* Tabasaran */
   {"tcy",      HB_TAG('T','U','L',' ')},       /* Tulu */
   {"te",       HB_TAG('T','E','L',' ')},       /* Telugu */
+  {"tem",      HB_TAG('T','M','N',' ')},       /* Temne */
   {"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 */
   {"tk",       HB_TAG('T','K','M',' ')},       /* Turkmen */
   {"tn",       HB_TAG('T','N','A',' ')},       /* Tswana */
-  {"tnz",      HB_TAG('T','N','G',' ')},       /* Tonga (Thailand) */
-  {"to",       HB_TAG('T','N','G',' ')},       /* Tonga (Tonga Islands) */
-  {"tog",      HB_TAG('T','N','G',' ')},       /* Tonga (Nyasa) */
-  {"toi",      HB_TAG('T','N','G',' ')},       /* Tonga (Zambia) */
+  {"to",       HB_TAG('T','G','N',' ')},       /* Tonga (Tonga Islands) */
   {"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 */
   {"tw",       HB_TAG('T','W','I',' ')},       /* Twi */
   {"ty",       HB_TAG('T','H','T',' ')},       /* Tahitian */
+  {"tyv",      HB_TAG('T','U','V',' ')},       /* Tuvin */
   {"udm",      HB_TAG('U','D','M',' ')},       /* Udmurt */
   {"ug",       HB_TAG('U','Y','G',' ')},       /* Uighur */
   {"uk",       HB_TAG('U','K','R',' ')},       /* Ukrainian */
+  {"umb",      HB_TAG('M','B','N',' ')},       /* [South] Mbundu */
   {"unr",      HB_TAG('M','U','N',' ')},       /* Mundari */
   {"ur",       HB_TAG('U','R','D',' ')},       /* Urdu */
   {"uz",       HB_TAG('U','Z','B',' ')},       /* Uzbek */
   {"ve",       HB_TAG('V','E','N',' ')},       /* Venda */
   {"vi",       HB_TAG('V','I','T',' ')},       /* Vietnamese */
+  {"vmw",      HB_TAG('M','A','K',' ')},       /* Makua */
   {"wbm",      HB_TAG('W','A',' ',' ')},       /* Wa */
   {"wbr",      HB_TAG('W','A','G',' ')},       /* Wagdi */
   {"wo",       HB_TAG('W','L','F',' ')},       /* Wolof */
@@ -462,115 +529,56 @@ static const LangTag ot_languages[] = {
   {"zne",      HB_TAG('Z','N','D',' ')},       /* Zande */
   {"zu",       HB_TAG('Z','U','L',' ')}        /* Zulu */
 
-  /* I couldn't find the language id for these */
-
-/*{"??",       HB_TAG('A','G','W',' ')},*/     /* Agaw */
-/*{"??",       HB_TAG('A','L','S',' ')},*/     /* Alsatian */
-/*{"??",       HB_TAG('A','L','T',' ')},*/     /* Altai */
-/*{"??",       HB_TAG('A','R','K',' ')},*/     /* Arakanese */
-/*{"??",       HB_TAG('A','T','H',' ')},*/     /* Athapaskan */
-/*{"??",       HB_TAG('B','A','G',' ')},*/     /* Baghelkhandi */
-/*{"??",       HB_TAG('B','A','L',' ')},*/     /* Balkar */
-/*{"??",       HB_TAG('B','A','U',' ')},*/     /* Baule */
-/*{"??",       HB_TAG('B','B','R',' ')},*/     /* Berber */
+  /* The corresponding languages IDs for the following IDs are unclear,
+   * overlap, or are architecturally weird. Needs more research. */
+
+/*{"ahg/awn/xan?",     HB_TAG('A','G','W',' ')},*/     /* Agaw */
+/*{"gsw?/gsw-FR?",     HB_TAG('A','L','S',' ')},*/     /* Alsatian */
+/*{"krc",      HB_TAG('B','A','L',' ')},*/     /* Balkar */
 /*{"??",       HB_TAG('B','C','R',' ')},*/     /* Bible Cree */
-/*{"??",       HB_TAG('B','E','L',' ')},*/     /* Belarussian */
-/*{"??",       HB_TAG('B','I','L',' ')},*/     /* Bilen */
-/*{"??",       HB_TAG('B','K','F',' ')},*/     /* Blackfoot */
-/*{"??",       HB_TAG('B','L','N',' ')},*/     /* Balante */
-/*{"??",       HB_TAG('B','M','L',' ')},*/     /* Bamileke */
-/*{"??",       HB_TAG('B','R','I',' ')},*/     /* Braj Bhasha */
-/*{"??",       HB_TAG('C','H','G',' ')},*/     /* Chaha Gurage */
-/*{"??",       HB_TAG('C','H','H',' ')},*/     /* Chattisgarhi */
-/*{"??",       HB_TAG('C','H','K',' ')},*/     /* Chukchi */
-/*{"??",       HB_TAG('D','J','R',' ')},*/     /* Djerma */
-/*{"??",       HB_TAG('D','N','G',' ')},*/     /* Dangme */
-/*{"??",       HB_TAG('E','C','R',' ')},*/     /* Eastern Cree */
-/*{"??",       HB_TAG('F','A','N',' ')},*/     /* French Antillean */
-/*{"??",       HB_TAG('F','L','E',' ')},*/     /* Flemish */
-/*{"??",       HB_TAG('F','N','E',' ')},*/     /* Forest Nenets */
-/*{"??",       HB_TAG('F','T','A',' ')},*/     /* Futa */
-/*{"??",       HB_TAG('G','A','R',' ')},*/     /* Garshuni */
-/*{"??",       HB_TAG('G','E','Z',' ')},*/     /* Ge'ez */
-/*{"??",       HB_TAG('H','A','L',' ')},*/     /* Halam */
-/*{"??",       HB_TAG('H','A','R',' ')},*/     /* Harauti */
-/*{"??",       HB_TAG('H','A','W',' ')},*/     /* Hawaiin */
-/*{"??",       HB_TAG('H','B','N',' ')},*/     /* Hammer-Banna */
-/*{"??",       HB_TAG('H','M','A',' ')},*/     /* High Mari */
-/*{"??",       HB_TAG('H','N','D',' ')},*/     /* Hindko */
-/*{"??",       HB_TAG('I','J','O',' ')},*/     /* Ijo */
-/*{"??",       HB_TAG('I','L','O',' ')},*/     /* Ilokano */
-/*{"??",       HB_TAG('I','R','T',' ')},*/     /* Irish Traditional */
-/*{"??",       HB_TAG('J','U','L',' ')},*/     /* Jula */
-/*{"??",       HB_TAG('K','A','R',' ')},*/     /* Karachay */
-/*{"??",       HB_TAG('K','E','B',' ')},*/     /* Kebena */
-/*{"??",       HB_TAG('K','G','E',' ')},*/     /* Khutsuri Georgian */
-/*{"??",       HB_TAG('K','H','A',' ')},*/     /* Khakass */
-/*{"??",       HB_TAG('K','H','K',' ')},*/     /* Khanty-Kazim */
-/*{"??",       HB_TAG('K','H','S',' ')},*/     /* Khanty-Shurishkar */
-/*{"??",       HB_TAG('K','H','V',' ')},*/     /* Khanty-Vakhi */
-/*{"??",       HB_TAG('K','I','S',' ')},*/     /* Kisii */
-/*{"??",       HB_TAG('K','K','N',' ')},*/     /* Kokni */
-/*{"??",       HB_TAG('K','M','S',' ')},*/     /* Komso */
-/*{"??",       HB_TAG('K','O','D',' ')},*/     /* Kodagu */
-/*{"??",       HB_TAG('K','O','H',' ')},*/     /* Korean Old Hangul */
-/*{"??",       HB_TAG('K','O','N',' ')},*/     /* Kikongo */
-/*{"??",       HB_TAG('K','R','K',' ')},*/     /* Karakalpak */
-/*{"??",       HB_TAG('K','R','N',' ')},*/     /* Karen */
-/*{"??",       HB_TAG('K','U','L',' ')},*/     /* Kulvi */
+/*{"sgw?",     HB_TAG('C','H','G',' ')},*/     /* Chaha Gurage */
+/*{"acf/gcf?", HB_TAG('F','A','N',' ')},*/     /* French Antillean */
+/*{"vls/nl-be",        HB_TAG('F','L','E',' ')},*/     /* Flemish */
+/*{"enf?/yrk?",        HB_TAG('F','N','E',' ')},*/     /* Forest Nenets */
+/*{"fuf?",     HB_TAG('F','T','A',' ')},*/     /* Futa */
+/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/     /* Garshuni */
+/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/     /* Halam */
+/*{"ga-Latg?/Latg?",   HB_TAG('I','R','T',' ')},*/     /* Irish Traditional */
+/*{"krc",      HB_TAG('K','A','R',' ')},*/     /* Karachay */
+/*{"alw?/ktb?",        HB_TAG('K','E','B',' ')},*/     /* Kebena */
+/*{"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 */
+/*{"guz?/kqs?/kss?",   HB_TAG('K','I','S',' ')},*/     /* Kisii */
+/*{"kfa/kfi?/kpb?/xua?/xuj?",  HB_TAG('K','O','D',' ')},*/     /* Kodagu */
+/*{"okm?/oko?",        HB_TAG('K','O','H',' ')},*/     /* Korean Old Hangul */
+/*{"kon?/ktu?/...",    HB_TAG('K','O','N',' ')},*/     /* Kikongo */
+/*{"kfx?",     HB_TAG('K','U','L',' ')},*/     /* Kulvi */
 /*{"??",       HB_TAG('L','A','H',' ')},*/     /* Lahuli */
-/*{"??",       HB_TAG('L','A','M',' ')},*/     /* Lambani */
 /*{"??",       HB_TAG('L','C','R',' ')},*/     /* L-Cree */
-/*{"??",       HB_TAG('L','E','Z',' ')},*/     /* Lezgi */
-/*{"??",       HB_TAG('L','M','A',' ')},*/     /* Low Mari */
-/*{"??",       HB_TAG('L','U','B',' ')},*/     /* Luba */
-/*{"??",       HB_TAG('L','U','G',' ')},*/     /* Luganda */
-/*{"??",       HB_TAG('L','U','H',' ')},*/     /* Luhya */
-/*{"??",       HB_TAG('M','A','K',' ')},*/     /* Makua */
 /*{"??",       HB_TAG('M','A','L',' ')},*/     /* Malayalam Traditional */
-/*{"??",       HB_TAG('M','B','N',' ')},*/     /* Mbundu */
-/*{"??",       HB_TAG('M','I','Z',' ')},*/     /* Mizo */
-/*{"??",       HB_TAG('M','L','N',' ')},*/     /* Malinke */
-/*{"??",       HB_TAG('M','N','K',' ')},*/     /* Maninka */
+/*{"mnk?/mlq?/...",    HB_TAG('M','L','N',' ')},*/     /* Malinke */
+/*{"man?/myq?/mku?/msc?/...",  HB_TAG('M','N','K',' ')},*/     /* Maninka */
 /*{"??",       HB_TAG('M','O','R',' ')},*/     /* Moroccan */
-/*{"??",       HB_TAG('N','A','G',' ')},*/     /* Naga-Assamese */
 /*{"??",       HB_TAG('N','C','R',' ')},*/     /* N-Cree */
-/*{"??",       HB_TAG('N','D','B',' ')},*/     /* Ndebele */
-/*{"??",       HB_TAG('N','G','R',' ')},*/     /* Nagari */
 /*{"??",       HB_TAG('N','H','C',' ')},*/     /* Norway House Cree */
-/*{"??",       HB_TAG('N','K','L',' ')},*/     /* Nkole */
-/*{"??",       HB_TAG('N','T','A',' ')},*/     /* Northern Tai */
-/*{"??",       HB_TAG('O','C','R',' ')},*/     /* Oji-Cree */
-/*{"??",       HB_TAG('P','A','A',' ')},*/     /* Palestinian Aramaic */
-/*{"??",       HB_TAG('P','G','R',' ')},*/     /* Polytonic Greek */
-/*{"??",       HB_TAG('P','L','G',' ')},*/     /* Palaung */
+/*{"jpa?/sam?",        HB_TAG('P','A','A',' ')},*/     /* Palestinian Aramaic 
*/
+/*{"polyton",  HB_TAG('P','G','R',' ')},*/     /* Polytonic Greek */
 /*{"??",       HB_TAG('Q','I','N',' ')},*/     /* Asho Chin */
-/*{"??",       HB_TAG('R','B','U',' ')},*/     /* Russian Buriat */
 /*{"??",       HB_TAG('R','C','R',' ')},*/     /* R-Cree */
-/*{"??",       HB_TAG('R','M','S',' ')},*/     /* Rhaeto-Romanic */
-/*{"??",       HB_TAG('R','U','A',' ')},*/     /* Ruanda */
-/*{"??",       HB_TAG('S','A','Y',' ')},*/     /* Sayisi */
-/*{"??",       HB_TAG('S','E','K',' ')},*/     /* Sekota */
-/*{"??",       HB_TAG('S','I','G',' ')},*/     /* Silte Gurage */
-/*{"??",       HB_TAG('S','L','A',' ')},*/     /* Slavey */
-/*{"??",       HB_TAG('S','O','G',' ')},*/     /* Sodo Gurage */
-/*{"??",       HB_TAG('S','O','T',' ')},*/     /* Sotho */
-/*{"??",       HB_TAG('S','W','A',' ')},*/     /* Swadaya Aramaic */
-/*{"??",       HB_TAG('S','W','Z',' ')},*/     /* Swazi */
-/*{"??",       HB_TAG('S','X','T',' ')},*/     /* Sutu */
-/*{"??",       HB_TAG('T','A','B',' ')},*/     /* Tabasaran */
+/*{"chp?",     HB_TAG('S','A','Y',' ')},*/     /* Sayisi */
+/*{"xan?",     HB_TAG('S','E','K',' ')},*/     /* Sekota */
+/*{"stv/wle?/xst?",    HB_TAG('S','I','G',' ')},*/     /* Silte Gurage */
+/*{"ngo?",     HB_TAG('S','X','T',' ')},*/     /* Sutu */
 /*{"??",       HB_TAG('T','C','R',' ')},*/     /* TH-Cree */
-/*{"??",       HB_TAG('T','G','N',' ')},*/     /* Tongan */
-/*{"??",       HB_TAG('T','M','N',' ')},*/     /* Temne */
-/*{"??",       HB_TAG('T','N','E',' ')},*/     /* Tundra Nenets */
+/*{"tnz?/tog?/toi?",   HB_TAG('T','N','G',' ')},*/     /* Tonga */
+/*{"enh?/yrk?",        HB_TAG('T','N','E',' ')},*/     /* Tundra Nenets */
 /*{"??",       HB_TAG('T','O','D',' ')},*/     /* Todo */
-/*{"??",       HB_TAG('T','U','A',' ')},*/     /* Turoyo Aramaic */
-/*{"??",       HB_TAG('T','U','V',' ')},*/     /* Tuvin */
 /*{"??",       HB_TAG('W','C','R',' ')},*/     /* West-Cree */
-/*{"??",       HB_TAG('X','B','D',' ')},*/     /* Tai Lue */
 /*{"??",       HB_TAG('Y','C','R',' ')},*/     /* Y-Cree */
 /*{"??",       HB_TAG('Y','I','C',' ')},*/     /* Yi Classic */
-/*{"??",       HB_TAG('Y','I','M',' ')},*/     /* Yi Modern */
+/*{"ii?/Yiii?",        HB_TAG('Y','I','M',' ')},*/     /* Yi Modern */
 /*{"??",       HB_TAG('Z','H','P',' ')},*/     /* Chinese Phonetic */
 };
 
_______________________________________________
HarfBuzz mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/harfbuzz

Reply via email to