Map Quechua languages to closest ones with tags
authorDavid Corbett <corbett.dav@husky.neu.edu>
Tue, 17 Jul 2018 01:14:48 +0000 (21:14 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 11 Oct 2018 17:54:28 +0000 (13:54 -0400)
OpenType only officially maps four ISO 639 codes to Quechua languages,
but prior versions of HarfBuzz also mapped qu to 'QUZ '. Because qu is a
macrolanguage, the mapping now applies to all individual Quechua
languages. OpenType calls 'QUZ ' "Quechua", but it really corresponds to
Cusco Quechua, so the individual Quechua languages should not all
necessarily be mapped to it.

src/gen-tag-table.py
src/hb-ot-tag-table.hh

index 7cbf3a7..dc3511c 100755 (executable)
@@ -676,6 +676,35 @@ bcp_47.scopes['mhv'] = ' (retired code)'
 ot.add_language ('no', 'NOR')
 
 ot.add_language ('qu', 'QUZ')
+ot.add_language ('qub', 'QWH')
+ot.add_language ('qud', 'QVI')
+ot.add_language ('qug', 'QVI')
+ot.add_language ('qup', 'QVI')
+ot.add_language ('qur', 'QWH')
+ot.add_language ('qus', 'QUH')
+ot.add_language ('quw', 'QVI')
+ot.add_language ('qux', 'QWH')
+ot.add_language ('qva', 'QWH')
+ot.add_language ('qvh', 'QWH')
+ot.add_language ('qvj', 'QVI')
+ot.add_language ('qvl', 'QWH')
+ot.add_language ('qvm', 'QWH')
+ot.add_language ('qvn', 'QWH')
+ot.add_language ('qvo', 'QVI')
+ot.add_language ('qvp', 'QWH')
+ot.add_language ('qvw', 'QWH')
+ot.add_language ('qvz', 'QVI')
+ot.add_language ('qwa', 'QWH')
+ot.add_language ('qws', 'QWH')
+ot.add_language ('qxa', 'QWH')
+ot.add_language ('qxc', 'QWH')
+ot.add_language ('qxh', 'QWH')
+ot.add_language ('qxl', 'QVI')
+ot.add_language ('qxn', 'QWH')
+ot.add_language ('qxo', 'QWH')
+ot.add_language ('qxr', 'QVI')
+ot.add_language ('qxt', 'QWH')
+ot.add_language ('qxw', 'QWH')
 
 bcp_47.macrolanguages['ro'].remove ('mo')
 bcp_47.macrolanguages['ro-MD'].add ('mo')
@@ -754,6 +783,9 @@ disambiguation = {
        'NIS': 'njz',
        'PLG': 'pce',
        'QIN': 'bgr',
+       'QUH': 'quh',
+       'QVI': 'qvi',
+       'QWH': 'qwh',
        'SIG': 'stv',
        'ZHH': 'zh-HK',
        'ZHS': 'zh-Hans',
index 7211368..6cc9e06 100644 (file)
@@ -747,50 +747,50 @@ static const LangTag ot_languages[] = {
   {"pt",       {HB_TAG('P','T','G',' ')}},     /* Portuguese */
   {"pwo",      {HB_TAG('P','W','O',' ')}},     /* Pwo Western Karen -> Western Pwo Karen */
   {"qu",       {HB_TAG('Q','U','Z',' ')}},     /* Quechua [macrolanguage] */
-  {"qub",      {HB_TAG('Q','U','Z',' ')}},     /* Huallaga Huánuco Quechua -> Quechua */
+  {"qub",      {HB_TAG('Q','W','H',' ')}},     /* Huallaga Huánuco Quechua -> Quechua (Peru) */
   {"quc",      {HB_TAG('Q','U','C',' ')}},     /* K’iche’ */
-  {"qud",      {HB_TAG('Q','U','Z',' ')}},     /* Calderón Highland Quichua -> Quechua */
+  {"qud",      {HB_TAG('Q','V','I',' ')}},     /* Calderón Highland Quichua -> Quechua (Ecuador) */
   {"quf",      {HB_TAG('Q','U','Z',' ')}},     /* Lambayeque Quechua -> Quechua */
-  {"qug",      {HB_TAG('Q','U','Z',' ')}},     /* Chimborazo Highland Quichua -> Quechua */
+  {"qug",      {HB_TAG('Q','V','I',' ')}},     /* Chimborazo Highland Quichua -> Quechua (Ecuador) */
   {"quh",      {HB_TAG('Q','U','H',' ')}},     /* South Bolivian Quechua -> Quechua (Bolivia) */
   {"quk",      {HB_TAG('Q','U','Z',' ')}},     /* Chachapoyas Quechua -> Quechua */
   {"qul",      {HB_TAG('Q','U','Z',' ')}},     /* North Bolivian Quechua -> Quechua */
-  {"qup",      {HB_TAG('Q','U','Z',' ')}},     /* Southern Pastaza Quechua -> Quechua */
-  {"qur",      {HB_TAG('Q','U','Z',' ')}},     /* Yanahuanca Pasco Quechua -> Quechua */
-  {"qus",      {HB_TAG('Q','U','Z',' ')}},     /* Santiago del Estero Quichua -> Quechua */
-  {"quw",      {HB_TAG('Q','U','Z',' ')}},     /* Tena Lowland Quichua -> Quechua */
-  {"qux",      {HB_TAG('Q','U','Z',' ')}},     /* Yauyos Quechua -> Quechua */
+  {"qup",      {HB_TAG('Q','V','I',' ')}},     /* Southern Pastaza Quechua -> Quechua (Ecuador) */
+  {"qur",      {HB_TAG('Q','W','H',' ')}},     /* Yanahuanca Pasco Quechua -> Quechua (Peru) */
+  {"qus",      {HB_TAG('Q','U','H',' ')}},     /* Santiago del Estero Quichua -> Quechua (Bolivia) */
+  {"quw",      {HB_TAG('Q','V','I',' ')}},     /* Tena Lowland Quichua -> Quechua (Ecuador) */
+  {"qux",      {HB_TAG('Q','W','H',' ')}},     /* Yauyos Quechua -> Quechua (Peru) */
   {"quy",      {HB_TAG('Q','U','Z',' ')}},     /* Ayacucho Quechua -> Quechua */
   {"quz",      {HB_TAG('Q','U','Z',' ')}},     /* Cusco Quechua -> Quechua */
-  {"qva",      {HB_TAG('Q','U','Z',' ')}},     /* Ambo-Pasco Quechua -> Quechua */
+  {"qva",      {HB_TAG('Q','W','H',' ')}},     /* Ambo-Pasco Quechua -> Quechua (Peru) */
   {"qvc",      {HB_TAG('Q','U','Z',' ')}},     /* Cajamarca Quechua -> Quechua */
   {"qve",      {HB_TAG('Q','U','Z',' ')}},     /* Eastern Apurímac Quechua -> Quechua */
-  {"qvh",      {HB_TAG('Q','U','Z',' ')}},     /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua */
+  {"qvh",      {HB_TAG('Q','W','H',' ')}},     /* Huamalíes-Dos de Mayo Huánuco Quechua -> Quechua (Peru) */
   {"qvi",      {HB_TAG('Q','V','I',' ')}},     /* Imbabura Highland Quichua -> Quechua (Ecuador) */
-  {"qvj",      {HB_TAG('Q','U','Z',' ')}},     /* Loja Highland Quichua -> Quechua */
-  {"qvl",      {HB_TAG('Q','U','Z',' ')}},     /* Cajatambo North Lima Quechua -> Quechua */
-  {"qvm",      {HB_TAG('Q','U','Z',' ')}},     /* Margos-Yarowilca-Lauricocha Quechua -> Quechua */
-  {"qvn",      {HB_TAG('Q','U','Z',' ')}},     /* North Junín Quechua -> Quechua */
-  {"qvo",      {HB_TAG('Q','U','Z',' ')}},     /* Napo Lowland Quechua -> Quechua */
-  {"qvp",      {HB_TAG('Q','U','Z',' ')}},     /* Pacaraos Quechua -> Quechua */
+  {"qvj",      {HB_TAG('Q','V','I',' ')}},     /* Loja Highland Quichua -> Quechua (Ecuador) */
+  {"qvl",      {HB_TAG('Q','W','H',' ')}},     /* Cajatambo North Lima Quechua -> Quechua (Peru) */
+  {"qvm",      {HB_TAG('Q','W','H',' ')}},     /* Margos-Yarowilca-Lauricocha Quechua -> Quechua (Peru) */
+  {"qvn",      {HB_TAG('Q','W','H',' ')}},     /* North Junín Quechua -> Quechua (Peru) */
+  {"qvo",      {HB_TAG('Q','V','I',' ')}},     /* Napo Lowland Quechua -> Quechua (Ecuador) */
+  {"qvp",      {HB_TAG('Q','W','H',' ')}},     /* Pacaraos Quechua -> Quechua (Peru) */
   {"qvs",      {HB_TAG('Q','U','Z',' ')}},     /* San Martín Quechua -> Quechua */
-  {"qvw",      {HB_TAG('Q','U','Z',' ')}},     /* Huaylla Wanca Quechua -> Quechua */
-  {"qvz",      {HB_TAG('Q','U','Z',' ')}},     /* Northern Pastaza Quichua -> Quechua */
-  {"qwa",      {HB_TAG('Q','U','Z',' ')}},     /* Corongo Ancash Quechua -> Quechua */
+  {"qvw",      {HB_TAG('Q','W','H',' ')}},     /* Huaylla Wanca Quechua -> Quechua (Peru) */
+  {"qvz",      {HB_TAG('Q','V','I',' ')}},     /* Northern Pastaza Quichua -> Quechua (Ecuador) */
+  {"qwa",      {HB_TAG('Q','W','H',' ')}},     /* Corongo Ancash Quechua -> Quechua (Peru) */
   {"qwc",      {HB_TAG('Q','U','Z',' ')}},     /* Classical Quechua -> Quechua */
   {"qwh",      {HB_TAG('Q','W','H',' ')}},     /* Huaylas Ancash Quechua -> Quechua (Peru) */
-  {"qws",      {HB_TAG('Q','U','Z',' ')}},     /* Sihuas Ancash Quechua -> Quechua */
-  {"qxa",      {HB_TAG('Q','U','Z',' ')}},     /* Chiquián Ancash Quechua -> Quechua */
-  {"qxc",      {HB_TAG('Q','U','Z',' ')}},     /* Chincha Quechua -> Quechua */
-  {"qxh",      {HB_TAG('Q','U','Z',' ')}},     /* Panao Huánuco Quechua -> Quechua */
-  {"qxl",      {HB_TAG('Q','U','Z',' ')}},     /* Salasaca Highland Quichua -> Quechua */
-  {"qxn",      {HB_TAG('Q','U','Z',' ')}},     /* Northern Conchucos Ancash Quechua -> Quechua */
-  {"qxo",      {HB_TAG('Q','U','Z',' ')}},     /* Southern Conchucos Ancash Quechua -> Quechua */
+  {"qws",      {HB_TAG('Q','W','H',' ')}},     /* Sihuas Ancash Quechua -> Quechua (Peru) */
+  {"qxa",      {HB_TAG('Q','W','H',' ')}},     /* Chiquián Ancash Quechua -> Quechua (Peru) */
+  {"qxc",      {HB_TAG('Q','W','H',' ')}},     /* Chincha Quechua -> Quechua (Peru) */
+  {"qxh",      {HB_TAG('Q','W','H',' ')}},     /* Panao Huánuco Quechua -> Quechua (Peru) */
+  {"qxl",      {HB_TAG('Q','V','I',' ')}},     /* Salasaca Highland Quichua -> Quechua (Ecuador) */
+  {"qxn",      {HB_TAG('Q','W','H',' ')}},     /* Northern Conchucos Ancash Quechua -> Quechua (Peru) */
+  {"qxo",      {HB_TAG('Q','W','H',' ')}},     /* Southern Conchucos Ancash Quechua -> Quechua (Peru) */
   {"qxp",      {HB_TAG('Q','U','Z',' ')}},     /* Puno Quechua -> Quechua */
-  {"qxr",      {HB_TAG('Q','U','Z',' ')}},     /* Cañar Highland Quichua -> Quechua */
-  {"qxt",      {HB_TAG('Q','U','Z',' ')}},     /* Santa Ana de Tusi Pasco Quechua -> Quechua */
+  {"qxr",      {HB_TAG('Q','V','I',' ')}},     /* Cañar Highland Quichua -> Quechua (Ecuador) */
+  {"qxt",      {HB_TAG('Q','W','H',' ')}},     /* Santa Ana de Tusi Pasco Quechua -> Quechua (Peru) */
   {"qxu",      {HB_TAG('Q','U','Z',' ')}},     /* Arequipa-La Unión Quechua -> Quechua */
-  {"qxw",      {HB_TAG('Q','U','Z',' ')}},     /* Jauja Wanca Quechua -> Quechua */
+  {"qxw",      {HB_TAG('Q','W','H',' ')}},     /* Jauja Wanca Quechua -> Quechua (Peru) */
   {"rag",      {HB_TAG('L','U','H',' ')}},     /* Logooli -> Luyia */
   {"raj",      {HB_TAG('R','A','J',' ')}},     /* Rajasthani [macrolanguage] */
   {"rar",      {HB_TAG('R','A','R',' ')}},     /* Rarotongan */
@@ -1986,6 +1986,10 @@ hb_ot_ambiguous_tag_to_language (hb_tag_t tag)
     return hb_language_from_string ("el-polyton", -1);  /* Modern Greek (1453-); Polytonic Greek */
   case HB_TAG('Q','U','H',' '):  /* Quechua (Bolivia) */
     return hb_language_from_string ("quh", -1);  /* South Bolivian Quechua */
+  case HB_TAG('Q','V','I',' '):  /* Quechua (Ecuador) */
+    return hb_language_from_string ("qvi", -1);  /* Imbabura Highland Quichua */
+  case HB_TAG('Q','W','H',' '):  /* Quechua (Peru) */
+    return hb_language_from_string ("qwh", -1);  /* Huaylas Ancash Quechua */
   case HB_TAG('R','A','J',' '):  /* Rajasthani */
     return hb_language_from_string ("raj", -1);  /* Rajasthani */
   case HB_TAG('R','O','Y',' '):  /* Romany */