interscript-maps 2.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. checksums.yaml +7 -0
  2. data/README.adoc +28 -0
  3. data/interscript-maps.gemspec +28 -0
  4. data/interscript-maps.yaml +235 -0
  5. data/libs/posix.iml +11 -0
  6. data/libs/unicode.iml +13 -0
  7. data/libs/var-Cyrl.iml +7 -0
  8. data/libs/var-kor.iml +17 -0
  9. data/maps-staging/royin-tha-Thai-Latn-1939-generic.imp +98 -0
  10. data/maps-staging/royin-tha-Thai-Latn-1968.imp +156 -0
  11. data/maps-staging/royin-tha-Thai-Latn-1999-chained.imp +161 -0
  12. data/maps-staging/royin-tha-Thai-Latn-1999.imp +78 -0
  13. data/maps-staging/var-tha-Thai-Thai-phonemic.imp +53 -0
  14. data/maps-staging/var-tha-Thai-Zsym-ipa.imp +273 -0
  15. data/maps/acadsin-zho-Hani-Latn-2002.imp +27515 -0
  16. data/maps/alalc-amh-Ethi-Latn-1997.imp +392 -0
  17. data/maps/alalc-amh-Ethi-Latn-2011.imp +85 -0
  18. data/maps/alalc-ara-Arab-Latn-1997.imp +1171 -0
  19. data/maps/alalc-asm-Deva-Latn-1997.imp +214 -0
  20. data/maps/alalc-asm-Deva-Latn-2012.imp +53 -0
  21. data/maps/alalc-aze-Arab-Latn-1997.imp +321 -0
  22. data/maps/alalc-aze-Cyrl-Latn-1997.imp +101 -0
  23. data/maps/alalc-bel-Cyrl-Latn-1997.imp +118 -0
  24. data/maps/alalc-ben-Beng-Latn-1997.imp +225 -0
  25. data/maps/alalc-ben-Beng-Latn-2017.imp +135 -0
  26. data/maps/alalc-bul-Cyrl-Latn-1997.imp +110 -0
  27. data/maps/alalc-div-Thaa-Latn-1997.imp +171 -0
  28. data/maps/alalc-ell-Grek-Latn-1997.imp +381 -0
  29. data/maps/alalc-ell-Grek-Latn-2010.imp +382 -0
  30. data/maps/alalc-guj-Gujr-Latn-1997.imp +223 -0
  31. data/maps/alalc-guj-Gujr-Latn-2011.imp +57 -0
  32. data/maps/alalc-hin-Deva-Latn-1997.imp +248 -0
  33. data/maps/alalc-hin-Deva-Latn-2011.imp +63 -0
  34. data/maps/alalc-kan-Kana-Latn-1997.imp +233 -0
  35. data/maps/alalc-kan-Kana-Latn-2011.imp +58 -0
  36. data/maps/alalc-kat-Geok-Latn-1997.imp +109 -0
  37. data/maps/alalc-kat-Geor-Latn-1997.imp +104 -0
  38. data/maps/alalc-kor-Hang-Latn-1997.imp +68 -0
  39. data/maps/alalc-mal-Mlym-Latn-1997.imp +260 -0
  40. data/maps/alalc-mal-Mlym-Latn-2012.imp +65 -0
  41. data/maps/alalc-mar-Deva-Latn-1997.imp +178 -0
  42. data/maps/alalc-mar-Deva-Latn-2011.imp +51 -0
  43. data/maps/alalc-mkd-Cyrl-Latn-1997.imp +125 -0
  44. data/maps/alalc-mkd-Cyrl-Latn-2013.imp +113 -0
  45. data/maps/alalc-mon-Cyrl-Latn-1997.imp +161 -0
  46. data/maps/alalc-ori-Orya-Latn-1997.imp +234 -0
  47. data/maps/alalc-ori-Orya-Latn-2011.imp +59 -0
  48. data/maps/alalc-pan-Guru-Latn-1997.imp +241 -0
  49. data/maps/alalc-pan-Guru-Latn-2011.imp +71 -0
  50. data/maps/alalc-per-Arab-Latn-1997.imp +318 -0
  51. data/maps/alalc-pli-Deva-Latn-2012.imp +140 -0
  52. data/maps/alalc-pra-Deva-Latn-2012.imp +52 -0
  53. data/maps/alalc-rus-Cyrl-Latn-1997.imp +165 -0
  54. data/maps/alalc-rus-Cyrl-Latn-2012.imp +107 -0
  55. data/maps/alalc-san-Deva-Latn-2012.imp +207 -0
  56. data/maps/alalc-sin-Sinh-Latn-1997.imp +246 -0
  57. data/maps/alalc-sin-Sinh-Latn-2011.imp +63 -0
  58. data/maps/alalc-srp-Cyrl-Latn-1997.imp +124 -0
  59. data/maps/alalc-srp-Cyrl-Latn-2013.imp +115 -0
  60. data/maps/alalc-tam-Taml-Latn-1997.imp +52 -0
  61. data/maps/alalc-tam-Taml-Latn-2011.imp +49 -0
  62. data/maps/alalc-tel-Telu-Latn-1997.imp +237 -0
  63. data/maps/alalc-tel-Telu-Latn-2011.imp +58 -0
  64. data/maps/alalc-ukr-Cyrl-Latn-1997.imp +123 -0
  65. data/maps/alalc-ukr-Cyrl-Latn-2011.imp +32 -0
  66. data/maps/apcbg-bul-Cyrl-Latn-1995.imp +194 -0
  67. data/maps/az-aze-Cyrl-Latn-1939.imp +105 -0
  68. data/maps/az-aze-Cyrl-Latn-1958.imp +50 -0
  69. data/maps/bas-rus-Cyrl-Latn-2017-bss.imp +160 -0
  70. data/maps/bas-rus-Cyrl-Latn-2017-oss.imp +165 -0
  71. data/maps/bgn-jpn-Hrkt-Latn-1962.imp +288 -0
  72. data/maps/bgn-kor-Hang-Latn-1943.imp +31 -0
  73. data/maps/bgn-kor-Kore-Latn-1943.imp +33 -0
  74. data/maps/bgna-bul-Cyrl-Latn-2006.imp +119 -0
  75. data/maps/bgna-bul-Cyrl-Latn-2009.imp +119 -0
  76. data/maps/bgnpcgn-amh-Ethi-Latn-1967.imp +393 -0
  77. data/maps/bgnpcgn-ara-Arab-Latn-1956.imp +472 -0
  78. data/maps/bgnpcgn-arm-Armn-Latn-1981.imp +125 -0
  79. data/maps/bgnpcgn-aze-Cyrl-Latn-1993.imp +111 -0
  80. data/maps/bgnpcgn-bak-Cyrl-Latn-2007.imp +169 -0
  81. data/maps/bgnpcgn-bal-Arab-Latn-2008.imp +296 -0
  82. data/maps/bgnpcgn-bel-Cyrl-Latn-1979.imp +200 -0
  83. data/maps/bgnpcgn-bul-Cyrl-Latn-1952.imp +137 -0
  84. data/maps/bgnpcgn-bul-Cyrl-Latn-2013.imp +38 -0
  85. data/maps/bgnpcgn-che-Cyrl-Latn-2008.imp +176 -0
  86. data/maps/bgnpcgn-deu-Latn-Latn-2000.imp +56 -0
  87. data/maps/bgnpcgn-div-Thaa-Latn-1972.imp +90 -0
  88. data/maps/bgnpcgn-div-Thaa-Latn-1988.imp +71 -0
  89. data/maps/bgnpcgn-ell-Grek-Latn-1962.imp +443 -0
  90. data/maps/bgnpcgn-ell-Grek-Latn-1996.imp +269 -0
  91. data/maps/bgnpcgn-fao-Latn-Latn-1964.imp +41 -0
  92. data/maps/bgnpcgn-fao-Latn-Latn-1968.imp +28 -0
  93. data/maps/bgnpcgn-fas-Arab-Latn-1956.imp +111 -0
  94. data/maps/bgnpcgn-isl-Latn-Latn-1964.imp +42 -0
  95. data/maps/bgnpcgn-isl-Latn-Latn-1968.imp +32 -0
  96. data/maps/bgnpcgn-jpn-Hrkt-Latn-1976.imp +191 -0
  97. data/maps/bgnpcgn-kat-Geor-Latn-1981.imp +116 -0
  98. data/maps/bgnpcgn-kat-Geor-Latn-2009.imp +43 -0
  99. data/maps/bgnpcgn-kaz-Cyrl-Latn-1979.imp +193 -0
  100. data/maps/bgnpcgn-kir-Cyrl-Latn-1979.imp +170 -0
  101. data/maps/bgnpcgn-kor-Hang-Latn-kn-1945.imp +177 -0
  102. data/maps/bgnpcgn-kor-Hang-Latn-rok-2011.imp +40 -0
  103. data/maps/bgnpcgn-kor-Kore-Latn-rok-2011.imp +41 -0
  104. data/maps/bgnpcgn-kur-Arab-Latn-2007.imp +240 -0
  105. data/maps/bgnpcgn-mkd-Cyrl-Latn-1981.imp +132 -0
  106. data/maps/bgnpcgn-mkd-Cyrl-Latn-2013.imp +174 -0
  107. data/maps/bgnpcgn-mon-Cyrl-Latn-1964.imp +168 -0
  108. data/maps/bgnpcgn-nep-Deva-Latn-2011.imp +208 -0
  109. data/maps/bgnpcgn-per-Arab-Latn-1958.imp +312 -0
  110. data/maps/bgnpcgn-prs-Arab-Latn-2007.imp +552 -0
  111. data/maps/bgnpcgn-prs-Arab-Latn-yaghoubi.imp +445 -0
  112. data/maps/bgnpcgn-pus-Arab-Latn-1968.imp +289 -0
  113. data/maps/bgnpcgn-ron-cyrl-latn-2002.imp +165 -0
  114. data/maps/bgnpcgn-rue-Cyrl-Latn-2016.imp +133 -0
  115. data/maps/bgnpcgn-rus-Cyrl-Latn-1947.imp +195 -0
  116. data/maps/bgnpcgn-sme-Latn-Latn-1984.imp +48 -0
  117. data/maps/bgnpcgn-srp-Cyrl-Latn-1962.imp +55 -0
  118. data/maps/bgnpcgn-srp-Cyrl-Latn-2005.imp +146 -0
  119. data/maps/bgnpcgn-tat-Cyrl-Latn-2007.imp +185 -0
  120. data/maps/bgnpcgn-tgk-Cyrl-Latn-1994.imp +188 -0
  121. data/maps/bgnpcgn-ukr-Cyrl-Latn-1965.imp +136 -0
  122. data/maps/bgnpcgn-ukr-Cyrl-Latn-2019.imp +88 -0
  123. data/maps/bgnpcgn-urd-Arab-Latn-2007.imp +333 -0
  124. data/maps/bgnpcgn-uzb-Cyrl-Latn-1979.imp +145 -0
  125. data/maps/bgnpcgn-uzb-Cyrl-Latn-2000.imp +74 -0
  126. data/maps/bgnpcgn-zho-Hans-Latn-1979.imp +7463 -0
  127. data/maps/bis-asm-Beng-Latn-13194-1991.imp +154 -0
  128. data/maps/bis-ben-Beng-Latn-13194-1991.imp +151 -0
  129. data/maps/bis-dev-Deva-Latn-13194-1991.imp +178 -0
  130. data/maps/bis-guj-Gujr-Latn-13194-1991.imp +172 -0
  131. data/maps/bis-kan-Kana-Latn-13194-1991.imp +166 -0
  132. data/maps/bis-mlm-Mlym-Latn-13194-1991.imp +170 -0
  133. data/maps/bis-ori-Orya-Latn-13194-1991.imp +168 -0
  134. data/maps/bis-pnj-Guru-Latn-13194-1991.imp +169 -0
  135. data/maps/bis-tel-Telu-Latn-13194-1991.imp +165 -0
  136. data/maps/bis-tml-Taml-Latn-13194-1991.imp +149 -0
  137. data/maps/by-bel-Cyrl-Latn-1998.imp +123 -0
  138. data/maps/by-bel-Cyrl-Latn-2007.imp +77 -0
  139. data/maps/din-grc-Grek-Latn-31634-2011-t1.imp +627 -0
  140. data/maps/din-hin-Deva-Latn-33904-2018.imp +101 -0
  141. data/maps/din-kat-Geor-Latn-32707-2010.imp +103 -0
  142. data/maps/din-mar-Deva-Latn-33904-2018.imp +83 -0
  143. data/maps/din-nep-Deva-Latn-33904-2018.imp +110 -0
  144. data/maps/din-pli-Deva-Latn-33904-2018.imp +72 -0
  145. data/maps/din-pra-Deva-Latn-33904-2018.imp +66 -0
  146. data/maps/din-san-Deva-Latn-33904-2018.imp +294 -0
  147. data/maps/din-tam-Taml-Latn-33903-2016.imp +187 -0
  148. data/maps/dos-nep-Deva-Latn-1997.imp +47 -0
  149. data/maps/elot-ell-Grek-Latn-743-1982-tl.imp +399 -0
  150. data/maps/elot-ell-Grek-Latn-743-1982-ts.imp +397 -0
  151. data/maps/elot-ell-Grek-Latn-743-2001-tl.imp +34 -0
  152. data/maps/elot-ell-Grek-Latn-743-2001-ts.imp +178 -0
  153. data/maps/ggg-kat-Geor-Latn-2002.imp +75 -0
  154. data/maps/gki-bel-Cyrl-Latn-1992.imp +44 -0
  155. data/maps/gki-bel-Cyrl-Latn-2000.imp +159 -0
  156. data/maps/gost-rus-Cyrl-Latn-16876-71-1983.imp +179 -0
  157. data/maps/gost-rus-Cyrl-Latn-7.79-2000-2002.imp +132 -0
  158. data/maps/hk-yue-Hani-Latn-1888.imp +29201 -0
  159. data/maps/icao-bel-Cyrl-Latn-9303.imp +136 -0
  160. data/maps/icao-bul-Cyrl-Latn-9303.imp +127 -0
  161. data/maps/icao-fas-Arab-Latn-9303.imp +112 -0
  162. data/maps/icao-heb-Hebr-Latn-9303.imp +160 -0
  163. data/maps/icao-mkd-Cyrl-Latn-9303.imp +126 -0
  164. data/maps/icao-rus-Cyrl-Latn-9303.imp +126 -0
  165. data/maps/icao-srp-Cyrl-Latn-9303.imp +126 -0
  166. data/maps/icao-ukr-Cyrl-Latn-9303.imp +127 -0
  167. data/maps/iso-ara-Arab-Latn-233-1984.imp +301 -0
  168. data/maps/iso-asm-Beng-Latn-15919-2001.imp +73 -0
  169. data/maps/iso-ben-Beng-Latn-15919-2001.imp +171 -0
  170. data/maps/iso-ell-Grek-Latn-843-1997-t1.imp +365 -0
  171. data/maps/iso-ell-Grek-Latn-843-1997-t2.imp +43 -0
  172. data/maps/iso-guj-Gujr-Latn-15919-2001.imp +214 -0
  173. data/maps/iso-hin-Deva-Latn-15919-2001.imp +73 -0
  174. data/maps/iso-inc-Deva-Latn-15919-2001.imp +61 -0
  175. data/maps/iso-jpn-Hrkt-Latn-3602-1989.imp +59 -0
  176. data/maps/iso-kan-Kana-Latn-15919-2001.imp +212 -0
  177. data/maps/iso-kat-Geor-Latn-9984-1996.imp +103 -0
  178. data/maps/iso-kor-Hang-Latn-1996-method1.imp +140 -0
  179. data/maps/iso-kor-Hang-Latn-1996-method2.imp +132 -0
  180. data/maps/iso-mal-Mlym-Latn-15919-2001.imp +276 -0
  181. data/maps/iso-mar-Deva-Latn-15919-2001.imp +68 -0
  182. data/maps/iso-nep-Deva-Latn-15919-2001.imp +75 -0
  183. data/maps/iso-ori-Orya-Latn-15919-2001.imp +188 -0
  184. data/maps/iso-pan-Guru-Latn-15919-2001.imp +217 -0
  185. data/maps/iso-pli-Beng-Latn-15919-2001.imp +66 -0
  186. data/maps/iso-pli-Deva-Latn-15919-2001.imp +68 -0
  187. data/maps/iso-pli-Sinh-Latn-15919-2001.imp +211 -0
  188. data/maps/iso-pli-Thai-Latn-15919-2001.imp +47 -0
  189. data/maps/iso-pra-Deva-Latn-15919-2001.imp +60 -0
  190. data/maps/iso-prs-Arab-Latn-233-3-1999.imp +352 -0
  191. data/maps/iso-rus-Cyrl-Latn-9-1995.imp +279 -0
  192. data/maps/iso-san-Deva-Latn-15919-2001.imp +215 -0
  193. data/maps/iso-tam-Taml-Latn-15919-2001.imp +153 -0
  194. data/maps/iso-tel-Telu-Latn-15919-2001.imp +214 -0
  195. data/maps/iso-tha-Thai-Latn-11940-1998.imp +114 -0
  196. data/maps/kp-kor-Hang-Latn-2002.imp +540 -0
  197. data/maps/lshk-yue-Hani-Latn-jyutping-1993.imp +29005 -0
  198. data/maps/masm-mon-Cyrl-Latn-5217-2012.imp +136 -0
  199. data/maps/masm-mon-Latn-Cyrl-5217-2012.imp +162 -0
  200. data/maps/mext-jpn-Hrkt-Latn-1954.imp +403 -0
  201. data/maps/moct-kor-Hang-Latn-2000.imp +475 -0
  202. data/maps/mofa-jpn-Hrkt-Latn-1989.imp +484 -0
  203. data/maps/mv-div-Thaa-Latn-1987.imp +144 -0
  204. data/maps/mvd-bel-Cyrl-Latn-2008.imp +224 -0
  205. data/maps/mvd-bel-Cyrl-Latn-2010.imp +64 -0
  206. data/maps/mvd-rus-Cyrl-Latn-2008.imp +110 -0
  207. data/maps/mvd-rus-Cyrl-Latn-2010.imp +40 -0
  208. data/maps/odni-ara-Arab-Latn-2004.imp +106 -0
  209. data/maps/odni-ara-Arab-Latn-2015.imp +281 -0
  210. data/maps/odni-aze-Cyrl-Latn-2015.imp +158 -0
  211. data/maps/odni-bel-Cyrl-Latn-2015.imp +138 -0
  212. data/maps/odni-bul-Cyrl-Latn-2005.imp +90 -0
  213. data/maps/odni-bul-Cyrl-Latn-2015.imp +103 -0
  214. data/maps/odni-che-Cyrl-Latn-2015.imp +165 -0
  215. data/maps/odni-fas-Arab-Latn-2004.imp +268 -0
  216. data/maps/odni-fas-Arab-Latn-2015.imp +398 -0
  217. data/maps/odni-hin-Deva-Latn-2004.imp +180 -0
  218. data/maps/odni-hin-Deva-Latn-2015.imp +256 -0
  219. data/maps/odni-kat-Geor-Latn-2015.imp +76 -0
  220. data/maps/odni-kaz-Cyrl-Latn-2015.imp +164 -0
  221. data/maps/odni-kir-Cyrl-Latn-2015.imp +149 -0
  222. data/maps/odni-kor-Hang-Latn-2015.imp +307 -0
  223. data/maps/odni-mkd-Cyrl-Latn-2005.imp +28 -0
  224. data/maps/odni-mkd-Cyrl-Latn-2015.imp +124 -0
  225. data/maps/odni-prs-Arab-Latn-2004.imp +120 -0
  226. data/maps/odni-prs-Arab-Latn-2015.imp +225 -0
  227. data/maps/odni-pus-Arab-Latn-2011.imp +327 -0
  228. data/maps/odni-rus-Cyrl-Latn-2015.imp +79 -0
  229. data/maps/odni-srp-Cyrl-Latn-2005.imp +35 -0
  230. data/maps/odni-srp-Cyrl-Latn-2015.imp +130 -0
  231. data/maps/odni-tat-Cyrl-Latn-2015.imp +157 -0
  232. data/maps/odni-tgk-Cyrl-Latn-2015.imp +161 -0
  233. data/maps/odni-tuk-Cyrl-Latn-2015.imp +159 -0
  234. data/maps/odni-uig-Cyrl-Latn-2015.imp +151 -0
  235. data/maps/odni-ukr-Cyrl-Latn-2015.imp +136 -0
  236. data/maps/odni-urd-Arab-Latn-2015.imp +220 -0
  237. data/maps/odni-uzb-Cyrl-Latn-2015.imp +165 -0
  238. data/maps/sac-zho-Hans-Latn-1979.imp +20940 -0
  239. data/maps/sasm-mon-Mong-Latn-general-1978.imp +294 -0
  240. data/maps/sasm-mon-Mong-Latn-phonetic-1978.imp +261 -0
  241. data/maps/ses-ara-Arab-Latn-1930.imp +225 -0
  242. data/maps/stategeocadastre-ukr-Cyrl-Latn-1993.imp +171 -0
  243. data/maps/ua-ukr-Cyrl-Latn-1996.imp +149 -0
  244. data/maps/ua-ukr-Cyrl-Latn-2007.imp +69 -0
  245. data/maps/ua-ukr-Cyrl-Latn-2010.imp +128 -0
  246. data/maps/un-amh-Ethi-Latn-2016.imp +483 -0
  247. data/maps/un-ara-Arab-Latn-1971.imp +137 -0
  248. data/maps/un-ara-Arab-Latn-1972.imp +155 -0
  249. data/maps/un-ara-Arab-Latn-2017.imp +375 -0
  250. data/maps/un-asm-Beng-Latn-1972.imp +188 -0
  251. data/maps/un-bel-Cyrl-Latn-2007.imp +78 -0
  252. data/maps/un-ben-Beng-Latn-2016.imp +516 -0
  253. data/maps/un-ell-Grek-Latn-1987-phonetic.imp +437 -0
  254. data/maps/un-ell-Grek-Latn-1987-tl.imp +27 -0
  255. data/maps/un-ell-Grek-Latn-1987-ts.imp +269 -0
  256. data/maps/un-guj-Gujr-Latn-1972.imp +196 -0
  257. data/maps/un-hin-Deva-Latn-2016.imp +356 -0
  258. data/maps/un-kan-Kana-Latn-2016.imp +214 -0
  259. data/maps/un-mal-Mlym-Latn-1972.imp +215 -0
  260. data/maps/un-mar-Deva-Latn-2016.imp +96 -0
  261. data/maps/un-mon-Mong-Latn-general-2013.imp +170 -0
  262. data/maps/un-mon-Mong-Latn-phonetic-2013.imp +170 -0
  263. data/maps/un-nep-Deva-Latn-1972.imp +295 -0
  264. data/maps/un-nep-Deva-Latn-2013.imp +62 -0
  265. data/maps/un-ori-Orya-Latn-1972.imp +208 -0
  266. data/maps/un-pan-Guru-Latn-1972.imp +321 -0
  267. data/maps/un-prs-Arab-Latn-1967.imp +214 -0
  268. data/maps/un-rus-Cyrl-Latn-1987.imp +96 -0
  269. data/maps/un-sin-Sinh-Latn-1972.imp +193 -0
  270. data/maps/un-tam-Taml-Latn-1972.imp +173 -0
  271. data/maps/un-tel-Telu-Latn-1972.imp +229 -0
  272. data/maps/un-ukr-Cyrl-Latn-1998.imp +58 -0
  273. data/maps/un-ukr-Cyrl-Latn-2012.imp +95 -0
  274. data/maps/un-urd-Arab-Latn-1972.imp +290 -0
  275. data/maps/var-amh-Ethi-Latn-eae-2003.imp +414 -0
  276. data/maps/var-gez-Ethi-Latn-eae-2003.imp +54 -0
  277. data/maps/var-hin-Deva-Latn-hunterian-1872.imp +212 -0
  278. data/maps/var-jpn-Hrkt-Latn-hepburn-1886.imp +399 -0
  279. data/maps/var-jpn-Hrkt-Latn-hepburn-1954.imp +382 -0
  280. data/maps/var-kor-Hang-Hang-jamo.imp +11196 -0
  281. data/maps/var-kor-Hang-Latn-mr-1939.imp +574 -0
  282. data/maps/var-kor-Kore-Hang-2013.imp +59764 -0
  283. data/maps/var-kor-Kore-Latn-mr-1939.imp +36 -0
  284. data/maps/var-mar-Deva-Latn-hunterian-1872.imp +39 -0
  285. data/maps/var-mon-Mong-Latn-1930.imp +101 -0
  286. data/maps/var-mon-Mong-Latn-lessing.imp +181 -0
  287. data/maps/var-mon-Mong-Latn-vpmc.imp +182 -0
  288. data/maps/var-pra-Deva-Latn-iast-1912.imp +36 -0
  289. data/maps/var-san-Deva-Latn-iast-1912.imp +147 -0
  290. data/maps/var-zho-Hani-Latn-wd-1979.imp +27549 -0
  291. metadata +335 -0
