@ -167,9 +167,12 @@ typedef struct {
*
*
* Generated by intersecting the OpenType language tag list from
* Generated by intersecting the OpenType language tag list from
* Draft OpenType 1.5 spec , with with the ISO 639 - 3 codes from
* Draft OpenType 1.5 spec , with with the ISO 639 - 3 codes from
* 2008 / 08 / 04 , matching on name , and finally adjusted manually .
* 2008 - 08 - 04 , matching on name , and finally adjusted manually .
*
*
* Updated on 2012 / 12 / 07 with more research into remaining codes .
* 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 .
* Some items still missing . Those are commented out at the end .
* Keep sorted for bsearch .
* Keep sorted for bsearch .
@ -179,57 +182,90 @@ static const LangTag ot_languages[] = {
{ " aa " , HB_TAG ( ' A ' , ' F ' , ' R ' , ' ' ) } , /* Afar */
{ " aa " , HB_TAG ( ' A ' , ' F ' , ' R ' , ' ' ) } , /* Afar */
{ " ab " , HB_TAG ( ' A ' , ' B ' , ' K ' , ' ' ) } , /* Abkhazian */
{ " ab " , HB_TAG ( ' A ' , ' B ' , ' K ' , ' ' ) } , /* Abkhazian */
{ " abq " , HB_TAG ( ' A ' , ' B ' , ' A ' , ' ' ) } , /* Abaza */
{ " abq " , HB_TAG ( ' A ' , ' B ' , ' A ' , ' ' ) } , /* Abaza */
{ " ach " , HB_TAG ( ' A ' , ' C ' , ' H ' , ' ' ) } , /* Acoli */
{ " ada " , HB_TAG ( ' D ' , ' N ' , ' G ' , ' ' ) } , /* Dangme */
{ " ada " , HB_TAG ( ' D ' , ' N ' , ' G ' , ' ' ) } , /* Dangme */
{ " ady " , HB_TAG ( ' A ' , ' D ' , ' Y ' , ' ' ) } , /* Adyghe */
{ " ady " , HB_TAG ( ' A ' , ' D ' , ' Y ' , ' ' ) } , /* Adyghe */
{ " af " , HB_TAG ( ' A ' , ' F ' , ' K ' , ' ' ) } , /* Afrikaans */
{ " af " , HB_TAG ( ' A ' , ' F ' , ' K ' , ' ' ) } , /* Afrikaans */
{ " aii " , HB_TAG ( ' S ' , ' W ' , ' A ' , ' ' ) } , /* Swadaya Aramaic */
{ " aii " , HB_TAG ( ' S ' , ' W ' , ' A ' , ' ' ) } , /* Swadaya Aramaic */
{ " aio " , HB_TAG ( ' A ' , ' I ' , ' O ' , ' ' ) } , /* Aiton */
{ " aiw " , HB_TAG ( ' A ' , ' R ' , ' I ' , ' ' ) } , /* Aari */
{ " aiw " , HB_TAG ( ' A ' , ' R ' , ' I ' , ' ' ) } , /* Aari */
{ " ak " , HB_TAG ( ' T ' , ' W ' , ' I ' , ' ' ) } , /* Akan [macrolanguage] */
{ " alt " , HB_TAG ( ' A ' , ' L ' , ' T ' , ' ' ) } , /* [Southern] Altai */
{ " alt " , HB_TAG ( ' A ' , ' L ' , ' T ' , ' ' ) } , /* [Southern] Altai */
{ " am " , HB_TAG ( ' A ' , ' M ' , ' H ' , ' ' ) } , /* Amharic */
{ " am " , HB_TAG ( ' A ' , ' M ' , ' H ' , ' ' ) } , /* Amharic */
{ " amf " , HB_TAG ( ' H ' , ' B ' , ' N ' , ' ' ) } , /* Hammer-Banna */
{ " amf " , HB_TAG ( ' H ' , ' B ' , ' N ' , ' ' ) } , /* Hammer-Banna */
{ " ar " , HB_TAG ( ' A ' , ' R ' , ' A ' , ' ' ) } , /* Arabic */
{ " 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 */
{ " arn " , HB_TAG ( ' M ' , ' A ' , ' P ' , ' ' ) } , /* Mapudungun */
{ " ary " , HB_TAG ( ' M ' , ' O ' , ' R ' , ' ' ) } , /* Moroccan Arabic */
{ " as " , HB_TAG ( ' A ' , ' S ' , ' M ' , ' ' ) } , /* Assamese */
{ " 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] */
{ " ath " , HB_TAG ( ' A ' , ' T ' , ' H ' , ' ' ) } , /* Athapaskan [family] */
{ " atv " , HB_TAG ( ' A ' , ' L ' , ' T ' , ' ' ) } , /* [Northern] Altai */
{ " atv " , HB_TAG ( ' A ' , ' L ' , ' T ' , ' ' ) } , /* [Northern] Altai */
{ " av " , HB_TAG ( ' A ' , ' V ' , ' R ' , ' ' ) } , /* Avaric */
{ " av " , HB_TAG ( ' A ' , ' V ' , ' R ' , ' ' ) } , /* Avaric */
{ " awa " , HB_TAG ( ' A ' , ' W ' , ' A ' , ' ' ) } , /* Awadhi */
{ " awa " , HB_TAG ( ' A ' , ' W ' , ' A ' , ' ' ) } , /* Awadhi */
{ " ay " , HB_TAG ( ' A ' , ' Y ' , ' M ' , ' ' ) } , /* Aymara */
{ " ay " , HB_TAG ( ' A ' , ' Y ' , ' M ' , ' ' ) } , /* Aymara [macrolanguage] */
{ " az " , HB_TAG ( ' A ' , ' Z ' , ' E ' , ' ' ) } , /* Azerbaijani */
{ " 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 */
{ " ba " , HB_TAG ( ' B ' , ' S ' , ' H ' , ' ' ) } , /* Bashkir */
{ " bai " , HB_TAG ( ' B ' , ' M ' , ' L ' , ' ' ) } , /* Bamileke [family] */
{ " bai " , HB_TAG ( ' B ' , ' M ' , ' L ' , ' ' ) } , /* Bamileke [family] */
{ " bal " , HB_TAG ( ' B ' , ' L ' , ' I ' , ' ' ) } , /* Baluchi */
{ " bal " , HB_TAG ( ' B ' , ' L ' , ' I ' , ' ' ) } , /* Baluchi [macrolangauge] */
{ " bci " , HB_TAG ( ' B ' , ' A ' , ' U ' , ' ' ) } , /* Baule */
{ " 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 */
{ " bcq " , HB_TAG ( ' B ' , ' C ' , ' H ' , ' ' ) } , /* Bench */
{ " be " , HB_TAG ( ' B ' , ' E ' , ' L ' , ' ' ) } , /* Belarussian */
{ " be " , HB_TAG ( ' B ' , ' E ' , ' L ' , ' ' ) } , /* Belarusian */
{ " bem " , HB_TAG ( ' B ' , ' E ' , ' M ' , ' ' ) } , /* Bemba (Zambia) */
{ " bem " , HB_TAG ( ' B ' , ' E ' , ' M ' , ' ' ) } , /* Bemba (Zambia) */
{ " ber " , HB_TAG ( ' B ' , ' E ' , ' R ' , ' ' ) } , /* Berber [family] */
{ " ber " , HB_TAG ( ' B ' , ' E ' , ' R ' , ' ' ) } , /* Berber [family] */
{ " bfq " , HB_TAG ( ' B ' , ' A ' , ' D ' , ' ' ) } , /* Badaga */
{ " bfq " , HB_TAG ( ' B ' , ' A ' , ' D ' , ' ' ) } , /* Badaga */
{ " bft " , HB_TAG ( ' B ' , ' L ' , ' T ' , ' ' ) } , /* Balti */
{ " bft " , HB_TAG ( ' B ' , ' L ' , ' T ' , ' ' ) } , /* Balti */
{ " bfy " , HB_TAG ( ' B ' , ' A ' , ' G ' , ' ' ) } , /* Baghelkhandi */
{ " bfy " , HB_TAG ( ' B ' , ' A ' , ' G ' , ' ' ) } , /* Baghelkhandi */
{ " bg " , HB_TAG ( ' B ' , ' G ' , ' R ' , ' ' ) } , /* Bulgarian */
{ " bg " , HB_TAG ( ' B ' , ' G ' , ' R ' , ' ' ) } , /* Bulgarian */
{ " bgc " , HB_TAG ( ' B ' , ' G ' , ' C ' , ' ' ) } , /* Haryanvi */
{ " bgq " , HB_TAG ( ' B ' , ' G ' , ' Q ' , ' ' ) } , /* Bagri */
{ " bhb " , HB_TAG ( ' B ' , ' H ' , ' I ' , ' ' ) } , /* Bhili */
{ " bhb " , HB_TAG ( ' B ' , ' H ' , ' I ' , ' ' ) } , /* Bhili */
{ " bhk " , HB_TAG ( ' B ' , ' I ' , ' K ' , ' ' ) } , /* Albay Bicolano (retired code) */
{ " bho " , HB_TAG ( ' B ' , ' H ' , ' O ' , ' ' ) } , /* Bhojpuri */
{ " bho " , HB_TAG ( ' B ' , ' H ' , ' O ' , ' ' ) } , /* Bhojpuri */
{ " bik " , HB_TAG ( ' B ' , ' I ' , ' K ' , ' ' ) } , /* Bikol */
{ " bi " , HB_TAG ( ' B ' , ' I ' , ' S ' , ' ' ) } , /* Bislama */
{ " bik " , HB_TAG ( ' B ' , ' I ' , ' K ' , ' ' ) } , /* Bikol [macrolanguage] */
{ " bin " , HB_TAG ( ' E ' , ' D ' , ' O ' , ' ' ) } , /* Bini */
{ " bin " , HB_TAG ( ' E ' , ' D ' , ' O ' , ' ' ) } , /* Bini */
{ " bjj " , HB_TAG ( ' B ' , ' J ' , ' J ' , ' ' ) } , /* Kanauji */
{ " bjt " , HB_TAG ( ' B ' , ' L ' , ' N ' , ' ' ) } , /* Balanta-Ganja */
{ " bjt " , HB_TAG ( ' B ' , ' L ' , ' N ' , ' ' ) } , /* Balanta-Ganja */
{ " bla " , HB_TAG ( ' B ' , ' K ' , ' F ' , ' ' ) } , /* Blackfoot */
{ " bla " , HB_TAG ( ' B ' , ' K ' , ' F ' , ' ' ) } , /* Blackfoot */
{ " ble " , HB_TAG ( ' B ' , ' L ' , ' N ' , ' ' ) } , /* Balanta-Kentohe */
{ " 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 */
{ " bm " , HB_TAG ( ' B ' , ' M ' , ' B ' , ' ' ) } , /* Bambara */
{ " bn " , HB_TAG ( ' B ' , ' E ' , ' N ' , ' ' ) } , /* Bengali */
{ " bn " , HB_TAG ( ' B ' , ' E ' , ' N ' , ' ' ) } , /* Bengali */
{ " bo " , HB_TAG ( ' T ' , ' I ' , ' B ' , ' ' ) } , /* Tibetan */
{ " 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 */
{ " br " , HB_TAG ( ' B ' , ' R ' , ' E ' , ' ' ) } , /* Breton */
{ " bra " , HB_TAG ( ' B ' , ' R ' , ' I ' , ' ' ) } , /* Braj Bhasha */
{ " bra " , HB_TAG ( ' B ' , ' R ' , ' I ' , ' ' ) } , /* Braj Bhasha */
{ " brh " , HB_TAG ( ' B ' , ' R ' , ' H ' , ' ' ) } , /* Brahui */
{ " brh " , HB_TAG ( ' B ' , ' R ' , ' H ' , ' ' ) } , /* Brahui */
{ " brx " , HB_TAG ( ' B ' , ' R ' , ' X ' , ' ' ) } , /* Bodo (India) */
{ " bs " , HB_TAG ( ' B ' , ' O ' , ' S ' , ' ' ) } , /* Bosnian */
{ " bs " , HB_TAG ( ' B ' , ' O ' , ' S ' , ' ' ) } , /* Bosnian */
{ " btb " , HB_TAG ( ' B ' , ' T ' , ' I ' , ' ' ) } , /* Beti (Cameroon) */
{ " 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 */
{ " bxr " , HB_TAG ( ' R ' , ' B ' , ' U ' , ' ' ) } , /* Russian Buriat */
{ " byn " , HB_TAG ( ' B ' , ' I ' , ' L ' , ' ' ) } , /* Bilen */
{ " byn " , HB_TAG ( ' B ' , ' I ' , ' L ' , ' ' ) } , /* Bilen */
{ " ca " , HB_TAG ( ' C ' , ' A ' , ' T ' , ' ' ) } , /* Catalan */
{ " ca " , HB_TAG ( ' C ' , ' A ' , ' T ' , ' ' ) } , /* Catalan */
{ " cbk " , HB_TAG ( ' C ' , ' B ' , ' K ' , ' ' ) } , /* Chavacano */
{ " ce " , HB_TAG ( ' C ' , ' H ' , ' E ' , ' ' ) } , /* Chechen */
{ " ce " , HB_TAG ( ' C ' , ' H ' , ' E ' , ' ' ) } , /* Chechen */
{ " ceb " , HB_TAG ( ' C ' , ' E ' , ' B ' , ' ' ) } , /* Cebuano */
{ " ceb " , HB_TAG ( ' C ' , ' E ' , ' B ' , ' ' ) } , /* Cebuano */
{ " cgg " , HB_TAG ( ' C ' , ' G ' , ' G ' , ' ' ) } , /* Chiga */
{ " ch " , HB_TAG ( ' C ' , ' H ' , ' A ' , ' ' ) } , /* Chamorro */
{ " cho " , HB_TAG ( ' C ' , ' H ' , ' O ' , ' ' ) } , /* Choctaw */
{ " chp " , HB_TAG ( ' C ' , ' H ' , ' P ' , ' ' ) } , /* Chipewyan */
{ " chp " , HB_TAG ( ' C ' , ' H ' , ' P ' , ' ' ) } , /* Chipewyan */
{ " chr " , HB_TAG ( ' C ' , ' H ' , ' R ' , ' ' ) } , /* Cherokee */
{ " chr " , HB_TAG ( ' C ' , ' H ' , ' R ' , ' ' ) } , /* Cherokee */
{ " chy " , HB_TAG ( ' C ' , ' H ' , ' Y ' , ' ' ) } , /* Cheyenne */
{ " ckb " , HB_TAG ( ' K ' , ' U ' , ' R ' , ' ' ) } , /* Central Kurdish (Sorani) */
{ " ckt " , HB_TAG ( ' C ' , ' H ' , ' K ' , ' ' ) } , /* Chukchi */
{ " ckt " , HB_TAG ( ' C ' , ' H ' , ' K ' , ' ' ) } , /* Chukchi */
{ " cop " , HB_TAG ( ' C ' , ' O ' , ' P ' , ' ' ) } , /* Coptic */
{ " cop " , HB_TAG ( ' C ' , ' O ' , ' P ' , ' ' ) } , /* Coptic */
{ " cr " , HB_TAG ( ' C ' , ' R ' , ' E ' , ' ' ) } , /* Cree */
{ " cr " , HB_TAG ( ' C ' , ' R ' , ' E ' , ' ' ) } , /* Cree */
@ -239,6 +275,9 @@ static const LangTag ot_languages[] = {
{ " crm " , HB_TAG ( ' M ' , ' C ' , ' R ' , ' ' ) } , /* Moose Cree */
{ " crm " , HB_TAG ( ' M ' , ' C ' , ' R ' , ' ' ) } , /* Moose Cree */
{ " crx " , HB_TAG ( ' C ' , ' R ' , ' R ' , ' ' ) } , /* Carrier */
{ " crx " , HB_TAG ( ' C ' , ' R ' , ' R ' , ' ' ) } , /* Carrier */
{ " cs " , HB_TAG ( ' C ' , ' S ' , ' Y ' , ' ' ) } , /* Czech */
{ " cs " , HB_TAG ( ' C ' , ' S ' , ' Y ' , ' ' ) } , /* Czech */
{ " csb " , HB_TAG ( ' C ' , ' S ' , ' B ' , ' ' ) } , /* Kashubian */
{ " ctg " , HB_TAG ( ' C ' , ' T ' , ' G ' , ' ' ) } , /* Chittagonian */
{ " cts " , HB_TAG ( ' B ' , ' I ' , ' K ' , ' ' ) } , /* Northern Catanduanes Bikol */
{ " cu " , HB_TAG ( ' C ' , ' S ' , ' L ' , ' ' ) } , /* Church Slavic */
{ " cu " , HB_TAG ( ' C ' , ' S ' , ' L ' , ' ' ) } , /* Church Slavic */
{ " cv " , HB_TAG ( ' C ' , ' H ' , ' U ' , ' ' ) } , /* Chuvash */
{ " cv " , HB_TAG ( ' C ' , ' H ' , ' U ' , ' ' ) } , /* Chuvash */
{ " cwd " , HB_TAG ( ' D ' , ' C ' , ' R ' , ' ' ) } , /* Woods Cree */
{ " cwd " , HB_TAG ( ' D ' , ' C ' , ' R ' , ' ' ) } , /* Woods Cree */
@ -247,34 +286,42 @@ static const LangTag ot_languages[] = {
{ " dap " , HB_TAG ( ' N ' , ' I ' , ' S ' , ' ' ) } , /* Nisi (India) */
{ " dap " , HB_TAG ( ' N ' , ' I ' , ' S ' , ' ' ) } , /* Nisi (India) */
{ " dar " , HB_TAG ( ' D ' , ' A ' , ' R ' , ' ' ) } , /* Dargwa */
{ " dar " , HB_TAG ( ' D ' , ' A ' , ' R ' , ' ' ) } , /* Dargwa */
{ " de " , HB_TAG ( ' D ' , ' E ' , ' U ' , ' ' ) } , /* German */
{ " de " , HB_TAG ( ' D ' , ' E ' , ' U ' , ' ' ) } , /* German */
{ " din " , HB_TAG ( ' D ' , ' N ' , ' K ' , ' ' ) } , /* Dinka */
{ " dgo " , HB_TAG ( ' D ' , ' G ' , ' O ' , ' ' ) } , /* Dogri */
{ " dje " , HB_TAG ( ' D ' , ' J ' , ' R ' , ' ' ) } , /* Djerma */
{ " dhd " , HB_TAG ( ' M ' , ' A ' , ' W ' , ' ' ) } , /* Dhundari */
{ " din " , HB_TAG ( ' D ' , ' N ' , ' K ' , ' ' ) } , /* Dinka [macrolanguage] */
{ " diq " , HB_TAG ( ' D ' , ' I ' , ' Q ' , ' ' ) } , /* Dimli */
{ " dje " , HB_TAG ( ' D ' , ' J ' , ' R ' , ' ' ) } , /* Zarma */
{ " dng " , HB_TAG ( ' D ' , ' U ' , ' N ' , ' ' ) } , /* Dungan */
{ " dng " , HB_TAG ( ' D ' , ' U ' , ' N ' , ' ' ) } , /* Dungan */
{ " doi " , HB_TAG ( ' D ' , ' G ' , ' R ' , ' ' ) } , /* Dogri */
{ " doi " , HB_TAG ( ' D ' , ' G ' , ' R ' , ' ' ) } , /* Dogri [macrolanguage] */
{ " dsb " , HB_TAG ( ' L ' , ' S ' , ' B ' , ' ' ) } , /* Lower Sorbian */
{ " dsb " , HB_TAG ( ' L ' , ' S ' , ' B ' , ' ' ) } , /* Lower Sorbian */
{ " dv " , HB_TAG ( ' D ' , ' I ' , ' V ' , ' ' ) } , /* Dhivehi */
{ " dv " , HB_TAG ( ' D ' , ' I ' , ' V ' , ' ' ) } , /* Dhivehi/Divehi/Maldivian */
{ " dyu " , HB_TAG ( ' J ' , ' U ' , ' L ' , ' ' ) } , /* Jula */
{ " dyu " , HB_TAG ( ' J ' , ' U ' , ' L ' , ' ' ) } , /* Jula */
{ " dz " , HB_TAG ( ' D ' , ' Z ' , ' N ' , ' ' ) } , /* Dzongkha */
{ " dz " , HB_TAG ( ' D ' , ' Z ' , ' N ' , ' ' ) } , /* Dzongkha */
{ " ee " , HB_TAG ( ' E ' , ' W ' , ' E ' , ' ' ) } , /* Ewe */
{ " ee " , HB_TAG ( ' E ' , ' W ' , ' E ' , ' ' ) } , /* Ewe */
{ " efi " , HB_TAG ( ' E ' , ' F ' , ' I ' , ' ' ) } , /* Efik */
{ " efi " , HB_TAG ( ' E ' , ' F ' , ' I ' , ' ' ) } , /* Efik */
{ " ekk " , HB_TAG ( ' E ' , ' T ' , ' I ' , ' ' ) } , /* Standard Estonian */
{ " el " , HB_TAG ( ' E ' , ' L ' , ' L ' , ' ' ) } , /* Modern Greek (1453-) */
{ " el " , HB_TAG ( ' E ' , ' L ' , ' L ' , ' ' ) } , /* Modern Greek (1453-) */
{ " emk " , HB_TAG ( ' M ' , ' N ' , ' K ' , ' ' ) } , /* Eastern Maninkakan */
{ " en " , HB_TAG ( ' E ' , ' N ' , ' G ' , ' ' ) } , /* English */
{ " en " , HB_TAG ( ' E ' , ' N ' , ' G ' , ' ' ) } , /* English */
{ " eo " , HB_TAG ( ' N ' , ' T ' , ' O ' , ' ' ) } , /* Esperanto */
{ " eo " , HB_TAG ( ' N ' , ' T ' , ' O ' , ' ' ) } , /* Esperanto */
{ " eot " , HB_TAG ( ' B ' , ' T ' , ' I ' , ' ' ) } , /* Beti (Côte d'Ivoire) */
{ " eot " , HB_TAG ( ' B ' , ' T ' , ' I ' , ' ' ) } , /* Beti (Côte d'Ivoire) */
{ " es " , HB_TAG ( ' E ' , ' S ' , ' P ' , ' ' ) } , /* Spanish */
{ " es " , HB_TAG ( ' E ' , ' S ' , ' P ' , ' ' ) } , /* Spanish */
{ " et " , HB_TAG ( ' E ' , ' T ' , ' I ' , ' ' ) } , /* Estonian */
{ " et " , HB_TAG ( ' E ' , ' T ' , ' I ' , ' ' ) } , /* Estonian [macrolanguage] */
{ " eu " , HB_TAG ( ' E ' , ' U ' , ' Q ' , ' ' ) } , /* Basque */
{ " eu " , HB_TAG ( ' E ' , ' U ' , ' Q ' , ' ' ) } , /* Basque */
{ " eve " , HB_TAG ( ' E ' , ' V ' , ' N ' , ' ' ) } , /* Even */
{ " eve " , HB_TAG ( ' E ' , ' V ' , ' N ' , ' ' ) } , /* Even */
{ " evn " , HB_TAG ( ' E ' , ' V ' , ' K ' , ' ' ) } , /* Evenki */
{ " evn " , HB_TAG ( ' E ' , ' V ' , ' K ' , ' ' ) } , /* Evenki */
{ " fa " , HB_TAG ( ' F ' , ' A ' , ' R ' , ' ' ) } , /* Persian */
{ " fa " , HB_TAG ( ' F ' , ' A ' , ' R ' , ' ' ) } , /* Persian [macrolanguage] */
{ " ff " , HB_TAG ( ' F ' , ' U ' , ' L ' , ' ' ) } , /* Fulah */
{ " ff " , HB_TAG ( ' F ' , ' U ' , ' L ' , ' ' ) } , /* Fulah [macrolanguage] */
{ " fi " , HB_TAG ( ' F ' , ' I ' , ' N ' , ' ' ) } , /* Finnish */
{ " fi " , HB_TAG ( ' F ' , ' I ' , ' N ' , ' ' ) } , /* Finnish */
{ " fil " , HB_TAG ( ' P ' , ' I ' , ' L ' , ' ' ) } , /* Filipino */
{ " fil " , HB_TAG ( ' P ' , ' I ' , ' L ' , ' ' ) } , /* Filipino */
{ " fj " , HB_TAG ( ' F ' , ' J ' , ' I ' , ' ' ) } , /* Fijian */
{ " fj " , HB_TAG ( ' F ' , ' J ' , ' I ' , ' ' ) } , /* Fijian */
{ " fo " , HB_TAG ( ' F ' , ' O ' , ' S ' , ' ' ) } , /* Faroese */
{ " fo " , HB_TAG ( ' F ' , ' O ' , ' S ' , ' ' ) } , /* Faroese */
{ " fon " , HB_TAG ( ' F ' , ' O ' , ' N ' , ' ' ) } , /* Fon */
{ " fon " , HB_TAG ( ' F ' , ' O ' , ' N ' , ' ' ) } , /* Fon */
{ " fr " , HB_TAG ( ' F ' , ' R ' , ' A ' , ' ' ) } , /* French */
{ " fr " , HB_TAG ( ' F ' , ' R ' , ' A ' , ' ' ) } , /* French */
{ " frc " , HB_TAG ( ' F ' , ' R ' , ' C ' , ' ' ) } , /* Cajun French */
{ " frp " , HB_TAG ( ' F ' , ' R ' , ' P ' , ' ' ) } , /* Arpitan/Francoprovençal */
{ " fur " , HB_TAG ( ' F ' , ' R ' , ' L ' , ' ' ) } , /* Friulian */
{ " fur " , HB_TAG ( ' F ' , ' R ' , ' L ' , ' ' ) } , /* Friulian */
{ " fuv " , HB_TAG ( ' F ' , ' U ' , ' V ' , ' ' ) } , /* Nigerian Fulfulde */
{ " fy " , HB_TAG ( ' F ' , ' R ' , ' I ' , ' ' ) } , /* Western Frisian */
{ " fy " , HB_TAG ( ' F ' , ' R ' , ' I ' , ' ' ) } , /* Western Frisian */
{ " ga " , HB_TAG ( ' I ' , ' R ' , ' I ' , ' ' ) } , /* Irish */
{ " ga " , HB_TAG ( ' I ' , ' R ' , ' I ' , ' ' ) } , /* Irish */
{ " gaa " , HB_TAG ( ' G ' , ' A ' , ' D ' , ' ' ) } , /* Ga */
{ " gaa " , HB_TAG ( ' G ' , ' A ' , ' D ' , ' ' ) } , /* Ga */
@ -282,115 +329,167 @@ static const LangTag ot_languages[] = {
{ " gbm " , HB_TAG ( ' G ' , ' A ' , ' W ' , ' ' ) } , /* Garhwali */
{ " gbm " , HB_TAG ( ' G ' , ' A ' , ' W ' , ' ' ) } , /* Garhwali */
{ " gd " , HB_TAG ( ' G ' , ' A ' , ' E ' , ' ' ) } , /* Scottish Gaelic */
{ " gd " , HB_TAG ( ' G ' , ' A ' , ' E ' , ' ' ) } , /* Scottish Gaelic */
{ " gez " , HB_TAG ( ' G ' , ' E ' , ' Z ' , ' ' ) } , /* Ge'ez */
{ " gez " , HB_TAG ( ' G ' , ' E ' , ' Z ' , ' ' ) } , /* Ge'ez */
{ " ggo " , HB_TAG ( ' G ' , ' O ' , ' N ' , ' ' ) } , /* Southern Gondi */
{ " gl " , HB_TAG ( ' G ' , ' A ' , ' L ' , ' ' ) } , /* Galician */
{ " gl " , HB_TAG ( ' G ' , ' A ' , ' L ' , ' ' ) } , /* Galician */
{ " gld " , HB_TAG ( ' N ' , ' A ' , ' N ' , ' ' ) } , /* Nanai */
{ " gld " , HB_TAG ( ' N ' , ' A ' , ' N ' , ' ' ) } , /* Nanai */
{ " gn " , HB_TAG ( ' G ' , ' U ' , ' A ' , ' ' ) } , /* Guarani */
{ " glk " , HB_TAG ( ' G ' , ' L ' , ' K ' , ' ' ) } , /* Gilaki */
{ " gon " , HB_TAG ( ' G ' , ' O ' , ' N ' , ' ' ) } , /* Gondi */
{ " gn " , HB_TAG ( ' G ' , ' U ' , ' A ' , ' ' ) } , /* Guarani [macrolanguage] */
{ " 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 */
{ " grt " , HB_TAG ( ' G ' , ' R ' , ' O ' , ' ' ) } , /* Garo */
{ " gru " , HB_TAG ( ' S ' , ' O ' , ' G ' , ' ' ) } , /* Sodo Gurage */
{ " gru " , HB_TAG ( ' S ' , ' O ' , ' G ' , ' ' ) } , /* Sodo Gurage */
{ " gu " , HB_TAG ( ' G ' , ' U ' , ' J ' , ' ' ) } , /* Gujarati */
{ " gu " , HB_TAG ( ' G ' , ' U ' , ' J ' , ' ' ) } , /* Gujarati */
{ " guc " , HB_TAG ( ' G ' , ' U ' , ' C ' , ' ' ) } , /* Wayuu */
{ " guk " , HB_TAG ( ' G ' , ' M ' , ' Z ' , ' ' ) } , /* Gumuz */
{ " guk " , HB_TAG ( ' G ' , ' M ' , ' Z ' , ' ' ) } , /* Gumuz */
{ " gv " , HB_TAG ( ' M ' , ' N ' , ' X ' , ' ' ) } , /* Manx Gaelic */
/*{"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 */
{ " ha " , HB_TAG ( ' H ' , ' A ' , ' U ' , ' ' ) } , /* Hausa */
{ " har " , HB_TAG ( ' H ' , ' R ' , ' I ' , ' ' ) } , /* Harari */
{ " har " , HB_TAG ( ' H ' , ' R ' , ' I ' , ' ' ) } , /* Harari */
{ " haw " , HB_TAG ( ' H ' , ' A ' , ' W ' , ' ' ) } , /* Hawaiin */
{ " 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 */
{ " he " , HB_TAG ( ' I ' , ' W ' , ' R ' , ' ' ) } , /* Hebrew */
{ " hz " , HB_TAG ( ' H ' , ' E ' , ' R ' , ' ' ) } , /* Herero */
{ " hi " , HB_TAG ( ' H ' , ' I ' , ' N ' , ' ' ) } , /* Hindi */
{ " hi " , HB_TAG ( ' H ' , ' I ' , ' N ' , ' ' ) } , /* Hindi */
{ " hil " , HB_TAG ( ' H ' , ' I ' , ' L ' , ' ' ) } , /* Hiligaynon */
{ " hil " , HB_TAG ( ' H ' , ' I ' , ' L ' , ' ' ) } , /* Hiligaynon */
{ " hnd " , HB_TAG ( ' H ' , ' N ' , ' D ' , ' ' ) } , /* [Southern] Hindko */
{ " hnd " , HB_TAG ( ' H ' , ' N ' , ' D ' , ' ' ) } , /* [Southern] Hindko */
{ " hne " , HB_TAG ( ' C ' , ' H ' , ' H ' , ' ' ) } , /* Chattisgarhi */
{ " hne " , HB_TAG ( ' C ' , ' H ' , ' H ' , ' ' ) } , /* Chattisgarhi */
{ " hno " , HB_TAG ( ' H ' , ' N ' , ' D ' , ' ' ) } , /* [Northern] Hindko */
{ " hno " , HB_TAG ( ' H ' , ' N ' , ' D ' , ' ' ) } , /* [Northern] Hindko */
{ " ho " , HB_TAG ( ' H ' , ' M ' , ' O ' , ' ' ) } , /* Hiri Motu */
{ " hoc " , HB_TAG ( ' H ' , ' O ' , ' ' , ' ' ) } , /* Ho */
{ " hoc " , HB_TAG ( ' H ' , ' O ' , ' ' , ' ' ) } , /* Ho */
{ " hoj " , HB_TAG ( ' H ' , ' A ' , ' R ' , ' ' ) } , /* Harauti */
{ " hoj " , HB_TAG ( ' H ' , ' A ' , ' R ' , ' ' ) } , /* Harauti */
{ " hr " , HB_TAG ( ' H ' , ' R ' , ' V ' , ' ' ) } , /* Croatian */
{ " hr " , HB_TAG ( ' H ' , ' R ' , ' V ' , ' ' ) } , /* Croatian */
{ " hsb " , HB_TAG ( ' U ' , ' S ' , ' B ' , ' ' ) } , /* Upper Sorbian */
{ " hsb " , HB_TAG ( ' U ' , ' S ' , ' B ' , ' ' ) } , /* Upper Sorbian */
{ " ht " , HB_TAG ( ' H ' , ' A ' , ' I ' , ' ' ) } , /* Haitian */
{ " ht " , HB_TAG ( ' H ' , ' A ' , ' I ' , ' ' ) } , /* Haitian/Haitian Creole */
{ " hu " , HB_TAG ( ' H ' , ' U ' , ' N ' , ' ' ) } , /* Hungarian */
{ " hu " , HB_TAG ( ' H ' , ' U ' , ' N ' , ' ' ) } , /* Hungarian */
{ " hy " , HB_TAG ( ' H ' , ' Y ' , ' E ' , ' ' ) } , /* Armenian */
{ " 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) */
{ " ibb " , HB_TAG ( ' I ' , ' B ' , ' B ' , ' ' ) } , /* Ibibio */
{ " id " , HB_TAG ( ' I ' , ' N ' , ' D ' , ' ' ) } , /* Indonesian */
{ " id " , HB_TAG ( ' I ' , ' N ' , ' D ' , ' ' ) } , /* Indonesian */
{ " ie " , HB_TAG ( ' I ' , ' L ' , ' E ' , ' ' ) } , /* Interlingue/Occidental */
{ " ig " , HB_TAG ( ' I ' , ' B ' , ' O ' , ' ' ) } , /* Igbo */
{ " ig " , HB_TAG ( ' I ' , ' B ' , ' O ' , ' ' ) } , /* Igbo */
{ " igb " , HB_TAG ( ' E ' , ' B ' , ' I ' , ' ' ) } , /* Ebira */
{ " igb " , HB_TAG ( ' E ' , ' B ' , ' I ' , ' ' ) } , /* Ebira */
{ " ijc " , HB_TAG ( ' I ' , ' J ' , ' O ' , ' ' ) } , /* Izon */
{ " ijo " , HB_TAG ( ' I ' , ' J ' , ' O ' , ' ' ) } , /* Ijo [family] */
{ " ijo " , HB_TAG ( ' I ' , ' J ' , ' O ' , ' ' ) } , /* Ijo [family] */
{ " ik " , HB_TAG ( ' I ' , ' P ' , ' K ' , ' ' ) } , /* Inupiaq [macrolanguage] */
{ " ilo " , HB_TAG ( ' I ' , ' L ' , ' O ' , ' ' ) } , /* Ilokano */
{ " ilo " , HB_TAG ( ' I ' , ' L ' , ' O ' , ' ' ) } , /* Ilokano */
{ " inh " , HB_TAG ( ' I ' , ' N ' , ' G ' , ' ' ) } , /* Ingush */
{ " inh " , HB_TAG ( ' I ' , ' N ' , ' G ' , ' ' ) } , /* Ingush */
{ " io " , HB_TAG ( ' I ' , ' D ' , ' O ' , ' ' ) } , /* Ido */
{ " is " , HB_TAG ( ' I ' , ' S ' , ' L ' , ' ' ) } , /* Icelandic */
{ " is " , HB_TAG ( ' I ' , ' S ' , ' L ' , ' ' ) } , /* Icelandic */
{ " it " , HB_TAG ( ' I ' , ' T ' , ' A ' , ' ' ) } , /* Italian */
{ " it " , HB_TAG ( ' I ' , ' T ' , ' A ' , ' ' ) } , /* Italian */
{ " iu " , HB_TAG ( ' I ' , ' N ' , ' U ' , ' ' ) } , /* Inuktitut */
{ " iu " , HB_TAG ( ' I ' , ' N ' , ' U ' , ' ' ) } , /* Inuktitut [macrolanguage] */
{ " ja " , HB_TAG ( ' J ' , ' A ' , ' N ' , ' ' ) } , /* Japanese */
{ " 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 */
{ " jv " , HB_TAG ( ' J ' , ' A ' , ' V ' , ' ' ) } , /* Javanese */
{ " ka " , HB_TAG ( ' K ' , ' A ' , ' T ' , ' ' ) } , /* Georgian */
{ " ka " , HB_TAG ( ' K ' , ' A ' , ' T ' , ' ' ) } , /* Georgian */
{ " kaa " , HB_TAG ( ' K ' , ' R ' , ' K ' , ' ' ) } , /* Karakalpak */
{ " kaa " , HB_TAG ( ' K ' , ' R ' , ' K ' , ' ' ) } , /* Karakalpak */
{ " kab " , HB_TAG ( ' K ' , ' A ' , ' B ' , ' ' ) } , /* Kabyle */
{ " kam " , HB_TAG ( ' K ' , ' M ' , ' B ' , ' ' ) } , /* Kamba (Kenya) */
{ " kam " , HB_TAG ( ' K ' , ' M ' , ' B ' , ' ' ) } , /* Kamba (Kenya) */
{ " kar " , HB_TAG ( ' K ' , ' R ' , ' N ' , ' ' ) } , /* Karen [family] */
{ " kar " , HB_TAG ( ' K ' , ' R ' , ' N ' , ' ' ) } , /* Karen [family] */
{ " kbd " , HB_TAG ( ' K ' , ' A ' , ' B ' , ' ' ) } , /* Kabardian */
{ " kbd " , HB_TAG ( ' K ' , ' A ' , ' B ' , ' ' ) } , /* Kabardian */
{ " kde " , HB_TAG ( ' K ' , ' D ' , ' E ' , ' ' ) } , /* Makonde */
{ " kdr " , HB_TAG ( ' K ' , ' R ' , ' M ' , ' ' ) } , /* Karaim */
{ " kdr " , HB_TAG ( ' K ' , ' R ' , ' M ' , ' ' ) } , /* Karaim */
{ " kdt " , HB_TAG ( ' K ' , ' U ' , ' Y ' , ' ' ) } , /* Kuy */
{ " kdt " , HB_TAG ( ' K ' , ' U ' , ' Y ' , ' ' ) } , /* Kuy */
{ " kex " , HB_TAG ( ' K ' , ' K ' , ' N ' , ' ' ) } , /* Kokni */
{ " kex " , HB_TAG ( ' K ' , ' K ' , ' N ' , ' ' ) } , /* Kokni */
{ " kfr " , HB_TAG ( ' K ' , ' A ' , ' C ' , ' ' ) } , /* Kachchi */
{ " kfr " , HB_TAG ( ' K ' , ' A ' , ' C ' , ' ' ) } , /* Kachchi */
{ " kfy " , HB_TAG ( ' K ' , ' M ' , ' N ' , ' ' ) } , /* Kumaoni */
{ " kfy " , HB_TAG ( ' K ' , ' M ' , ' N ' , ' ' ) } , /* Kumaoni */
{ " kg " , HB_TAG ( ' K ' , ' O ' , ' N ' , ' ' ) } , /* Kongo [macrolanguage] */
{ " kha " , HB_TAG ( ' K ' , ' S ' , ' I ' , ' ' ) } , /* Khasi */
{ " kha " , HB_TAG ( ' K ' , ' S ' , ' I ' , ' ' ) } , /* Khasi */
{ " khb " , HB_TAG ( ' X ' , ' B ' , ' D ' , ' ' ) } , /* Tai Lue */
{ " khb " , HB_TAG ( ' X ' , ' B ' , ' D ' , ' ' ) } , /* Lü */
{ " kht " , HB_TAG ( ' K ' , ' H ' , ' N ' , ' ' ) } , /* Khamti */
{ " 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 */
{ " khw " , HB_TAG ( ' K ' , ' H ' , ' W ' , ' ' ) } , /* Khowar */
{ " ki " , HB_TAG ( ' K ' , ' I ' , ' K ' , ' ' ) } , /* Kikuyu */
{ " ki " , HB_TAG ( ' K ' , ' I ' , ' K ' , ' ' ) } , /* Gikuyu/Kikuyu */
{ " kj " , HB_TAG ( ' K ' , ' U ' , ' A ' , ' ' ) } , /* Kuanyama/Kwanyama */
{ " kjh " , HB_TAG ( ' K ' , ' H ' , ' A ' , ' ' ) } , /* Khakass */
{ " kjh " , HB_TAG ( ' K ' , ' H ' , ' A ' , ' ' ) } , /* Khakass */
{ " kjp " , HB_TAG ( ' K ' , ' J ' , ' P ' , ' ' ) } , /* Pwo Eastern Karen */
{ " kk " , HB_TAG ( ' K ' , ' A ' , ' Z ' , ' ' ) } , /* Kazakh */
{ " kk " , HB_TAG ( ' K ' , ' A ' , ' Z ' , ' ' ) } , /* Kazakh */
{ " kl " , HB_TAG ( ' G ' , ' R ' , ' N ' , ' ' ) } , /* Kalaallisut */
{ " kl " , HB_TAG ( ' G ' , ' R ' , ' N ' , ' ' ) } , /* Kalaallisut */
{ " kln " , HB_TAG ( ' K ' , ' A ' , ' L ' , ' ' ) } , /* Kalenjin */
{ " kln " , HB_TAG ( ' K ' , ' A ' , ' L ' , ' ' ) } , /* Kalenjin */
{ " km " , HB_TAG ( ' K ' , ' H ' , ' M ' , ' ' ) } , /* Central Khmer */
{ " km " , HB_TAG ( ' K ' , ' H ' , ' M ' , ' ' ) } , /* Central Khmer */
{ " kmb " , HB_TAG ( ' M ' , ' B ' , ' N ' , ' ' ) } , /* [North] M bundu */
{ " kmb " , HB_TAG ( ' M ' , ' B ' , ' N ' , ' ' ) } , /* Kim bundu */
{ " kmw " , HB_TAG ( ' K ' , ' M ' , ' O ' , ' ' ) } , /* Komo (Democratic Republic of Congo) */
{ " kmw " , HB_TAG ( ' K ' , ' M ' , ' O ' , ' ' ) } , /* Komo (Democratic Republic of Congo) */
{ " kn " , HB_TAG ( ' K ' , ' A ' , ' N ' , ' ' ) } , /* Kannada */
{ " kn " , HB_TAG ( ' K ' , ' A ' , ' N ' , ' ' ) } , /* Kannada */
{ " knn " , HB_TAG ( ' K ' , ' O ' , ' K ' , ' ' ) } , /* Konkani */
{ " ko " , HB_TAG ( ' K ' , ' O ' , ' R ' , ' ' ) } , /* Korean */
{ " ko " , HB_TAG ( ' K ' , ' O ' , ' R ' , ' ' ) } , /* Korean */
{ " koi " , HB_TAG ( ' K ' , ' O ' , ' P ' , ' ' ) } , /* Komi-Permyak */
{ " koi " , HB_TAG ( ' K ' , ' O ' , ' P ' , ' ' ) } , /* Komi-Permyak */
{ " kok " , HB_TAG ( ' K ' , ' O ' , ' K ' , ' ' ) } , /* Konkani */
{ " kok " , HB_TAG ( ' K ' , ' O ' , ' K ' , ' ' ) } , /* Konkani [macrolanguage] */
{ " kpe " , HB_TAG ( ' K ' , ' P ' , ' L ' , ' ' ) } , /* Kpelle */
{ " kpe " , HB_TAG ( ' K ' , ' P ' , ' L ' , ' ' ) } , /* Kpelle [macrolanguage] */
{ " kpv " , HB_TAG ( ' K ' , ' O ' , ' Z ' , ' ' ) } , /* Komi-Zyrian */
{ " kpv " , HB_TAG ( ' K ' , ' O ' , ' Z ' , ' ' ) } , /* Komi-Zyrian */
{ " kpy " , HB_TAG ( ' K ' , ' Y ' , ' K ' , ' ' ) } , /* Koryak */
{ " kpy " , HB_TAG ( ' K ' , ' Y ' , ' K ' , ' ' ) } , /* Koryak */
{ " kqy " , HB_TAG ( ' K ' , ' R ' , ' T ' , ' ' ) } , /* Koorete */
{ " kqy " , HB_TAG ( ' K ' , ' R ' , ' T ' , ' ' ) } , /* Koorete */
{ " kr " , HB_TAG ( ' K ' , ' N ' , ' R ' , ' ' ) } , /* Kanuri */
{ " kr " , HB_TAG ( ' K ' , ' N ' , ' R ' , ' ' ) } , /* Kanuri [macrolanguage] */
{ " kri " , HB_TAG ( ' K ' , ' R ' , ' I ' , ' ' ) } , /* Krio */
{ " kri " , HB_TAG ( ' K ' , ' R ' , ' I ' , ' ' ) } , /* Krio */
{ " krl " , HB_TAG ( ' K ' , ' R ' , ' L ' , ' ' ) } , /* Karelian */
{ " krl " , HB_TAG ( ' K ' , ' R ' , ' L ' , ' ' ) } , /* Karelian */
{ " kru " , HB_TAG ( ' K ' , ' U ' , ' U ' , ' ' ) } , /* Kurukh */
{ " kru " , HB_TAG ( ' K ' , ' U ' , ' U ' , ' ' ) } , /* Kurukh */
{ " ks " , HB_TAG ( ' K ' , ' S ' , ' H ' , ' ' ) } , /* Kashmiri */
{ " ks " , HB_TAG ( ' K ' , ' S ' , ' H ' , ' ' ) } , /* Kashmiri */
{ " ksh " , HB_TAG ( ' K ' , ' S ' , ' H ' , ' ' ) } , /* Kölsch */
{ " ksw " , HB_TAG ( ' K ' , ' R ' , ' N ' , ' ' ) } , /* S'gaw Karen */
{ " ksw " , HB_TAG ( ' K ' , ' R ' , ' N ' , ' ' ) } , /* S'gaw Karen */
{ " ku " , HB_TAG ( ' K ' , ' U ' , ' R ' , ' ' ) } , /* Kurdish */
/*{"ksw", HB_TAG('K','S','W',' ')},*/ /* S'gaw Karen (OpenType spec and SIL fonts) */
{ " ku " , HB_TAG ( ' K ' , ' U ' , ' R ' , ' ' ) } , /* Kurdish [macrolanguage] */
{ " kum " , HB_TAG ( ' K ' , ' U ' , ' M ' , ' ' ) } , /* Kumyk */
{ " kum " , HB_TAG ( ' K ' , ' U ' , ' M ' , ' ' ) } , /* Kumyk */
{ " kv " , HB_TAG ( ' K ' , ' O ' , ' M ' , ' ' ) } , /* Komi [macrolanguage] */
{ " kvd " , HB_TAG ( ' K ' , ' U ' , ' I ' , ' ' ) } , /* Kui (Indonesia) */
{ " kvd " , HB_TAG ( ' K ' , ' U ' , ' I ' , ' ' ) } , /* Kui (Indonesia) */
{ " kw " , HB_TAG ( ' C ' , ' O ' , ' R ' , ' ' ) } , /* Cornish */
{ " kxc " , HB_TAG ( ' K ' , ' M ' , ' S ' , ' ' ) } , /* Komso */
{ " kxc " , HB_TAG ( ' K ' , ' M ' , ' S ' , ' ' ) } , /* Komso */
{ " kxu " , HB_TAG ( ' K ' , ' U ' , ' I ' , ' ' ) } , /* Kui (India) */
{ " kxu " , HB_TAG ( ' K ' , ' U ' , ' I ' , ' ' ) } , /* Kui (India) */
{ " ky " , HB_TAG ( ' K ' , ' I ' , ' R ' , ' ' ) } , /* Kirghiz */
{ " ky " , HB_TAG ( ' K ' , ' I ' , ' R ' , ' ' ) } , /* Kirghiz/Kyrgyz */
{ " kyu " , HB_TAG ( ' K ' , ' Y ' , ' U ' , ' ' ) } , /* Western Kayah */
{ " la " , HB_TAG ( ' L ' , ' A ' , ' T ' , ' ' ) } , /* Latin */
{ " la " , HB_TAG ( ' L ' , ' A ' , ' T ' , ' ' ) } , /* Latin */
{ " lad " , HB_TAG ( ' J ' , ' U ' , ' D ' , ' ' ) } , /* Ladino */
{ " lad " , HB_TAG ( ' J ' , ' U ' , ' D ' , ' ' ) } , /* Ladino */
{ " lb " , HB_TAG ( ' L ' , ' T ' , ' Z ' , ' ' ) } , /* Luxembourgish */
{ " lb " , HB_TAG ( ' L ' , ' T ' , ' Z ' , ' ' ) } , /* Luxembourgish */
{ " lbe " , HB_TAG ( ' L ' , ' A ' , ' K ' , ' ' ) } , /* Lak */
{ " lbe " , HB_TAG ( ' L ' , ' A ' , ' K ' , ' ' ) } , /* Lak */
{ " lbj " , HB_TAG ( ' L ' , ' D ' , ' K ' , ' ' ) } , /* Ladakhi */
{ " lbj " , HB_TAG ( ' L ' , ' D ' , ' K ' , ' ' ) } , /* Ladakhi */
{ " lez " , HB_TAG ( ' L ' , ' E ' , ' Z ' , ' ' ) } , /* Lezgi */
{ " lez " , HB_TAG ( ' L ' , ' E ' , ' Z ' , ' ' ) } , /* Lezgi */
{ " lg " , HB_TAG ( ' L ' , ' U ' , ' G ' , ' ' ) } , /* Luganda */
{ " lg " , HB_TAG ( ' L ' , ' U ' , ' G ' , ' ' ) } , /* Ganda */
{ " li " , HB_TAG ( ' L ' , ' I ' , ' M ' , ' ' ) } , /* Limburgan/Limburger/Limburgish */
{ " lif " , HB_TAG ( ' L ' , ' M ' , ' B ' , ' ' ) } , /* Limbu */
{ " 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 */
{ " lld " , HB_TAG ( ' L ' , ' A ' , ' D ' , ' ' ) } , /* Ladin */
{ " lmn " , HB_TAG ( ' L ' , ' A ' , ' M ' , ' ' ) } , /* Lambani */
{ " lmn " , HB_TAG ( ' L ' , ' A ' , ' M ' , ' ' ) } , /* Lambani */
{ " lmo " , HB_TAG ( ' L ' , ' M ' , ' O ' , ' ' ) } , /* Lombard */
{ " ln " , HB_TAG ( ' L ' , ' I ' , ' N ' , ' ' ) } , /* Lingala */
{ " ln " , HB_TAG ( ' L ' , ' I ' , ' N ' , ' ' ) } , /* Lingala */
{ " lo " , HB_TAG ( ' L ' , ' A ' , ' O ' , ' ' ) } , /* Lao */
{ " lo " , HB_TAG ( ' L ' , ' A ' , ' O ' , ' ' ) } , /* Lao */
{ " lrc " , HB_TAG ( ' L ' , ' R ' , ' C ' , ' ' ) } , /* Northern Luri */
{ " lt " , HB_TAG ( ' L ' , ' T ' , ' H ' , ' ' ) } , /* Lithuanian */
{ " lt " , HB_TAG ( ' L ' , ' T ' , ' H ' , ' ' ) } , /* Lithuanian */
{ " lu " , HB_TAG ( ' L ' , ' U ' , ' B ' , ' ' ) } , /* Luba-Katanga */
{ " lu " , HB_TAG ( ' L ' , ' U ' , ' B ' , ' ' ) } , /* Luba-Katanga */
{ " lua " , HB_TAG ( ' L ' , ' U ' , ' B ' , ' ' ) } , /* Luba-Kasai */
{ " lua " , HB_TAG ( ' L ' , ' U ' , ' B ' , ' ' ) } , /* Luba-Kasai */
{ " luo " , HB_TAG ( ' L ' , ' U ' , ' O ' , ' ' ) } , /* Luo (Kenya and Tanzania) */
{ " luo " , HB_TAG ( ' L ' , ' U ' , ' O ' , ' ' ) } , /* Luo (Kenya and Tanzania) */
{ " lus " , HB_TAG ( ' M ' , ' I ' , ' Z ' , ' ' ) } , /* Mizo */
{ " lus " , HB_TAG ( ' M ' , ' I ' , ' Z ' , ' ' ) } , /* Mizo */
{ " luy " , HB_TAG ( ' L ' , ' U ' , ' H ' , ' ' ) } , /* Luhya [macrolanguage] */
{ " luy " , HB_TAG ( ' L ' , ' U ' , ' H ' , ' ' ) } , /* Luyia/Oluluyia [macrolanguage] */
{ " luz " , HB_TAG ( ' L ' , ' R ' , ' C ' , ' ' ) } , /* Southern Luri */
{ " lv " , HB_TAG ( ' L ' , ' V ' , ' I ' , ' ' ) } , /* Latvian */
{ " lv " , HB_TAG ( ' L ' , ' V ' , ' I ' , ' ' ) } , /* Latvian */
{ " lzz " , HB_TAG ( ' L ' , ' A ' , ' Z ' , ' ' ) } , /* Laz */
{ " 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 */
{ " mai " , HB_TAG ( ' M ' , ' T ' , ' H ' , ' ' ) } , /* Maithili */
{ " mak " , HB_TAG ( ' M ' , ' K ' , ' R ' , ' ' ) } , /* Makasar */
{ " man " , HB_TAG ( ' M ' , ' N ' , ' K ' , ' ' ) } , /* Manding/Mandingo [macrolanguage] */
{ " mdc " , HB_TAG ( ' M ' , ' L ' , ' E ' , ' ' ) } , /* Male (Papua New Guinea) */
{ " mdc " , HB_TAG ( ' M ' , ' L ' , ' E ' , ' ' ) } , /* Male (Papua New Guinea) */
{ " mdf " , HB_TAG ( ' M ' , ' O ' , ' K ' , ' ' ) } , /* Moksha */
{ " mdf " , HB_TAG ( ' M ' , ' O ' , ' K ' , ' ' ) } , /* Moksha */
{ " mdr " , HB_TAG ( ' M ' , ' D ' , ' R ' , ' ' ) } , /* Mandar */
{ " mdy " , HB_TAG ( ' M ' , ' L ' , ' E ' , ' ' ) } , /* Male (Ethiopia) */
{ " mdy " , HB_TAG ( ' M ' , ' L ' , ' E ' , ' ' ) } , /* Male (Ethiopia) */
{ " men " , HB_TAG ( ' M ' , ' D ' , ' E ' , ' ' ) } , /* Mende (Sierra Leone) */
{ " men " , HB_TAG ( ' M ' , ' D ' , ' E ' , ' ' ) } , /* Mende (Sierra Leone) */
{ " mg " , HB_TAG ( ' M ' , ' L ' , ' G ' , ' ' ) } , /* Malagasy */
{ " 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 */
{ " mhr " , HB_TAG ( ' L ' , ' M ' , ' A ' , ' ' ) } , /* Low Mari */
{ " mi " , HB_TAG ( ' M ' , ' R ' , ' I ' , ' ' ) } , /* Maori */
{ " mi " , HB_TAG ( ' M ' , ' R ' , ' I ' , ' ' ) } , /* Maori */
{ " min " , HB_TAG ( ' M ' , ' I ' , ' N ' , ' ' ) } , /* Minangkabau */
{ " mk " , HB_TAG ( ' M ' , ' K ' , ' D ' , ' ' ) } , /* Macedonian */
{ " 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 */
{ " ml " , HB_TAG ( ' M ' , ' L ' , ' R ' , ' ' ) } , /* Malayalam */
{ " mn " , HB_TAG ( ' M ' , ' N ' , ' G ' , ' ' ) } , /* Mongolian */
{ " mlq " , HB_TAG ( ' M ' , ' N ' , ' K ' , ' ' ) } , /* Western Maninkakan */
{ " mn " , HB_TAG ( ' M ' , ' N ' , ' G ' , ' ' ) } , /* Mongolian [macrolanguage] */
{ " mnc " , HB_TAG ( ' M ' , ' C ' , ' H ' , ' ' ) } , /* Manchu */
{ " mnc " , HB_TAG ( ' M ' , ' C ' , ' H ' , ' ' ) } , /* Manchu */
{ " mni " , HB_TAG ( ' M ' , ' N ' , ' I ' , ' ' ) } , /* Manipuri */
{ " mni " , HB_TAG ( ' M ' , ' N ' , ' I ' , ' ' ) } , /* Manipuri */
{ " mnk " , HB_TAG ( ' M ' , ' N ' , ' D ' , ' ' ) } , /* Mandinka */
{ " mnk " , HB_TAG ( ' M ' , ' N ' , ' D ' , ' ' ) } , /* Mandinka */
@ -398,72 +497,119 @@ static const LangTag ot_languages[] = {
{ " mnw " , HB_TAG ( ' M ' , ' O ' , ' N ' , ' ' ) } , /* Mon */
{ " mnw " , HB_TAG ( ' M ' , ' O ' , ' N ' , ' ' ) } , /* Mon */
{ " mo " , HB_TAG ( ' M ' , ' O ' , ' L ' , ' ' ) } , /* Moldavian */
{ " mo " , HB_TAG ( ' M ' , ' O ' , ' L ' , ' ' ) } , /* Moldavian */
{ " moh " , HB_TAG ( ' M ' , ' O ' , ' H ' , ' ' ) } , /* Mohawk */
{ " moh " , HB_TAG ( ' M ' , ' O ' , ' H ' , ' ' ) } , /* Mohawk */
{ " mos " , HB_TAG ( ' M ' , ' O ' , ' S ' , ' ' ) } , /* Mossi */
{ " mpe " , HB_TAG ( ' M ' , ' A ' , ' J ' , ' ' ) } , /* Majang */
{ " mpe " , HB_TAG ( ' M ' , ' A ' , ' J ' , ' ' ) } , /* Majang */
{ " mr " , HB_TAG ( ' M ' , ' A ' , ' R ' , ' ' ) } , /* Marathi */
{ " mr " , HB_TAG ( ' M ' , ' A ' , ' R ' , ' ' ) } , /* Marathi */
{ " mrj " , HB_TAG ( ' H ' , ' M ' , ' A ' , ' ' ) } , /* High Mari */
{ " mrj " , HB_TAG ( ' H ' , ' M ' , ' A ' , ' ' ) } , /* High Mari */
{ " ms " , HB_TAG ( ' M ' , ' L ' , ' Y ' , ' ' ) } , /* Malay */
{ " ms " , HB_TAG ( ' M ' , ' L ' , ' Y ' , ' ' ) } , /* Malay [macrolanguage] */
{ " msc " , HB_TAG ( ' M ' , ' N ' , ' K ' , ' ' ) } , /* Sankaran Maninka */
{ " mt " , HB_TAG ( ' M ' , ' T ' , ' S ' , ' ' ) } , /* Maltese */
{ " mt " , HB_TAG ( ' M ' , ' T ' , ' S ' , ' ' ) } , /* Maltese */
{ " mwr " , HB_TAG ( ' M ' , ' A ' , ' W ' , ' ' ) } , /* Marwari */
{ " 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 */
{ " my " , HB_TAG ( ' B ' , ' R ' , ' M ' , ' ' ) } , /* Burmese */
{ " mym " , HB_TAG ( ' M ' , ' E ' , ' N ' , ' ' ) } , /* Me'en */
{ " mym " , HB_TAG ( ' M ' , ' E ' , ' N ' , ' ' ) } , /* Me'en */
{ " myq " , HB_TAG ( ' M ' , ' N ' , ' K ' , ' ' ) } , /* Forest Maninka (retired code) */
{ " myv " , HB_TAG ( ' E ' , ' R ' , ' Z ' , ' ' ) } , /* Erzya */
{ " 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 */
{ " 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 */
{ " nb " , HB_TAG ( ' N ' , ' O ' , ' R ' , ' ' ) } , /* Norwegian Bokmål */
{ " nco " , HB_TAG ( ' S ' , ' I ' , ' B ' , ' ' ) } , /* Sibe */
{ " nco " , HB_TAG ( ' S ' , ' I ' , ' B ' , ' ' ) } , /* Sibe */
{ " nd " , HB_TAG ( ' N ' , ' D ' , ' B ' , ' ' ) } , /* [North] Ndebele */
{ " 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 */
{ " ne " , HB_TAG ( ' N ' , ' E ' , ' P ' , ' ' ) } , /* Nepali */
{ " new " , HB_TAG ( ' N ' , ' E ' , ' W ' , ' ' ) } , /* Newari */
{ " new " , HB_TAG ( ' N ' , ' E ' , ' W ' , ' ' ) } , /* Newari */
{ " ng " , HB_TAG ( ' N ' , ' D ' , ' G ' , ' ' ) } , /* Ndonga */
{ " ng " , HB_TAG ( ' N ' , ' D ' , ' G ' , ' ' ) } , /* Ndonga */
{ " nga " , HB_TAG ( ' N ' , ' G ' , ' A ' , ' ' ) } , /* Ngabaka */
{ " ngl " , HB_TAG ( ' L ' , ' M ' , ' W ' , ' ' ) } , /* Lomwe */
{ " ngl " , HB_TAG ( ' L ' , ' M ' , ' W ' , ' ' ) } , /* Lomwe */
{ " niu " , HB_TAG ( ' N ' , ' I ' , ' U ' , ' ' ) } , /* Niuean */
{ " niu " , HB_TAG ( ' N ' , ' I ' , ' U ' , ' ' ) } , /* Niuean */
{ " niv " , HB_TAG ( ' G ' , ' I ' , ' L ' , ' ' ) } , /* Gilyak */
{ " niv " , HB_TAG ( ' G ' , ' I ' , ' L ' , ' ' ) } , /* Gilyak */
{ " nl " , HB_TAG ( ' N ' , ' L ' , ' D ' , ' ' ) } , /* Dutch */
{ " nl " , HB_TAG ( ' N ' , ' L ' , ' D ' , ' ' ) } , /* Dutch */
{ " nn " , HB_TAG ( ' N ' , ' Y ' , ' N ' , ' ' ) } , /* Norwegian Nynorsk */
{ " nn " , HB_TAG ( ' N ' , ' Y ' , ' N ' , ' ' ) } , /* Norwegian Nynorsk */
{ " no " , HB_TAG ( ' N ' , ' O ' , ' R ' , ' ' ) } , /* Norwegian (deprecated) */
{ " no " , HB_TAG ( ' N ' , ' O ' , ' R ' , ' ' ) } , /* Norwegian [macrolanguage] */
{ " nod " , HB_TAG ( ' N ' , ' T ' , ' A ' , ' ' ) } , /* Northern Tai */
{ " nod " , HB_TAG ( ' N ' , ' T ' , ' A ' , ' ' ) } , /* Northern Thai */
{ " noe " , HB_TAG ( ' N ' , ' O ' , ' E ' , ' ' ) } , /* Nimadi */
{ " nog " , HB_TAG ( ' N ' , ' O ' , ' G ' , ' ' ) } , /* Nogai */
{ " nog " , HB_TAG ( ' N ' , ' O ' , ' G ' , ' ' ) } , /* Nogai */
{ " nov " , HB_TAG ( ' N ' , ' O ' , ' V ' , ' ' ) } , /* Novial */
{ " nqo " , HB_TAG ( ' N ' , ' K ' , ' O ' , ' ' ) } , /* N'Ko */
{ " nqo " , HB_TAG ( ' N ' , ' K ' , ' O ' , ' ' ) } , /* N'Ko */
{ " nr " , HB_TAG ( ' N ' , ' D ' , ' B ' , ' ' ) } , /* [South] Ndebele */
{ " nr " , HB_TAG ( ' N ' , ' D ' , ' B ' , ' ' ) } , /* [South] Ndebele */
{ " nsk " , HB_TAG ( ' N ' , ' A ' , ' S ' , ' ' ) } , /* Naskapi */
{ " nsk " , HB_TAG ( ' N ' , ' A ' , ' S ' , ' ' ) } , /* Naskapi */
{ " nso " , HB_TAG ( ' S ' , ' O ' , ' T ' , ' ' ) } , /* [Northern] Sotho */
{ " nso " , HB_TAG ( ' S ' , ' O ' , ' T ' , ' ' ) } , /* [Northern] Sotho */
{ " ny " , HB_TAG ( ' C ' , ' H ' , ' I ' , ' ' ) } , /* Nyanja */
{ " ny " , HB_TAG ( ' C ' , ' H ' , ' I ' , ' ' ) } , /* Chewa/Chichwa/Nyanja */
{ " nyn " , HB_TAG ( ' N ' , ' K ' , ' L ' , ' ' ) } , /* Nkole */
{ " nym " , HB_TAG ( ' N ' , ' Y ' , ' M ' , ' ' ) } , /* Nyamwezi */
{ " nyn " , HB_TAG ( ' N ' , ' K ' , ' L ' , ' ' ) } , /* Nyankole */
{ " oc " , HB_TAG ( ' O ' , ' C ' , ' I ' , ' ' ) } , /* Occitan (post 1500) */
{ " oc " , HB_TAG ( ' O ' , ' C ' , ' I ' , ' ' ) } , /* Occitan (post 1500) */
{ " oj " , HB_TAG ( ' O ' , ' J ' , ' B ' , ' ' ) } , /* Ojibwa */
{ " oj " , HB_TAG ( ' O ' , ' J ' , ' B ' , ' ' ) } , /* Ojibwa [macrolanguage] */
{ " ojs " , HB_TAG ( ' O ' , ' C ' , ' R ' , ' ' ) } , /* Oji-Cree */
{ " ojs " , HB_TAG ( ' O ' , ' C ' , ' R ' , ' ' ) } , /* Oji-Cree */
{ " om " , HB_TAG ( ' O ' , ' R ' , ' O ' , ' ' ) } , /* Oromo */
{ " om " , HB_TAG ( ' O ' , ' R ' , ' O ' , ' ' ) } , /* Oromo [macrolanguage] */
{ " or " , HB_TAG ( ' O ' , ' R ' , ' I ' , ' ' ) } , /* Oriya */
{ " or " , HB_TAG ( ' O ' , ' R ' , ' I ' , ' ' ) } , /* Oriya */
{ " os " , HB_TAG ( ' O ' , ' S ' , ' S ' , ' ' ) } , /* Ossetian */
{ " os " , HB_TAG ( ' O ' , ' S ' , ' S ' , ' ' ) } , /* Ossetian */
{ " pa " , HB_TAG ( ' P ' , ' A ' , ' N ' , ' ' ) } , /* Panjabi */
{ " 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 ' , ' ' ) } , /* Papiamento */
{ " pcc " , HB_TAG ( ' P ' , ' C ' , ' C ' , ' ' ) } , /* Bouyei */
{ " pcd " , HB_TAG ( ' P ' , ' C ' , ' D ' , ' ' ) } , /* Picard */
{ " pce " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* [Ruching] Palaung */
{ " pce " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* [Ruching] Palaung */
{ " 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 */
{ " pi " , HB_TAG ( ' P ' , ' A ' , ' L ' , ' ' ) } , /* Pali */
{ " pih " , HB_TAG ( ' P ' , ' I ' , ' H ' , ' ' ) } , /* Pitcairn-Norfolk */
{ " pl " , HB_TAG ( ' P ' , ' L ' , ' K ' , ' ' ) } , /* Polish */
{ " pl " , HB_TAG ( ' P ' , ' L ' , ' K ' , ' ' ) } , /* Polish */
{ " pll " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* [Shwe] Palaung */
{ " pll " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* [Shwe] Palaung */
{ " plp " , HB_TAG ( ' P ' , ' A ' , ' P ' , ' ' ) } , /* Palpa */
{ " plp " , HB_TAG ( ' P ' , ' A ' , ' P ' , ' ' ) } , /* Palpa */
{ " prs " , HB_TAG ( ' D ' , ' R ' , ' I ' , ' ' ) } , /* Dari */
{ " pms " , HB_TAG ( ' P ' , ' M ' , ' S ' , ' ' ) } , /* Piemontese */
{ " ps " , HB_TAG ( ' P ' , ' A ' , ' S ' , ' ' ) } , /* Pushto */
{ " pnb " , HB_TAG ( ' P ' , ' N ' , ' B ' , ' ' ) } , /* Western Panjabi */
{ " 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 */
{ " pt " , HB_TAG ( ' P ' , ' T ' , ' G ' , ' ' ) } , /* Portuguese */
{ " raj " , HB_TAG ( ' R ' , ' A ' , ' J ' , ' ' ) } , /* Rajasthani */
{ " pwo " , HB_TAG ( ' P ' , ' W ' , ' O ' , ' ' ) } , /* Pwo Western Karen */
{ " rbb " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* [Rumai] Palaung */
{ " qu " , HB_TAG ( ' Q ' , ' U ' , ' Z ' , ' ' ) } , /* Quechua [macrolanguage] */
{ " quc " , HB_TAG ( ' Q ' , ' U ' , ' C ' , ' ' ) } , /* K'iche'/Quiché */
{ " quz " , HB_TAG ( ' Q ' , ' U ' , ' Z ' , ' ' ) } , /* Cusco Quechua */
{ " raj " , HB_TAG ( ' R ' , ' A ' , ' J ' , ' ' ) } , /* Rajasthani [macrolanguage] */
{ " rbb " , HB_TAG ( ' P ' , ' L ' , ' G ' , ' ' ) } , /* Rumai Palaung */
{ " rej " , HB_TAG ( ' R ' , ' E ' , ' J ' , ' ' ) } , /* Rejang */
{ " ria " , HB_TAG ( ' R ' , ' I ' , ' A ' , ' ' ) } , /* Riang (India) */
{ " ria " , HB_TAG ( ' R ' , ' I ' , ' A ' , ' ' ) } , /* Riang (India) */
{ " ril " , HB_TAG ( ' R ' , ' I ' , ' A ' , ' ' ) } , /* Riang (Myanmar) */
{ " ril " , HB_TAG ( ' R ' , ' I ' , ' A ' , ' ' ) } , /* Riang (Myanmar) */
{ " rki " , HB_TAG ( ' A ' , ' R ' , ' K ' , ' ' ) } , /* Arakanese */
{ " rki " , HB_TAG ( ' A ' , ' R ' , ' K ' , ' ' ) } , /* Rakhine */
{ " rm " , HB_TAG ( ' R ' , ' M ' , ' S ' , ' ' ) } , /* Rhaeto-Romanic */
{ " 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 */
{ " ro " , HB_TAG ( ' R ' , ' O ' , ' M ' , ' ' ) } , /* Romanian */
{ " rom " , HB_TAG ( ' R ' , ' O ' , ' Y ' , ' ' ) } , /* Romany */
{ " rom " , HB_TAG ( ' R ' , ' O ' , ' Y ' , ' ' ) } , /* Romany [macrolanguage] */
{ " ru " , HB_TAG ( ' R ' , ' U ' , ' S ' , ' ' ) } , /* Russian */
{ " ru " , HB_TAG ( ' R ' , ' U ' , ' S ' , ' ' ) } , /* Russian */
{ " rue " , HB_TAG ( ' R ' , ' S ' , ' Y ' , ' ' ) } , /* Rusyn */
{ " rue " , HB_TAG ( ' R ' , ' S ' , ' Y ' , ' ' ) } , /* Rusyn */
{ " rw " , HB_TAG ( ' R ' , ' U ' , ' A ' , ' ' ) } , /* Ruanda */
{ " 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 */
{ " sa " , HB_TAG ( ' S ' , ' A ' , ' N ' , ' ' ) } , /* Sanskrit */
{ " sah " , HB_TAG ( ' Y ' , ' A ' , ' K ' , ' ' ) } , /* Yakut */
{ " sah " , HB_TAG ( ' Y ' , ' A ' , ' K ' , ' ' ) } , /* Yakut */
{ " sas " , HB_TAG ( ' S ' , ' A ' , ' S ' , ' ' ) } , /* Sasak */
{ " sat " , HB_TAG ( ' S ' , ' A ' , ' T ' , ' ' ) } , /* Santali */
{ " sat " , HB_TAG ( ' S ' , ' A ' , ' T ' , ' ' ) } , /* Santali */
{ " sck " , HB_TAG ( ' S ' , ' A ' , ' D ' , ' ' ) } , /* Sadri */
{ " sck " , HB_TAG ( ' S ' , ' A ' , ' D ' , ' ' ) } , /* Sadri */
{ " sc " , HB_TAG ( ' S ' , ' R ' , ' D ' , ' ' ) } , /* Sardinian [macrolanguage] */
{ " scn " , HB_TAG ( ' S ' , ' C ' , ' N ' , ' ' ) } , /* Sicilian */
{ " sco " , HB_TAG ( ' S ' , ' C ' , ' O ' , ' ' ) } , /* Scots */
{ " scs " , HB_TAG ( ' S ' , ' L ' , ' A ' , ' ' ) } , /* [North] Slavey */
{ " scs " , HB_TAG ( ' S ' , ' L ' , ' A ' , ' ' ) } , /* [North] Slavey */
{ " sd " , HB_TAG ( ' S ' , ' N ' , ' D ' , ' ' ) } , /* Sindhi */
{ " sd " , HB_TAG ( ' S ' , ' N ' , ' D ' , ' ' ) } , /* Sindhi */
{ " se " , HB_TAG ( ' N ' , ' S ' , ' M ' , ' ' ) } , /* Northern Sami */
{ " se " , HB_TAG ( ' N ' , ' S ' , ' M ' , ' ' ) } , /* Northern Sami */
{ " seh " , HB_TAG ( ' S ' , ' N ' , ' A ' , ' ' ) } , /* Sena */
{ " seh " , HB_TAG ( ' S ' , ' N ' , ' A ' , ' ' ) } , /* Sena */
{ " sel " , HB_TAG ( ' S ' , ' E ' , ' L ' , ' ' ) } , /* Selkup */
{ " sel " , HB_TAG ( ' S ' , ' E ' , ' L ' , ' ' ) } , /* Selkup */
{ " sg " , HB_TAG ( ' S ' , ' G ' , ' O ' , ' ' ) } , /* Sango */
{ " 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) */
{ " shn " , HB_TAG ( ' S ' , ' H ' , ' N ' , ' ' ) } , /* Shan */
{ " shn " , HB_TAG ( ' S ' , ' H ' , ' N ' , ' ' ) } , /* Shan */
{ " si " , HB_TAG ( ' S ' , ' N ' , ' H ' , ' ' ) } , /* Sinhala */
{ " si " , HB_TAG ( ' S ' , ' N ' , ' H ' , ' ' ) } , /* Sinhala */
{ " sid " , HB_TAG ( ' S ' , ' I ' , ' D ' , ' ' ) } , /* Sidamo */
{ " sid " , HB_TAG ( ' S ' , ' I ' , ' D ' , ' ' ) } , /* Sidamo */
@ -476,60 +622,98 @@ static const LangTag ot_languages[] = {
{ " smj " , HB_TAG ( ' L ' , ' S ' , ' M ' , ' ' ) } , /* Lule Sami */
{ " smj " , HB_TAG ( ' L ' , ' S ' , ' M ' , ' ' ) } , /* Lule Sami */
{ " smn " , HB_TAG ( ' I ' , ' S ' , ' M ' , ' ' ) } , /* Inari Sami */
{ " smn " , HB_TAG ( ' I ' , ' S ' , ' M ' , ' ' ) } , /* Inari Sami */
{ " sms " , HB_TAG ( ' S ' , ' K ' , ' S ' , ' ' ) } , /* Skolt Sami */
{ " sms " , HB_TAG ( ' S ' , ' K ' , ' S ' , ' ' ) } , /* Skolt Sami */
{ " sn " , HB_TAG ( ' S ' , ' N ' , ' A ' , ' ' ) } , /* Shona */
{ " snk " , HB_TAG ( ' S ' , ' N ' , ' K ' , ' ' ) } , /* Soninke */
{ " snk " , HB_TAG ( ' S ' , ' N ' , ' K ' , ' ' ) } , /* Soninke */
{ " so " , HB_TAG ( ' S ' , ' M ' , ' L ' , ' ' ) } , /* Somali */
{ " so " , HB_TAG ( ' S ' , ' M ' , ' L ' , ' ' ) } , /* Somali */
{ " sq " , HB_TAG ( ' S ' , ' Q ' , ' I ' , ' ' ) } , /* Albanian */
{ " sop " , HB_TAG ( ' S ' , ' O ' , ' P ' , ' ' ) } , /* Songe */
{ " sq " , HB_TAG ( ' S ' , ' Q ' , ' I ' , ' ' ) } , /* Albanian [macrolanguage] */
{ " sr " , HB_TAG ( ' S ' , ' R ' , ' B ' , ' ' ) } , /* Serbian */
{ " sr " , HB_TAG ( ' S ' , ' R ' , ' B ' , ' ' ) } , /* Serbian */
{ " srr " , HB_TAG ( ' S ' , ' R ' , ' R ' , ' ' ) } , /* Serer */
{ " srr " , HB_TAG ( ' S ' , ' R ' , ' R ' , ' ' ) } , /* Serer */
{ " ss " , HB_TAG ( ' S ' , ' W ' , ' Z ' , ' ' ) } , /* Swaz i */
{ " ss " , HB_TAG ( ' S ' , ' W ' , ' Z ' , ' ' ) } , /* Swat i */
{ " st " , HB_TAG ( ' S ' , ' O ' , ' T ' , ' ' ) } , /* [Southern] Sotho */
{ " 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 */
{ " suq " , HB_TAG ( ' S ' , ' U ' , ' R ' , ' ' ) } , /* Suri */
{ " sv " , HB_TAG ( ' S ' , ' V ' , ' E ' , ' ' ) } , /* Swedish */
{ " sv " , HB_TAG ( ' S ' , ' V ' , ' E ' , ' ' ) } , /* Swedish */
{ " sva " , HB_TAG ( ' S ' , ' V ' , ' A ' , ' ' ) } , /* Svan */
{ " sva " , HB_TAG ( ' S ' , ' V ' , ' A ' , ' ' ) } , /* Svan */
{ " sw " , HB_TAG ( ' S ' , ' W ' , ' K ' , ' ' ) } , /* Swahili */
{ " sw " , HB_TAG ( ' S ' , ' W ' , ' K ' , ' ' ) } , /* Swahili [macrolanguage] */
{ " swb " , HB_TAG ( ' C ' , ' M ' , ' R ' , ' ' ) } , /* Comorian */
{ " swb " , HB_TAG ( ' C ' , ' M ' , ' R ' , ' ' ) } , /* Comorian */
{ " syr " , HB_TAG ( ' S ' , ' Y ' , ' R ' , ' ' ) } , /* Syriac */
{ " swh " , HB_TAG ( ' S ' , ' W ' , ' K ' , ' ' ) } , /* Kiswahili/Swahili */
{ " swv " , HB_TAG ( ' M ' , ' A ' , ' W ' , ' ' ) } , /* Shekhawati */
{ " sxu " , HB_TAG ( ' S ' , ' X ' , ' U ' , ' ' ) } , /* Upper Saxon */
{ " 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 */
{ " ta " , HB_TAG ( ' T ' , ' A ' , ' M ' , ' ' ) } , /* Tamil */
{ " tab " , HB_TAG ( ' T ' , ' A ' , ' B ' , ' ' ) } , /* Tabasaran */
{ " tab " , HB_TAG ( ' T ' , ' A ' , ' B ' , ' ' ) } , /* Tabasaran */
{ " tcy " , HB_TAG ( ' T ' , ' U ' , ' L ' , ' ' ) } , /* Tulu */
{ " tcy " , HB_TAG ( ' T ' , ' U ' , ' L ' , ' ' ) } , /* Tulu */
{ " tdd " , HB_TAG ( ' T ' , ' D ' , ' D ' , ' ' ) } , /* Tai Nüa */
{ " te " , HB_TAG ( ' T ' , ' E ' , ' L ' , ' ' ) } , /* Telugu */
{ " te " , HB_TAG ( ' T ' , ' E ' , ' L ' , ' ' ) } , /* Telugu */
{ " tem " , HB_TAG ( ' T ' , ' M ' , ' N ' , ' ' ) } , /* Temne */
{ " tem " , HB_TAG ( ' T ' , ' M ' , ' N ' , ' ' ) } , /* Temne */
{ " tet " , HB_TAG ( ' T ' , ' E ' , ' T ' , ' ' ) } , /* Tetum */
{ " tg " , HB_TAG ( ' T ' , ' A ' , ' J ' , ' ' ) } , /* Tajik */
{ " tg " , HB_TAG ( ' T ' , ' A ' , ' J ' , ' ' ) } , /* Tajik */
{ " th " , HB_TAG ( ' T ' , ' H ' , ' A ' , ' ' ) } , /* Thai */
{ " th " , HB_TAG ( ' T ' , ' H ' , ' A ' , ' ' ) } , /* Thai */
{ " ti " , HB_TAG ( ' T ' , ' G ' , ' Y ' , ' ' ) } , /* Tigrinya */
{ " ti " , HB_TAG ( ' T ' , ' G ' , ' Y ' , ' ' ) } , /* Tigrinya */
{ " tig " , HB_TAG ( ' T ' , ' G ' , ' R ' , ' ' ) } , /* Tigre */
{ " tig " , HB_TAG ( ' T ' , ' G ' , ' R ' , ' ' ) } , /* Tigre */
{ " tiv " , HB_TAG ( ' T ' , ' I ' , ' V ' , ' ' ) } , /* Tiv */
{ " tk " , HB_TAG ( ' T ' , ' K ' , ' M ' , ' ' ) } , /* Turkmen */
{ " tk " , HB_TAG ( ' T ' , ' K ' , ' M ' , ' ' ) } , /* Turkmen */
{ " tl " , HB_TAG ( ' T ' , ' G ' , ' L ' , ' ' ) } , /* Tagalog */
{ " tmh " , HB_TAG ( ' t ' , ' m ' , ' h ' , ' ' ) } , /* Tamashek [macrolanguage] */
{ " tn " , HB_TAG ( ' T ' , ' N ' , ' A ' , ' ' ) } , /* Tswana */
{ " tn " , HB_TAG ( ' T ' , ' N ' , ' A ' , ' ' ) } , /* Tswana */
{ " to " , HB_TAG ( ' T ' , ' G ' , ' N ' , ' ' ) } , /* Tonga (Tonga Islands) */
{ " to " , HB_TAG ( ' T ' , ' G ' , ' N ' , ' ' ) } , /* Tonga (Tonga Islands) */
{ " tpi " , HB_TAG ( ' T ' , ' P ' , ' I ' , ' ' ) } , /* Tok Pisin */
{ " tr " , HB_TAG ( ' T ' , ' R ' , ' K ' , ' ' ) } , /* Turkish */
{ " tr " , HB_TAG ( ' T ' , ' R ' , ' K ' , ' ' ) } , /* Turkish */
{ " tru " , HB_TAG ( ' T ' , ' U ' , ' A ' , ' ' ) } , /* Turoyo Aramaic */
{ " tru " , HB_TAG ( ' T ' , ' U ' , ' A ' , ' ' ) } , /* Turoyo Aramaic */
{ " ts " , HB_TAG ( ' T ' , ' S ' , ' G ' , ' ' ) } , /* Tsonga */
{ " ts " , HB_TAG ( ' T ' , ' S ' , ' G ' , ' ' ) } , /* Tsonga */
{ " tt " , HB_TAG ( ' T ' , ' A ' , ' T ' , ' ' ) } , /* Tatar */
{ " tt " , HB_TAG ( ' T ' , ' A ' , ' T ' , ' ' ) } , /* Tatar */
{ " tum " , HB_TAG ( ' T ' , ' U ' , ' M ' , ' ' ) } , /* Tumbuka */
{ " tw " , HB_TAG ( ' T ' , ' W ' , ' I ' , ' ' ) } , /* Twi */
{ " tw " , HB_TAG ( ' T ' , ' W ' , ' I ' , ' ' ) } , /* Twi */
{ " ty " , HB_TAG ( ' T ' , ' H ' , ' T ' , ' ' ) } , /* Tahitian */
{ " ty " , HB_TAG ( ' T ' , ' H ' , ' T ' , ' ' ) } , /* Tahitian */
{ " tyv " , HB_TAG ( ' T ' , ' U ' , ' V ' , ' ' ) } , /* Tuvin */
{ " tyv " , HB_TAG ( ' T ' , ' U ' , ' V ' , ' ' ) } , /* Tuvin */
{ " tyz " , HB_TAG ( ' T ' , ' Y ' , ' Z ' , ' ' ) } , /* Tày */
{ " tzm " , HB_TAG ( ' T ' , ' Z ' , ' M ' , ' ' ) } , /* Central Atlas Tamazight */
{ " udm " , HB_TAG ( ' U ' , ' D ' , ' M ' , ' ' ) } , /* Udmurt */
{ " udm " , HB_TAG ( ' U ' , ' D ' , ' M ' , ' ' ) } , /* Udmurt */
{ " ug " , HB_TAG ( ' U ' , ' Y ' , ' G ' , ' ' ) } , /* Uighur */
{ " ug " , HB_TAG ( ' U ' , ' Y ' , ' G ' , ' ' ) } , /* Uighur */
{ " uk " , HB_TAG ( ' U ' , ' K ' , ' R ' , ' ' ) } , /* Ukrainian */
{ " uk " , HB_TAG ( ' U ' , ' K ' , ' R ' , ' ' ) } , /* Ukrainian */
{ " umb " , HB_TAG ( ' M ' , ' B ' , ' N ' , ' ' ) } , /* [South] M bundu */
{ " umb " , HB_TAG ( ' U ' , ' M ' , ' B ' , ' ' ) } , /* Um bundu */
{ " unr " , HB_TAG ( ' M ' , ' U ' , ' N ' , ' ' ) } , /* Mundari */
{ " unr " , HB_TAG ( ' M ' , ' U ' , ' N ' , ' ' ) } , /* Mundari */
{ " ur " , HB_TAG ( ' U ' , ' R ' , ' D ' , ' ' ) } , /* Urdu */
{ " ur " , HB_TAG ( ' U ' , ' R ' , ' D ' , ' ' ) } , /* Urdu */
{ " uz " , HB_TAG ( ' U ' , ' Z ' , ' B ' , ' ' ) } , /* Uzbek */
{ " 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 */
{ " ve " , HB_TAG ( ' V ' , ' E ' , ' N ' , ' ' ) } , /* Venda */
{ " vec " , HB_TAG ( ' V ' , ' E ' , ' C ' , ' ' ) } , /* Venetian */
{ " vls " , HB_TAG ( ' F ' , ' L ' , ' E ' , ' ' ) } , /* Vlaams */
{ " vi " , HB_TAG ( ' V ' , ' I ' , ' T ' , ' ' ) } , /* Vietnamese */
{ " vi " , HB_TAG ( ' V ' , ' I ' , ' T ' , ' ' ) } , /* Vietnamese */
{ " vmw " , HB_TAG ( ' M ' , ' A ' , ' K ' , ' ' ) } , /* Makua */
{ " 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 */
{ " wbm " , HB_TAG ( ' W ' , ' A ' , ' ' , ' ' ) } , /* Wa */
{ " wbr " , HB_TAG ( ' W ' , ' A ' , ' G ' , ' ' ) } , /* Wagdi */
{ " wbr " , HB_TAG ( ' W ' , ' A ' , ' G ' , ' ' ) } , /* Wagdi */
{ " wle " , HB_TAG ( ' S ' , ' I ' , ' G ' , ' ' ) } , /* Wolane */
{ " wry " , HB_TAG ( ' M ' , ' A ' , ' W ' , ' ' ) } , /* Merwari */
{ " wtm " , HB_TAG ( ' W ' , ' T ' , ' M ' , ' ' ) } , /* Mewati */
{ " wo " , HB_TAG ( ' W ' , ' L ' , ' F ' , ' ' ) } , /* Wolof */
{ " wo " , HB_TAG ( ' W ' , ' L ' , ' F ' , ' ' ) } , /* Wolof */
{ " xal " , HB_TAG ( ' K ' , ' L ' , ' M ' , ' ' ) } , /* Kalmyk */
{ " xal " , HB_TAG ( ' K ' , ' L ' , ' M ' , ' ' ) } , /* Kalmyk */
{ " xh " , HB_TAG ( ' X ' , ' H ' , ' S ' , ' ' ) } , /* Xhosa */
{ " xh " , HB_TAG ( ' X ' , ' H ' , ' S ' , ' ' ) } , /* Xhosa */
{ " xog " , HB_TAG ( ' X ' , ' O ' , ' G ' , ' ' ) } , /* Soga */
{ " xom " , HB_TAG ( ' K ' , ' M ' , ' O ' , ' ' ) } , /* Komo (Sudan) */
{ " xom " , HB_TAG ( ' K ' , ' M ' , ' O ' , ' ' ) } , /* Komo (Sudan) */
{ " xsl " , HB_TAG ( ' S ' , ' S ' , ' L ' , ' ' ) } , /* South Slavey */
{ " xsl " , HB_TAG ( ' S ' , ' S ' , ' L ' , ' ' ) } , /* South Slavey */
{ " yi " , HB_TAG ( ' J ' , ' I ' , ' I ' , ' ' ) } , /* Yiddish */
{ " 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 */
{ " yi " , HB_TAG ( ' J ' , ' I ' , ' I ' , ' ' ) } , /* Yiddish [macrolanguage] */
{ " yo " , HB_TAG ( ' Y ' , ' B ' , ' A ' , ' ' ) } , /* Yoruba */
{ " yo " , HB_TAG ( ' Y ' , ' B ' , ' A ' , ' ' ) } , /* Yoruba */
{ " yso " , HB_TAG ( ' N ' , ' I ' , ' S ' , ' ' ) } , /* Nisi (China) */
{ " yso " , HB_TAG ( ' N ' , ' I ' , ' S ' , ' ' ) } , /* Nisi (China) */
{ " za " , HB_TAG ( ' Z ' , ' H ' , ' A ' , ' ' ) } , /* Chuang/Zhuang [macrolanguage] */
{ " zea " , HB_TAG ( ' Z ' , ' E ' , ' A ' , ' ' ) } , /* Zeeuws */
{ " zne " , HB_TAG ( ' Z ' , ' N ' , ' D ' , ' ' ) } , /* Zande */
{ " zne " , HB_TAG ( ' Z ' , ' N ' , ' D ' , ' ' ) } , /* Zande */
{ " zu " , HB_TAG ( ' Z ' , ' U ' , ' L ' , ' ' ) } /* Zulu */
{ " zu " , HB_TAG ( ' Z ' , ' U ' , ' L ' , ' ' ) } , /* Zulu */
{ " zum " , HB_TAG ( ' L ' , ' R ' , ' C ' , ' ' ) } /* Kumzari */
/* The corresponding languages IDs for the following IDs are unclear,
/* The corresponding languages IDs for the following IDs are unclear,
* overlap , or are architecturally weird . Needs more research . */
* overlap , or are architecturally weird . Needs more research . */
@ -538,13 +722,13 @@ static const LangTag ot_languages[] = {
/*{"gsw?/gsw-FR?", HB_TAG('A','L','S',' ')},*/ /* Alsatian */
/*{"gsw?/gsw-FR?", HB_TAG('A','L','S',' ')},*/ /* Alsatian */
/*{"krc", HB_TAG('B','A','L',' ')},*/ /* Balkar */
/*{"krc", HB_TAG('B','A','L',' ')},*/ /* Balkar */
/*{"??", HB_TAG('B','C','R',' ')},*/ /* Bible Cree */
/*{"??", HB_TAG('B','C','R',' ')},*/ /* Bible Cree */
/*{"sgw?", HB_TAG('C','H','G',' ')},*/ /* Chaha Gurage */
/*{"zh?", HB_TAG('C','H','N',' ')},*/ /* Chinese (seen in Microsoft fonts) */
/*{"acf/gcf?", HB_TAG('F','A','N',' ')},*/ /* French Antillean */
/*{"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 */
/*{"enf?/yrk?", HB_TAG('F','N','E',' ')},*/ /* Forest Nenets */
/*{"fuf?", HB_TAG('F','T','A',' ')},*/ /* Futa */
/*{"fuf?", HB_TAG('F','T','A',' ')},*/ /* Futa */
/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/ /* Garshuni */
/*{"ar-Syrc?", HB_TAG('G','A','R',' ')},*/ /* Garshuni */
/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/ /* Halam */
/*{"cfm/rnl?", HB_TAG('H','A','L',' ')},*/ /* Halam */
/*{"fonipa", HB_TAG('I','P','P','H')},*/ /* Phonetic transcription—IPA conventions */
/*{"ga-Latg?/Latg?", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */
/*{"ga-Latg?/Latg?", HB_TAG('I','R','T',' ')},*/ /* Irish Traditional */
/*{"krc", HB_TAG('K','A','R',' ')},*/ /* Karachay */
/*{"krc", HB_TAG('K','A','R',' ')},*/ /* Karachay */
/*{"alw?/ktb?", HB_TAG('K','E','B',' ')},*/ /* Kebena */
/*{"alw?/ktb?", HB_TAG('K','E','B',' ')},*/ /* Kebena */
@ -561,8 +745,6 @@ static const LangTag ot_languages[] = {
/*{"??", HB_TAG('L','C','R',' ')},*/ /* L-Cree */
/*{"??", HB_TAG('L','C','R',' ')},*/ /* L-Cree */
/*{"??", HB_TAG('M','A','L',' ')},*/ /* Malayalam Traditional */
/*{"??", HB_TAG('M','A','L',' ')},*/ /* Malayalam Traditional */
/*{"mnk?/mlq?/...", HB_TAG('M','L','N',' ')},*/ /* Malinke */
/*{"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','C','R',' ')},*/ /* N-Cree */
/*{"??", HB_TAG('N','C','R',' ')},*/ /* N-Cree */
/*{"??", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */
/*{"??", HB_TAG('N','H','C',' ')},*/ /* Norway House Cree */
/*{"jpa?/sam?", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */
/*{"jpa?/sam?", HB_TAG('P','A','A',' ')},*/ /* Palestinian Aramaic */
@ -571,14 +753,12 @@ static const LangTag ot_languages[] = {
/*{"??", HB_TAG('R','C','R',' ')},*/ /* R-Cree */
/*{"??", HB_TAG('R','C','R',' ')},*/ /* R-Cree */
/*{"chp?", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */
/*{"chp?", HB_TAG('S','A','Y',' ')},*/ /* Sayisi */
/*{"xan?", HB_TAG('S','E','K',' ')},*/ /* Sekota */
/*{"xan?", HB_TAG('S','E','K',' ')},*/ /* Sekota */
/*{"stv/wle?/xst?", HB_TAG('S','I','G',' ')},*/ /* Silte Gurage */
/*{"ngo?", HB_TAG('S','X','T',' ')},*/ /* Sutu */
/*{"ngo?", HB_TAG('S','X','T',' ')},*/ /* Sutu */
/*{"??", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */
/*{"??", HB_TAG('T','C','R',' ')},*/ /* TH-Cree */
/*{"tnz?/tog?/toi?", HB_TAG('T','N','G',' ')},*/ /* Tonga */
/*{"tnz?/tog?/toi?", HB_TAG('T','N','G',' ')},*/ /* Tonga */
/*{"enh?/yrk?", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */
/*{"enh?/yrk?", HB_TAG('T','N','E',' ')},*/ /* Tundra Nenets */
/*{"??", HB_TAG('T','O','D',' ')},*/ /* Todo */
/*{"??", HB_TAG('W','C','R',' ')},*/ /* West-Cree */
/*{"??", HB_TAG('W','C','R',' ')},*/ /* West-Cree */
/*{"? ?", HB_TAG('Y','C','R',' ')},*/ /* Y-Cree */
/*{"cre ?", HB_TAG('Y','C','R',' ')},*/ /* Y-Cree */
/*{"??", HB_TAG('Y','I','C',' ')},*/ /* Yi Classic */
/*{"??", HB_TAG('Y','I','C',' ')},*/ /* Yi Classic */
/*{"ii?/Yiii?", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */
/*{"ii?/Yiii?", HB_TAG('Y','I','M',' ')},*/ /* Yi Modern */
/*{"??", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */
/*{"??", HB_TAG('Z','H','P',' ')},*/ /* Chinese Phonetic */