interscript-maps 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
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
+ }