@@ -0,0 +1,552 @@
1
+ metadata {
2
+ authority_id: bgnpcgn
3
+ id: 2007
4
+ language: iso-639-3:prs
5
+ # prs stands for Dari (https://iso639-3.sil.org/code/prs&_ga=GA1.2.2054538372.1574092823)
6
+ source_script: Arab
7
+ destination_script: Latn
8
+ name: BGN/PCGN NATIONAL ROMANIZATION SYSTEM FOR AFGHANISTAN -- BGN/PCGN 2007 System
9
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/693661/ROMANIZATION_FOR_AFGHANISTAN.pdf
10
+ creation_date: 2007
11
+ confirmation_date: 2017-11
12
+ description: |
13
+ This romanization system agreed by BGN and PCGN in November 2007,
14
+ accommodates the linguistic complexity of Afghanistan as manifest in
15
+ its geographical names.
16
+
17
+ The following tabulation shows the original Perso-Arabic script with
18
+ accompanying Unicode value (columns 1a and b), the Yaghoubi
19
+ romanization (column 2), the BGN/PCGN romanization with accompanying
20
+ Unicode value (columns 3a and b), an English phonetic example (column
21
+ 4), and an example toponym (columns 5b and c).
22
+
23
+ [The Yaghoubi romanization system was developed in 1959 by
24
+ Muzaffarud Din Yaqubi (commonly seen as Yaghoubi). It is a native
25
+ official system designed to reflect Afghan names, both Dari and Pashto,
26
+ and both pronunciation and genuine linguistic truth.]
27
+
28
+ The tables function as both a romanization system for Afghanistan (i.e.
29
+ with access to the original script, these tables can be applied to get
30
+ a standardized Roman result - moving from columns 1 to 3) and as a
31
+ means of converting the available Yaghoubi Roman-script spellings, as
32
+ appear on the Fairchild Aerial Surveys map series, to standard BGN/PCGN
33
+ spellings (moving from columns 2 to 3).
34
+
35
+ The points used in Arabic to mark short vowels and certain other
36
+ diacritical marks are infrequently written in Afghanistan.
37
+ Consequently, a reference source may sometimes be required to aid
38
+ correct identification of the standard spellings and proper vowels and
39
+ elimination of dialectal and idiosyncratic variations. In the interests
40
+ of clarity, the example columns show script with vowel pointing from
41
+ Arabic to indicate the short vowels that are included alongside the
42
+ unpointed form that will usually be encountered. However it should be
43
+ noted that the pronunciation of short vowels will vary.
44
+
45
+ Note: it is recommended that a font such as Scheherazade, available
46
+ from www.sil.org, which includes the Unicode extended Arabic sub-range,
47
+ be used to view this system. [Please note that the identification of a
48
+ particular font does not represent an endorsement of any specific
49
+ product or manufacturer.]
50
+
51
+ notes:
52
+ - |
53
+ Alif (ا) should be romanized as follows:
54
+
55
+ a. Initially, it indicates that the word begins with a vowel or
56
+ diphthong; the alif itself is not romanized, but rather the short vowel
57
+ it “carries” is romanized; e.g., ميړ أَسَلم ژرَندَه → Mī Aslam Zhrandah
58
+ b. When it carries a maddah (آ) (see vowel table, row 6), it represents ā; e.g., آب بَند → Āb Band.
59
+ c. Medially and finally it represents ā (see vowel table, row 5); e.g., ماڼۍ → Māṉêy
60
+ d. Medially and finally in words of Arabic origin, alif may serve as the bearer of hamzah, e.g. رأس → ra’s.
61
+
62
+ - Occasionally the letter sequences سه ,زه ,که, and گه occur without
63
+ intervening vowels. They may be romanized k·h, z·h, s·h, and g·h in
64
+ order to differentiate these romanizations from the digraphs kh, zh,
65
+ sh, and gh, which are used to represent the letters ش ,ژ ,خ, and غ.
66
+ Additionally, the Pashto letters څ and ځ, routinely romanized ts and
67
+ dz, may be alternatively romanized s and z تس when for special reasons
68
+ it is desired that confusion be avoided with the character sequences
69
+ (ts) and دز (dz), respectively.
70
+
71
+ - "The vagaries of written Afghan languages, as pertains to spacing
72
+ and word division, are addressed as follows:
73
+ Spaces may be added to or subtracted from Afghan words written in
74
+ Arabic script, for the purposes of standardization. This is
75
+ particularly relevant when the words are hand-written, are rendered
76
+ “art st cally”, or express other s ch non-standard flourishes, as long
77
+ as the sense of the toponym, word, or phrase is not compromised.
78
+ Romanized toponyms are typically divided into constituent words
79
+ (spaces and other grammatical rules applied) when those words can stand
80
+ independently, for purposes of standardization and minimization of
81
+ confusion, particularly in situations where Afghan writers are
82
+ inconsistent in their application of spacing and word breaks. When the
83
+ Afghan word or suffix is only used in combination with other nouns or
84
+ adjectives, then it should be appended to the preceding word in its
85
+ romanization. This includes (but is not limited to) - ābā , -zaī, -zā
86
+ ah, - ū, -wand, -gaī, -kaī, -pūr, - ēsh, -lar, -lī, -lū and ullāh, as,
87
+ for example, seen in Raḩmatābād (رحمت آباد) and Raḩmatullāh (رحمت االله),
88
+ but Raḩmat Khēl (رحمتخيل) and Raḩmat Shahr (رحمتشهر)."
89
+
90
+ - The one-letter words د (Pashto) and و (Dari) are romanized dê and
91
+ wa, respectively.
92
+
93
+ - The word الله, meaning God, should always be romanized Allāh,
94
+ except as specified in note 3. Note that the Unicode value FDF2 spells
95
+ Allāh, but omits the alif in some common fonts, including Times New
96
+ Roman. If in doubt, try in Arial Unicode MS to verify. Also note that
97
+ the “dagger al f” ( ) above the second ل (lām) n the ord الله, is not
98
+ written but should be romanized ā, like a full-size alif.
99
+
100
+ - In names of Arabic origin, the l of the definite article al s ass m
101
+ lated before the ‘s n letters’ , , , , r, z, s, sh, ş, ẕ, , z, l and n.
102
+ In its romanization, the article should be separated from the name it
103
+ precedes and should not be capitalized except at the beginning of a
104
+ name, e.g. جبل السراج→ Jabal
105
+ as Sarāj
106
+
107
+ - In Arabic names, a shaddah, ّ is used to denote the doubling of a
108
+ particular consonant character, e.g. ُم َح َمد → Muḩammad. Ho ever, n
109
+ Pashto th s ‘do bl ng’ s freq ently om tted n both Perso- Arabic script
110
+ and the resulting romanization. Guidance on doubling may be taken from
111
+ an authoritative names source, such as an Afghan government source or
112
+ Pashto dictionary; for example, it is usual to see Ḩājī without and
113
+ ‘Abbās with the doubled consonant. The doubled y consonant is almost
114
+ always retained, as in Sayyid or Qayyūm.
115
+
116
+ - In Afghan names which contain an iẕāfah, it should be romanized as
117
+ -e or –ye according to
118
+ common pronunciation, but generally, -e is used if the preceding word
119
+ ends with a consonant other
120
+ than silent heh, and -ye if the preceding word ends with a vowel
121
+ sound e.g. غر ِحصار → Ghar-e ِ
122
+ Ḩ şār; َقل َع ٔه َنو → Qal‘ah-ye Now. Scholarly sources indicate that
123
+ heh is silent in darah and qal‘ah (thus darah-ye, qal‘ah-ye), but
124
+ lightly spoken in kōh and chāh (thus kōh-e, chāh-e).
125
+
126
+ - The character sequence خو, where followed by ا or ی should be
127
+ romanized khwā or khwī, although the w is either not pronounced, or
128
+ only weakly so, as in خواجه → khwājah.
129
+
130
+ - Plural nouns ending in -hā or -ān should always be romanized as a
131
+ single word, regardless of whether a space appears in a Perso-Arabic
132
+ script source.
133
+
134
+ - Unicode values listed in the tables above are required to ensure
135
+ standardization and to minimize confusion from competing
136
+ representations of a given character. It should be noted that the
137
+ Persian Unicode value 0643 or FEDA( ك Unicode value 06A9) is
138
+ recommended rather than the Arabic( ک or FED9), the Persian گ (Unicode
139
+ value 06AF) is recommended rather than ګ (Unicode value 06AB) or ڰ
140
+ (Unicode value 06B0) or ك (Unicode value 0643 or FEDA or FED9), and the
141
+ Pashto character ځ (Unicode value 0681) is recommended rather than the
142
+ heh with a dot above and a dot below (no Unicode value). For the letter ی
143
+ in its many variations, care must be exercised to follow this romanization
144
+ guide's recommendations to eliminate confusion for search engines
145
+ and software. BGN/PCGN does not use the Unicode encoding FEEF for the
146
+ character ی in any Afghan word.
147
+
148
+ - |
149
+ An inventory of letter-diacritic combinations in addition to the
150
+ unmodified letters of the basic Roman script is:
151
+
152
+ ‘ (U+2018)
153
+ Ā (U+0100)
154
+ Á (U+00C1)
155
+ Ḏ (U+0044+0031)
156
+ Ē (U+9112)
157
+ Ê (U+00CA)
158
+ Ḩ (U+1E28)
159
+ Ī (U+012A)
160
+ N-bar-top (U+004E+0304)
161
+ Ō (U+014C)
162
+ R-bar-bottom (U+0052+0031)
163
+ Ş (U+015E)
164
+ S-bar-top (U+0053+0304)
165
+ Ṯ (U+0054+0031)
166
+ Ţ (U+0162)
167
+ Ū (U+918A)
168
+ Z-comma-bottom (U+005A+0327)
169
+ Z-bar-top (U+005A+0304)
170
+ Ẕ (U+005A+0331)
171
+ ẔH (U+005A+0048+035F)
172
+
173
+
174
+ ʼ (U+2019)
175
+ ā (U+0101)
176
+ á (U+00E1)
177
+ ḏ (U+0064+00031)
178
+ ē (U+0113)
179
+ ê (U+00EA)
180
+ ḩ (U+1E29)
181
+ ī (U+912B)
182
+ n-bar-top (U+004E+0304)
183
+ ō (U+014D)
184
+ r-bar-bottom (U+0072+0031)
185
+ ş (U+015F)
186
+ s-bar-top (U+0073+0304)
187
+ ṯ (U+0074+0031)
188
+ ţ (U+0163)
189
+ ū (U+918B)
190
+ z-comma-bottom (U+007A+0327)
191
+ z-bar-top (U+007A+0304)
192
+ ẕ (U+007A+0331)
193
+ zh-under-bar (U+007A+0068+035F)
194
+
195
+
196
+ - The Romanization columns show only lowercase forms but, when
197
+ romanizing, uppercase and lowercase Roman letters as appropriate should
198
+ be used.
199
+ }
200
+
201
+ tests {
202
+ test "بَغْلان", "Baghlān"
203
+ test "پُوټَكَى", "Pōṯakay"
204
+ test "شِيرِين تَگَاب", "Shīrīn Tagāb"
205
+ test "کُوْټ", "Kōṯ"
206
+ test "ثَابِر", "S̄ābir"
207
+ test "جَلال آبَاد", "Jalālābād"
208
+ test "چَارِيكَار", "Chārīkār"
209
+ test "ځَدْرَاڼ", "Dzadrāṉ"
210
+ test "څَوکۍ", "Tsowkêy"
211
+ test "حَضْرَتِ إِمَام", "Ḩaẕrat-e Imām"
212
+ test "خُوْسْت", "Khōst"
213
+ test "سْپِين بُوْلْدَک", "Spīn Bōldak"
214
+ test "ډَنْډ وَ پَتَان", "Ḏanḏ Wa Patān"
215
+ # - source: گُذَرْگَاهٔ نور
216
+ # expected: Guz̄argāh-e nūr
217
+ test "كَنْدَهَار", "Kandahār"
218
+ test "أَنْدَړ", "Andaṟ"
219
+ test "كُنْدُز", "Kunduz"
220
+ test "مِير أَسْلَم ژْرَنْدَه", "Mīr Aslam Zhrandah"
221
+ test "ږِيرَه", "Z͟hīrah"
222
+ test "سَمَنْگَان", "Samangān"
223
+ # - source: مَزَارِ شَريف
224
+ # expected: Mazār-e sharīf
225
+ test "كښٙتَه كَلا", "Ks͟hêtah Kalā"
226
+ test "قَيْصَار", "Qayşār"
227
+ test "فَيض آبَاد", "Faīẕābād"
228
+ test "حَضْرَتِ سُلْطَان", "Ḩaẕrat-e Sulţān"
229
+ test "ظَاهِر كَلا", "Z̧āhir Kalā"
230
+ test "پُلِ عَلَم", "Pul-e ‘Alam"
231
+ test "غَزْنِي", "Ghaznī"
232
+ test "مَزَارِ شَرِيف", "Mazār-e Sharīf"
233
+ test "قَيْصَار", "Qayşār"
234
+ test "كَنْدَهَار", "Kandahār"
235
+ test "گَرْدېز", "Gardēz"
236
+ test "کَابُل", "Kābul"
237
+ test "مَيمَنَه", "Maīmanah"
238
+ test "خَان آبَاد", "Khānābād"
239
+ test "مَاڼۍ", "Māṉêy"
240
+ test "وَاخَان", "Wākhān"
241
+ # - source: هِرَات
242
+ # expected: Herāt
243
+ test "يَنْگِي قَلعَه", "Yangī Qal‘ah"
244
+ test "جَلال آبَاد", "Jalālābād"
245
+ # - source: هِرات پُلِ حِصَار
246
+ # expected: Herāt Pul-e Ḩişār
247
+ test "مُرْغَاب کَابُل", "Murghāb Kābul"
248
+ test "گٙردُون", "Gêrdōn"
249
+ test "آب بَنْد", "Āb Band"
250
+ test "سْپِين بُوْلْدَک", "Spīn Bōldak"
251
+ # - source: بَالا بُلُوک
252
+ # expected: Bālā Bulūk
253
+ test "جَوزجَان", "Jowzjān"
254
+ # - source: غَزْنِى سْپِين
255
+ # expected: Ghaznī spīn
256
+ # - source: ريگ مَيوَنْد
257
+ # expected: Maywand, Rēg
258
+ test "گَرْدېز", "Gardēz"
259
+ test "مَیدان شَهْر", "Maīdān Shahr"
260
+ test "ډَنْډِ سُفْلىٰ", "Ḏanḏ-e Suflá"
261
+ # - source: څَوْکۍ
262
+ # expected: Tsowkêy
263
+ # - source: هَوائِي ډَگَر
264
+ # expected: Hawā’ī ḏagar
265
+ # - source: مَزارِ شَريف
266
+ # expected: Mazār-e sharīf
267
+ # - source: دايکندی
268
+ # expected: Dāykundī
269
+ # - source: زيارت
270
+ # expected: Zīārat
271
+ # - source: غوريان
272
+ # expected: Ghōriyān
273
+ # - source: ميا
274
+ # expected: Myā
275
+ test "جَبَل السَرَاج", "Jabal as Sarāj"
276
+ }
277
+
278
+ stage {
279
+ # CHARACTERS
280
+ parallel {
281
+
282
+ # word-medial or word-final form where so appearing in a word.
283
+ # '\u0627': '-'
284
+
285
+ # # Vowel, Diphthong and Diacritical Characters
286
+
287
+ # '\u064E': 'a'
288
+
289
+ # # Both e and i are available to romanize this short vowel,
290
+ # # depending on local usage and/or root language. In cases where the sound
291
+ # # is uncertain, i is the default romanization in BGN/PCGN standardization
292
+ # # procedures.
293
+ # '\u0650':
294
+ # - 'e'
295
+ # - 'i'
296
+
297
+ # # Both o and u are available to romanize this short vowel,
298
+ # # depending on local usage and/or root language. In cases where the sound
299
+ # # is uncertain, u is the default romanization in BGN/PCGN standardization
300
+ # # procedures.
301
+ # '\u064F':
302
+ # - 'o'
303
+ # - 'u'
304
+ # '\u0659': 'ê'
305
+
306
+ # # An alif with mad ( آ ) is written only in the initial position by
307
+ # # BGN/PCGN standardization procedures, in keeping with Persian language
308
+ # # family standards of use of the Arabic alphabet. The same letter written
309
+ # # in a medial or final position is written . . .
310
+ # '\u0622': 'ā'
311
+
312
+ # pending issue #442
313
+ # '\u0648': 'ō'
314
+ # '\u0648': 'ū'
315
+ # '\u0648': 'ow'
316
+ # '\u06CC': 'ī'
317
+
318
+ # # Or 'ē'. The character ی should be romanized ay or ē according to
319
+ # # its root language or local pronunciation. In case of uncertainty a
320
+ # # reference source (such as the Fairchild Aerial Surveys map series, or a
321
+ # # BGN/PCGN approved policy document/list of recommended spellings) should
322
+ # # be consulted.
323
+ # '\u06CC': 'ay'
324
+ # '\u06D0': 'ē'
325
+
326
+ # # Or 'aī'. Both the combination ay and aī are available to romanize
327
+ # # this character according to its root language or local pronunciation.
328
+ # # In cases where the sound is uncertain ay is the default romanization in
329
+ # # BGN/PCGN standardization procedures
330
+ # '\u06CC':
331
+ # - 'ay'
332
+ # - 'á'
333
+ # '\u06CD': 'êy'
334
+ # '\u0621': '’'
335
+ # '\u0674':
336
+ # - '-e'
337
+ # - '-ye'
338
+
339
+ # # Other Diacritical Marks and Language Conventions
340
+
341
+ # '\u0627': 'āy'
342
+
343
+ # '\u0648': 'w'
344
+ # '\u0626': '’'
345
+ # '\u06C0': ''
346
+ # '\u0651': ''
347
+
348
+
349
+ # special rules
350
+
351
+ sub space, "", after: "\u0622\u0628\u064E\u0627\u062F" # space followed by abad is removed
352
+ sub "\ufdf2", "Allāh" # See note 5
353
+
354
+ # pointing
355
+ sub "\u064e", "a" # َ fatha
356
+ sub "\u064e", "", after: "\u0629" # َ fatha followed by ta' marboota
357
+ sub "\u064e", "", after: "a" + any("ht") # َ fatha followed by ta' marboota, handling different order of conversion
358
+
359
+ # Both e and i are available to romanize this short vowel,
360
+ # depending on local usage and/or root language. In cases where the sound
361
+ # is uncertain, i is the default romanization in BGN/PCGN standardization
362
+ # procedures.
363
+ sub "\u0650", any("ie")
364
+ sub "\u0650" + boundary, "-e" # ِ kasra
365
+
366
+ # Both o and u are available to romanize this short vowel,
367
+ # depending on local usage and/or root language. In cases where the sound
368
+ # is uncertain, u is the default romanization in BGN/PCGN standardization
369
+ # procedures.
370
+ sub "\u064f", any("uo") # ُ damma
371
+
372
+ sub "\u0652", "" # ْ sokoon
373
+ sub "\u0659", "ê"
374
+
375
+ # special pointed letters
376
+ sub "\u0639\u064e", "‘a" # عَ
377
+ sub "\u0639\u0650", "‘i" # عِ
378
+ sub "\u0639\u064f", "‘ū" # عُ
379
+ # handle MacOS regex difference
380
+ sub "\u0639\u064f\u0648", "‘ū" # عُو damma followed by و
381
+
382
+ sub "\u0650\u064a", "ī" # ـِي kasra followed by ي
383
+ sub "\u0650\u06cc", "ī" # ـِي kasra followed by ي
384
+ sub "\u0650\u064a\u0651\u064e", "īy" # ـِيَّ
385
+ sub "\u0650\u064a", "iy", after: any(["\u064e", "u064f"]) # ـِي kasra followed by ي
386
+ sub "\u064f\u0648", "ō" # ـُو damma followed by و
387
+ sub "\u064e\u0627", "ā" # ـَا fatha followed by ا
388
+ sub "\u064e\u0649", "ay" # ـَى fatha followed by ى which is ا not ي
389
+ sub "\u064e\u0648\u0652", "aw" # ـَوْ
390
+ sub "\u064e\u0648", "ow" # ـَو
391
+ sub "\u064e\u064a\u0652", "ay" # ـَيْ
392
+ sub "\u0650\u06cc\u0651\u064e", "īy" # ـِيَّ
393
+ sub "\u064e\u064a", "aī" # ـَي
394
+ sub "\u064e\u06cc", "aī" # ـَي
395
+ sub "\u0649\u0670", "á" # ىٰ
396
+ sub "\u0674", "-e" # ٴ
397
+ sub "\u0654", "-e" # ٔ
398
+ # - '-ye'
399
+
400
+ # An alif with mad ( آ ) is written only in the initial position by
401
+ # BGN/PCGN standardization procedures, in keeping with Persian language
402
+ # family standards of use of the Arabic alphabet. The same letter written
403
+ # in a medial or final position is written . . .
404
+ sub "\u0622", "ā" # آ
405
+
406
+ # ta' marboota
407
+ sub "\u0629", "at" # ة in the middle of the sentence
408
+ sub "\u0629" + line_end, "ah"
409
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
410
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
411
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
412
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
413
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
414
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
415
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
416
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
417
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
418
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
419
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
420
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
421
+
422
+ # shadda
423
+
424
+ sub "\u0628\u0651", "bb" # ب
425
+ sub "\u062a\u0651", "tt" # ت
426
+ sub "\u062b\u0651", "thth" # ث
427
+ sub "\u062c\u0651", "jj" # ج
428
+ sub "\u062d\u0651", "ẖẖ" # ح
429
+ sub "\u062e\u0651", "khkh" # خ
430
+ sub "\u062f\u0651", "dd" # د
431
+ sub "\u0630\u0651", "z̄z̄" # ذ
432
+ sub "\u0631\u0651", "rr" # ر
433
+ sub "\u0632\u0651", "zz" # ز
434
+ sub "\u0633\u0651", "ss" # س
435
+ sub "\u0634\u0651", "sh" # ش
436
+ sub "\u0635\u0651", "şş" # ص
437
+ sub "\u0636\u0651", "ḏḏ" # ض
438
+ sub "\u0637\u0651", "ţţ" # ط
439
+ sub "\u0638\u0651", "z̧z̧" # ظ
440
+ sub "\u063a\u0651", "ghgh" # غ
441
+ sub "\u0641\u0651", "ff" # ف
442
+ sub "\u0642\u0651", "qq" # ق
443
+ sub "\u0643\u0651", "kk" # ك
444
+ sub "\u0644\u0651", "ll" # ل
445
+ sub "\u0645\u0651", "mm" # م
446
+ sub "\u0646\u0651", "nn" # ن
447
+ sub "\u0647\u0651", "hh" # ه
448
+ sub "\u0648\u0651", "ww" # و
449
+ sub "\u064a\u0651", "yy" # ي
450
+
451
+
452
+ sub "\u0621", "’" # ء
453
+ sub "\u0626", "’" # ئ
454
+
455
+ sub "\u0623", "" # أ
456
+ sub "\u0625", "" # إ
457
+ sub "\u0627", "ā" # ا
458
+
459
+ # See note B
460
+ sub boundary + "\u0627\u0644", "al " # ال
461
+ # '\uFE8E' : '' # ﺎ
462
+
463
+ # Sun letters
464
+ sub boundary + "\u0627\u0644\u062a", "at t" # الت
465
+ sub boundary + "\u0627\u0644\u062b", "as̄ s̄" # الث
466
+ sub boundary + "\u0627\u0644\u062f", "ad d" # الد
467
+ sub boundary + "\u0627\u0644\u0630", "az̄ z̄" # الذ
468
+ sub boundary + "\u0627\u0644\u0631", "ar r" # الر
469
+ sub boundary + "\u0627\u0644\u0632", "az z" # الز
470
+ sub boundary + "\u0627\u0644\u0633", "as s" # الس
471
+ sub boundary + "\u0627\u0644\u0634", "ash sh" # الش
472
+ sub boundary + "\u0627\u0644\u0635", "aş ş" # الص
473
+ sub boundary + "\u0627\u0644\u0636", "aẕ ẕ" # الض
474
+ sub boundary + "\u0627\u0644\u0637", "aţ ţ" # الط
475
+ sub boundary + "\u0627\u0644\u0638", "az̧ z̧" # الظ
476
+ sub boundary + "\u0627\u0644\u0644", "al l" # الل
477
+ sub boundary + "\u0627\u0644\u0646", "an n" # الن
478
+
479
+
480
+ # consonant characters
481
+
482
+ sub "\u0628", "b" # ب
483
+ sub "\u067E", "p" # پ
484
+ sub "\u062a", "t" # ت
485
+ sub "\u067C", "ṯ" # ټ
486
+ sub "\u062B", "s̄" # ث
487
+ sub "\u062c", "j" # ج
488
+ sub "\u0686", "ch" # ‫چ‬
489
+
490
+ # # The variant form ج is seen infrequently and does not have a
491
+ # # single Unicode encoding.
492
+ sub "\u0681", "dz" # Note 2 # ‫ځ‬
493
+
494
+ sub "\u0685", "ts" # Note 2 # ‫څ
495
+
496
+ sub "\u062d", "ḩ" # ح
497
+ sub "\u062e", "kh" # خ
498
+ sub "\u062f", "d" # د
499
+ sub "\u0689", "ḏ" # ‫ډ‬
500
+ sub "\u0630", "z̄" # ذ
501
+ sub "\u0631", "r" # ر
502
+ sub "\u0693", "ṟ" # ړ
503
+ sub "\u0632", "z" # ز
504
+ sub "\u0698", "zh" # ‫ژ‬
505
+ sub "\u0696", "z͟h" # ږ
506
+ sub "\u0633", "s" # س
507
+ sub "\u069A", "s͟h" # ښ
508
+ sub "\u0634", "sh" # ش
509
+ sub "\u0635", "ş" # ص
510
+ sub "\u0636", "ẕ" # ض
511
+ sub "\u0637", "ţ" # ط
512
+ sub "\u0638", "z̧" # ظ
513
+ sub "\u0639", "‘" # ع
514
+ sub "\u063a", "gh" # غ
515
+ sub "\u0641", "f" # ف
516
+ sub "\u0642", "q" # ق
517
+ sub "\u0643", "k" # ك
518
+ sub "\u06A9", "k" # ک
519
+ sub "\u06AF", "g" # ‫گ‬
520
+ sub "\u0644", "l" # ل
521
+ sub "\u0645", "m" # م
522
+ sub "\u0646", "n" # ن
523
+ sub "\u06BC", "ṉ" # ڼ
524
+ sub "\u0647", "h" # ه
525
+ sub "\u0648", "w" # و
526
+ sub "\u064a", "y" # ي
527
+ sub "\u0649", "y" # ي
528
+ sub "\u06D0", "ē" # ې
529
+ sub "\u06CD", "êy" # ‫ۍ‬
530
+ }
531
+
532
+ # POSTRULES
533
+ sub any("\u0061".."\uFFFF"), upcase, before: boundary, not_before: boundary + any("‘’'-")
534
+ # don't capitalize defined article in the middle of a sentence
535
+ sub " At T", " at T" # الت
536
+ sub " As̄ S̄", " as̄ S̄" # الث
537
+ sub " Ad D", " ad D" # الد
538
+ sub " Az̄ Z̄", " az̄ Z̄" # الذ
539
+ sub " Ar R", " ar R" # الر
540
+ sub " Az Z", " az Z" # الز
541
+ sub " As S", " as S" # الس
542
+ sub " Ash Sh", " ash Sh" # الش
543
+ sub " Aş Ş", " aş Ş" # الص
544
+ sub " Aẕ Ẕ", " aẕ Ẕ" # الض
545
+ sub " Aţ Ţ", " aţ Ţ" # الط
546
+ sub " Az̧ Z̧", " az̧ Z̧" # الظ
547
+ sub " Al L", " al L" # الل
548
+ sub " An N", " an N" # الن
549
+ sub " Al ", " al " # ال
550
+
551
+ compose
552
+ }