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,472 @@
1
+ metadata {
2
+ authority_id: bgnpcgn
3
+ id: 1956
4
+ language: iso-639-2:ara
5
+ source_script: Arab
6
+ destination_script: Latn
7
+ name: ROMANIZATION OF ARABIC -- BGN/PCGN 1956 System
8
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/858000/ROMANIZATION_OF_ARABIC.pdf
9
+ creation_date: 1956
10
+ confirmation_date: 2019-12
11
+ description: |
12
+
13
+ This System was adopted by the BGN in 1946 and by the PCGN in 1956 and is applied by BGN and PCGN in the systematic romanization of Arabic geographical names in Bahrain, Egypt, Iraq, Jordan, Kuwait, Libya, Oman, Qatar, Saudi Arabia, Syria, the United Arab Emirates, Yemen, the West Bank and Gaza Strip.
14
+
15
+ Uniform results in the romanization of Arabic are difficult to obtain, since vowel points and diacritical marks are generally omitted from both handwriting and printed script. It follows that for correct identification of the words which appear in any particular name, knowledge of its standard Arabic-script spelling including proper pointing, and recognition of dialectal and idiosyncratic deviations are essential.
16
+
17
+ In order to bring about uniformity in the Roman-script spelling of geographical names in Arabic-language areas, the system is based insofar as possible on fully pointed Modern Standard Arabic (MSA). In the interest of clarity, vowel pointing to indicate short vowels has been applied to the examples given below, and examples of the, more usual, unpointed script have also been provided; it should also be noted that the dots which occur on some characters of the Arabic script are not vowels but rather are an integral part of the base consonant.
18
+
19
+ Arabic script is written from right to left, and does not make a distinction between upper and lower case.
20
+
21
+
22
+
23
+ notes: |
24
+
25
+ - (NOTE 1) The symbol ◌ is used in this system to symbolise any Arabic consonant character. It is not itself an Arabic letter.
26
+
27
+ - (NOTE 2) Hamzah (ء) is written in Arabic in association with most instances of initial alif, except those which belong to the definite article al or which bear a maddah (see note 9). Hamzah is written above the alif ( أَ) if the accompanying short vowel is a fatḩah or ḑammah and usually below the alif( أ ) if the accompanying short vowel is a kasrah.
28
+ When the purpose is to indicate the presence of a glottal stop, hamzah is written over medial alif ( أ ), wāw (ؤ) and yā’, typically without dots (ئ); or following final alif ( أ ء ), these characters serving only to “bear” the hamzah. Hamzah following kasrah ( ) is written (ئ); the yā’ is usually in the initial or medial form and the dots are omitted e.g. bi’r ( بئ ر ).
29
+ Hamzah following ḑammah ( ) is written (ؤ). Hamzah following a long vowel is written without a bearer and is positioned on the line of print like a regular character, e.g. صنعاء Şan‘ā’. The romanization of hamzah (’ - Unicode encoding 2019) should always be carefully distinguished from that of ‘ayn (‘ - Unicode encoding 2018).
30
+
31
+ - (NOTE 3) Alif (ا) occurs with the following uses
32
+ a. Initially, it indicates that the word begins with a vowel or diphthong; the alif itself is not romanized, but rather “carries” the short vowel, which is romanized; e.g., ظب ي أبو → Abū Z̧aby.
33
+
34
+ b. With maddah (آ – row 18 in the vowel table), it is represented ā; e.g., مُ عيط آلب و → Ālbū Mu‘ayţ. See also note 9.
35
+
36
+ c. Medially and finally it is represented ā; e.g., ب ا ب → Bāb, صيدا → Şaydā.
37
+
38
+ d. Medially and finally, alif may serve as the bearer of hamzah, e.g. رأس → ra’s. See also note 2.
39
+
40
+ - (NOTE 4) The tā’ marbūţah character (ة), which looks like hā’ with two dots above and occurs only at the end of words, is romanized h, except in an iḑāfah noun phrase construction, where it is romanized t, in accordance with pronunciation. e.g. Muḩāfaz̧ah (as an isolated word) but Muḩāfaz̧at Baghdād. In exceptional cases, when it is necessary to distinguish it from the tā’ marbūţah, the ending fatḩah + hā’ ( ه ) may be romanized a·h when the character hā’ (ه) is pronounced as such. Example Muntaza·h. (see also special rule 13). The tā marbūţah is always preceded by the short vowel fatḩah ( ) and is therefore romanized as ah or at, except when it is preceded by alif when it is romanized āh (not āah), e.g. Ḩamāh (حماة ), and as āt within an iḑāfah construction.
41
+
42
+ - (NOTE 5) The character yā’ (in final form but without dots) preceded by the vowel point fatḩah is known as alif maqşūrah. This character may also be pointed ى and should be romanized á. See character 7 in the vowel table.
43
+
44
+ - (NOTE 6) The classical Arabic grammatical endings written with the nunation symbols (tanwīn) may be romanized, when necessary, by an, in, un. In modern spoken Arabic, these endings have become silent and should not be romanized e.g. classical alifun; modern alif.
45
+
46
+ - (NOTE 7) Doubled consonant sounds are represented in Arabic script by placing a shaddah ( ) over a consonant character, although like the short vowels the shaddah may not always be written. In romanization the letter should be doubled, e.g. Quwwah, ‘Abbās. However, the combination of the consonant character yā’ with a shaddah preceded by a kasrah ( ي ) at the end of a word is romanized ī, e.g. Gharbī; a word ending kasrah + yā’ with a shaddah + tā’ marbūţah is romanized īyah (rather than iyyah), e.g. ال س ل يمانِ ية
47
+ is romanized As Sulaymānīyah and not As Sulaymāniyyah; and when the kasrah + yā’ + shaddah combination is followed by the sound masculine plural ending ( يين or يون ) it should be romanized as –īyīn/īyūn, e.g. ساحة العباسيين should be romanized as Sāḩat al ‘Abbāsīyīn.
48
+
49
+ - (NOTE 8) Hamzat al waşl (ٱ), which is utilized only in the pointing of classical Arabic, is romanized ’ as illustrated in the classical form of its name hamzatu’l waşli.
50
+
51
+ - (NOTE 9) Since maddah ( أ ), which is placed over alif ( أ ), often occurs in word-initial position, no confusion results from the use of ā for alif maddah ( أ ) as well as for fatḩah followed by alif ( اَ ).
52
+
53
+ - (NOTE 10) The ligature ل ا represents lām-alif, and should be romanized lā.
54
+
55
+ - (NOTE 11) In word initial position the combination Alif +Wāw (او ) is sometimes used to render an initial long vowel sound in words of non-Arabic origin. Where this is clearly the case it should be romanized Ū. In words of Arabic or uncertain origin it should be romanized Aw. In word-medial or word-final position it should always be romanized āw. Similarly the combination Alif +Yā’ (اي ) is romanized Ī to render an initial long vowel sound but as āy in word-medial or word-final position.
56
+
57
+ # SPECIAL RULES
58
+
59
+ - The Arabic definite article al (ال ) should be treated as follows |
60
+ a. Initial definite articles should be capitalized and hyphens should not be used to connect parts of names, e.g. Ash Shāriqah. When appearing medially in a name the initial ‘a’ should be lower case, e.g. Tall al Laḩm.
61
+
62
+ b. When the definite article precedes a word beginning with one of the “sun letters” t, th, d, dh, r, z, s, sh, ş, ḑ, ţ, z̧, l, or n – the l is assimilated in pronunciation and romanization, thus yielding, for example, the romanization Ar Riyāḑ, rather than Al Riyāḑ for ال ريا ض .
63
+
64
+ c. If sources contradict over the inclusion or non-inclusion of the definite article in a name, preference should be given to the form with the article.
65
+
66
+ - Conjunctions and prepositions should be romanized according to their written form in Arabic script and should be lower case. In cases where the conjunction or preposition ends in a long or short vowel any assimilated pronunciation should not be shown in the romanized form. e.g. Khabb wa ash Sha‘f (خب والشعف ). |
67
+
68
+ There are two exceptions to this rule
69
+
70
+ a. In the case of the preposition li (ل), where the alif of the definite article is assimilated in the written form as well as pronunciation, the written form should be shown in romanization as follows Mişr liţ Ţayarān (مصر للطيران ); Ash Sharikah al ‘Āmmah lil Maghāzil (الشركة العامة للمغازل ).
71
+
72
+ b. In the case of the preposition bi (ب), the alif of the definite article is assimilated in pronunciation and, although the alif remains in the written form the short vowel it carries changes from ‘a’ to ‘i’. For example Al Qaryah bid Duwayr (القرية بالدوير ) but Ad Duwayr (الدوير ); and Al Ḩarajah bil Qur’ān (الحرجة بالقرآن ) but Al Qur’ān (القرآن ).
73
+
74
+
75
+ - The Arabic word for God ( لله) should be written Allāh. The alif khanjarīyah (dagger alif) ( ) above the second ل (lām) in the word لله , like the short vowels, is not usually written but should be romanized ā, like a full-size alif. This diacritical mark appears in a few other Arabic words, for instance on the alif maqşūrah as described in note 5.
76
+
77
+ - Names which consist of noun phrases (see also note 4) should be written as separate words. The definite article within such names should be romanized al, not ul, e.g., ‘Abd Allāh, ‘Abd ar Raḩmān, Dhū al Faqār, and as noted in special rule 1, the medial al should be lower case.
78
+
79
+ - The Arabic word ب ن should be romanized Bin rather than Ibn whenever written without alif, that is between two proper nouns, e.g., ‘Umar Bin al Khaţţāb. Where it appears with alif ( )اب ن , it should be romanized Ibn.
80
+
81
+ - The Turkish word Paşa should be romanized from Arabic script as Bāshā. The Turkish word Bey should be romanized as Bey in Egyptian names, no matter how it is written in Arabic-language sources, but in other Arabic areas it should be romanized as Bak where written بك and as Bayk when written بيك .
82
+
83
+ - The modern colloquial word Sīdī (سيدي ) should be give precedence over the classical form Sayyidī. This does not preclude the spelling Sayyidī if the latter is indicated by the Arabic script or other evidence – for instance, if the yā’ is written with a shaddah ( ).
84
+
85
+ - The colloquial word Bū should not be changed to the standard form Abū.
86
+
87
+ - The colloquial word for water, written مي ة on Arabic maps, should be romanized Mayyat.
88
+
89
+ - Place names of Aramaic origin in Syria often contain initial consonant clusters consisting of b plus another consonant such as l or h. In romanization, the clusters bl, bh, etc., should be so represented.
90
+
91
+ - In names containing the Arabic word for back, ridge, or hill, appearing as either ظهر (Z̧ahr) or ضه ر (Ḑahr) in Arabic sources, the word should be romanized to reflect the particular Arabic spelling shown. Where sources differ, preference should be given to the form found on the most authoritative source.
92
+
93
+ - In formal Arabic, the spelling of some words ending in a long vowel character may change according to that word’s grammatical function in a sentence. For example, the personal name Abū Bakr (ابو بكر ) would become Abī Bakr (ابي بكر ) when preceded by a generic in an iḑāfah construction (used in Moroccan Arabic Script) e.g. Shāri‘ Abī Bakr (شارع ابي بكر – Abu Bakr Street). The spelling of such words as found on the most authoritative source should be used in the romanized form of the name. Other common words affected by this rule are Banū/Banī (sons of…) and Dhū/Dhī (owner of ...). Examples of names in this category include Jabal Abā aş Şabbān (جبل ابا الصبان ) and Muḩāfaz̧at Dhī Qār ( محافظة ذي قار ).
94
+
95
+ - Occasionally the character sequences ك ه , ده , س ه , and ت occur. They may be romanized k·h, d·h, s·h, and t·h in order to differentiate these romanizations from the digraphs kh, dh, sh, and th, which are used to represent the characters خ, ذ, ش, and ث respectively. See also note 4.
96
+ }
97
+
98
+ tests {
99
+ test "قُرآن", "Qur’ān"
100
+ test "أَبُو ظَبْي", "Abū Z̧aby"
101
+ test "بِئْر زَيْت", "Bi’r Zayt"
102
+ test "أُمّ العَمَد", "Umm al ‘Amad"
103
+ test "البَحرَيْن", "Al Baḩrayn"
104
+ test "الكُوت", "Al Kūt"
105
+ test "الثُّلَيثُوَات", "Ath Thulaythuwāt"
106
+ test "الجَزِيرَة", "Al Jazīrah"
107
+ test "المَحْمُودِيَّة", "Al Maḩmūdīyah"
108
+ test "خَيْبَر", "Khaybar"
109
+ test "دَمَنْهُور", "Damanhūr"
110
+ test "ذَهَب", "Dhahab"
111
+ test "الرَّوْضة", "Ar Rawḑah"
112
+ test "زُوَارَة", "Zuwārah"
113
+ test "السُّلَيْمانِيَّة", "As Sulaymānīyah"
114
+ test "الشَّام", "Ash Shām"
115
+ test "قَيْصُومَة", "Qayşūmah"
116
+ test "ضَوْر", "Ḑawr"
117
+ test "القُنَيْطِرَة", "Al Qunayţirah"
118
+ test "ظُفَار", "Z̧ufār"
119
+ test "أَبُو عَرِيش", "Abū ‘Arīsh"
120
+ test "بَغْداد", "Baghdād"
121
+ test "الفُرات", "Al Furāt"
122
+ test "قَطَر", "Qaţar"
123
+ test "الكُوَيْت", "Al Kuwayt"
124
+ test "حَلَب", "Ḩalab"
125
+ test "مَكَّة", "Makkah"
126
+ test "نَخْل", "Nakhl"
127
+ test "جَبَل هارُون", "Jabal Hārūn"
128
+ test "وادِي غَضَا", "Wādī Ghaḑā"
129
+ test "اليَمَن", "Al Yaman"
130
+ test "القاهِرَة", "Al Qāhirah"
131
+ test "المَدِينَة المُنَوَّرَة", "Al Madīnah al Munawwarah"
132
+ test "مُحَافَظَة دِمَشْق", "Muḩāfaz̧at Dimashq"
133
+ test "البَصْرَة", "Al Başrah"
134
+ test "الرِّيَاض", "Ar Riyāḑ"
135
+ test "القُدْس", "Al Quds"
136
+ test "بَاب المَنْدَب", "Bāb al Mandab"
137
+ test "المَدِينة", "Al Madīnah"
138
+ test "صُور", "Şūr"
139
+ test "مَرْسَىٰ مَطْرُوح", "Marsá Maţrūḩ"
140
+ test "صَيْدَا", "Şaydā"
141
+ test "الدَّوحَة", "Ad Dawḩah"
142
+ test "مُحَمَّد", "Muḩammad"
143
+ test "أُوزُونْلَار", "Ūzūnlār"
144
+ test "أَوْسَط", "Awsaţ"
145
+ test "سَنَاو", "Sanāw"
146
+ test "اِيرَان", "Īrān"
147
+ test "تَلّ السَّرَاي", "Tall as Sarāy"
148
+ test "آلْبُو مُعَيْط", "Ālbū Mu‘ayţ"
149
+ test "سَلْمان پَاك", "Salmān Pāk"
150
+ test "تَلّ كُوچِك الصَّغِير", "Tall Kūchik aş Şaghīr"
151
+ # - source: مَزََّة ڤِيلَّات غَرْبِيَّة
152
+ # expected: Mazzah Vīllāt Gharbīyah
153
+ test "ڨَفْصَة", "Gafşah"
154
+ test "تَلّ گَمْر", "Tall Gamr"
155
+ test "زَاڴُورَة", "Zāgūrah"
156
+ test "اِيران", "Īrān"
157
+ }
158
+
159
+ stage {
160
+ # CHARACTERS
161
+ parallel {
162
+
163
+ # Modified/Non-Standard Arabic Script Characters
164
+
165
+ sub "\u067E", "p"
166
+ sub "\u0686", "ch"
167
+ sub "\u06A4", "v"
168
+ # Used in Tunisian Arabic Script.
169
+ sub "\u06A8", "g"
170
+ # Used principally in Iraq, but also sometimes used in other Arabic speaking countries to represent the ‘g’ sound.
171
+ sub "\u06AF", "g"
172
+ # Used in Moroccan Arabic Script.
173
+ sub "\u06B4", "g" # ڭ
174
+ sub "\u06AD", "g"
175
+
176
+
177
+
178
+ # pointing
179
+
180
+
181
+ # Note 11
182
+ sub boundary + "\u0627\u0648", "ū" #او
183
+ sub boundary + "\u0627\u0648\u0652", "aw" # اوْ
184
+ sub "\u0627\u0648", "āw" #او in word medial or final position
185
+
186
+ sub boundary + "\u0627\u064A", "ī" # اي in word initial position (see Note 11)
187
+ sub "\u0627\u064A", "āy" # اي in word medial or final position
188
+
189
+
190
+ sub "\u064e", "a" # َ fatha
191
+ sub "\u064e", "", after: "\u0629" # َ fatha followed by ta' marboota
192
+ sub "\u064e", "", after: "a" + any("ht") # َ fatha followed by ta' marboota, handling different order of conversion
193
+ sub "\u0650", "i" # ِ kasra
194
+ sub "\u064f", "u" # ُ damma
195
+
196
+ sub "\u064e\u0627", "ā" # ـَا fatha followed by ا
197
+ sub "\u0650\u064a", "ī" # ـِي kasra followed by ي
198
+ sub "\u064f\u0648", "ū" # ـُو damma followed by و
199
+ sub "\u064f\u0648", "uw", after: any("\u064e\u064f") # ـِي kasra followed by ي
200
+ sub "\u064e\u0649", "á" # ـَى fatha followed by ى which is ا not ي Note 5
201
+ sub "\u064e\u0649\u0670", "á" # Note 5
202
+ sub "\u0649\u0670", "á" # See Note 5
203
+ sub "\u0652", "" # ْ sokoon, not romanized, Indicates absence of short vowel
204
+ sub "\u064e\u064a\u0652", "ay" # ـَيْ
205
+ sub "\u064e\u064a", "ay", before: "\u0644" # ـَيْ
206
+ sub "\u064e\u064a", "aī" # ـَي
207
+
208
+ sub "\u064e\u0648" + maybe("\u0652"), "aw", not_after: "\u0651" # ـَوْ
209
+ sub "\u064b", "" # See Note 6
210
+ sub "\u064d", "" # See Note 6
211
+ sub "\u064c", "" # See Note 6
212
+
213
+
214
+ # special pointed letters
215
+ sub "\u0639\u064e", "‘a" # عَ
216
+ sub "\u0639\u0650", "‘i" # عِ
217
+ sub "\u0639\u064f", "‘ū" # عُ
218
+
219
+ # Note 2
220
+ sub "\u0623", ""
221
+ # '\u0623\u064e' : 'a' # أَ
222
+ # '\u0625\u0650' : 'i' # إِ
223
+ # '\u0623\u064f' : 'u' # أُ
224
+ # '\u0623\u064f\u0648' : 'ū' # أُ
225
+
226
+ # handle MacOS regex difference
227
+ sub "\u0639\u064f\u0648", "‘ū" # عُو damma followed by و
228
+
229
+ sub "\u0650\u064a\u0651\u064e", "īy" # ـِيَّ
230
+ sub "\u0650\u064a", "iy", after: any("\u064e\u064f") # ـِي kasra followed by ي
231
+
232
+ # not romanized in word-initial position (see Note 2)
233
+ sub "\u0621", "’"
234
+
235
+ sub boundary + "\u0622", "ā" # آ in word initial position (see Notes 3 and 9)
236
+ sub "\u0622", "’ā" # آ in word medial position (see Notes 3 and 9)
237
+ sub "\u0671", "’" # See Note 8
238
+ sub "\u0626", "’" # ئ
239
+ sub "\u0627", "ā" # See Notes 3 and 10
240
+
241
+ sub boundary + "\u0627\u0648", "ū" # اُ
242
+ sub boundary + "\u0627\u0650\u064a", "ī" # اي
243
+ sub boundary + "\u0627\u0644", "al " # ال
244
+
245
+ # Sun letters
246
+
247
+ sub boundary + "\u0627\u0644\u062a" + maybe("\u0651"), "at t" # الت
248
+ sub boundary + "\u0627\u0644\u062b" + maybe("\u0651"), "ath th" # الث
249
+ sub boundary + "\u0627\u0644\u062f" + maybe("\u0651"), "ad d" # الد
250
+ sub boundary + "\u0627\u0644\u0630" + maybe("\u0651"), "adh dh" # الذ
251
+ sub boundary + "\u0627\u0644\u0631" + maybe("\u0651"), "ar r" # الر
252
+ sub boundary + "\u0627\u0644\u0632" + maybe("\u0651"), "az z" # الز
253
+ sub boundary + "\u0627\u0644\u0633" + maybe("\u0651"), "as s" # الس
254
+ sub boundary + "\u0627\u0644\u0634" + maybe("\u0651"), "ash sh" # الش
255
+ sub boundary + "\u0627\u0644\u0635" + maybe("\u0651"), "aş ş" # الص
256
+ sub boundary + "\u0627\u0644\u0636" + maybe("\u0651"), "aḑ ḑ" # الض
257
+ sub boundary + "\u0627\u0644\u0637" + maybe("\u0651"), "aţ ţ" # الط
258
+ sub boundary + "\u0627\u0644\u0638" + maybe("\u0651"), "az̧ z̧" # الظ
259
+ sub boundary + "\u0627\u0644\u0644" + maybe("\u0651"), "al l" # الل
260
+ sub boundary + "\u0627\u0644\u0646" + maybe("\u0651"), "an n" # الن
261
+
262
+ # shadda Note 7
263
+
264
+ sub "\u0628\u0651", "bb" # ب
265
+ sub "\u062a\u0651", "tt" # ت
266
+ sub "\u062b\u0651", "thth" # ث
267
+ sub "\u062c\u0651", "jj" # ج
268
+ sub "\u062d\u0651", "ḩḩ" # ح
269
+ sub "\u062e\u0651", "khkh" # خ
270
+ sub "\u062f\u0651", "dd" # د
271
+ sub "\u0630\u0651", "dhdh" # ذ
272
+ sub "\u0631\u0651", "rr" # ر
273
+ sub "\u0632\u0651", "zz" # ز
274
+ sub "\u0633\u0651", "ss" # س
275
+ sub "\u0634\u0651", "sh" # ش
276
+ sub "\u0635\u0651", "şş" # ص
277
+ sub "\u0636\u0651", "ḑḑ" # ض
278
+ sub "\u0637\u0651", "ţţ" # ط
279
+ sub "\u0638\u0651", "z̧z̧" # ظ
280
+ sub "\u063a\u0651", "ghgh" # غ
281
+ sub "\u0641\u0651", "ff" # ف
282
+ sub "\u0642\u0651", "qq" # ق
283
+ sub "\u0643\u0651", "kk" # ك
284
+ sub "\u0644\u0651", "ll" # ل
285
+ sub "\u0645\u0651", "mm" # م
286
+ sub "\u0646\u0651", "nn" # ن
287
+ sub "\u0647\u0651", "hh" # ه
288
+ sub "\u0648\u0651", "ww" # و
289
+ sub "\u064a\u0651", "yy" # ي
290
+
291
+ # ta' marboota See Note 4
292
+ # TODO: shorten this fragment
293
+ sub "\u0629", "at" # ة in the middle of the sentence
294
+ sub "\u0629" + line_end, "ah"
295
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
296
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
297
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
298
+ sub "\u0629", "ah", before: boundary + "\u0627\u0644" + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff") + any("\u0600".."\u06ff")
299
+ 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")
300
+ 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")
301
+ 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")
302
+ 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")
303
+ 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")
304
+ 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")
305
+ 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")
306
+ 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")
307
+
308
+
309
+ # standard consonant characters
310
+
311
+ sub "\u0628", "b" # ب
312
+ sub "\uFE91", "b" # ﺑ
313
+ sub "\uFE92", "b" # ﺒ
314
+ sub "\uFE90", "b" # ﺐ
315
+
316
+ sub "\u062a", "t" # ت
317
+ sub "\ufe97", "t" # ﺗ
318
+ sub "\ufe98", "t" # ﺘ
319
+ sub "\ufe96", "t" # ﺖ
320
+
321
+ sub "\u062b", "th" # ث
322
+ sub "\ufe9b", "th" # ﺛ
323
+ sub "\ufe9c", "th" # ﺜ
324
+ sub "\ufe9a", "th" # ﺚ
325
+
326
+ sub "\u062c", "j" # ج
327
+ sub "\ufe9f", "j" # ﺟ
328
+ sub "\ufea0", "j" # ﺠ
329
+ sub "\ufe9e", "j" # ﺞ
330
+
331
+ sub "\u062d", "ḩ" # ح
332
+ sub "\ufea3", "ḩ" # ﺣ
333
+ sub "\ufea4", "ḩ" # ﺤ
334
+ sub "\ufea2", "ḩ" # ﺢ
335
+
336
+ sub "\u062e", "kh" # خ
337
+ sub "\ufea7", "kh" # ﺧ
338
+ sub "\ufea8", "kh" # ﺨ
339
+ sub "\ufea6", "kh" # ﺦ
340
+
341
+ sub "\u062f", "d" # د
342
+ sub "\ufeaa", "d" # ﺪ
343
+
344
+ sub "\u0630", "dh" # ذ
345
+ sub "\ufeac", "dh" # ﺬ
346
+
347
+ sub "\u0631", "r" # ر
348
+ sub "\ufeae", "r" # ﺮ
349
+
350
+ sub "\u0632", "z" # ز
351
+ sub "\ufeb0", "z" # ﺰ
352
+
353
+ sub "\u0633", "s" # س
354
+ sub "\ufeb3", "s" # ﺳ
355
+ sub "\ufeb4", "s" # ﺴ
356
+ sub "\ufeb2", "s" # ﺲ
357
+
358
+ sub "\u0634", "sh" # ش
359
+ sub "\ufeb7", "sh" # ﺷ
360
+ sub "\ufeb8", "sh" # ﺸ
361
+ sub "\ufeb6", "sh" # ﺶ
362
+
363
+ sub "\u0635", "ş" # ص
364
+ sub "\ufebb", "ş" # ﺻ
365
+ sub "\ufebc", "ş" # ﺼ
366
+ sub "\ufeba", "ş" # ﺺ
367
+
368
+ sub "\u0636", "ḑ" # ض
369
+ sub "\ufebf", "ḑ" # ﺿ
370
+ sub "\ufec0", "ḑ" # ﻀ
371
+ sub "\ufebe", "ḑ" # ﺾ
372
+
373
+ sub "\u0637", "ţ" # ط
374
+ sub "\ufec3", "ţ" # ﻃ
375
+ sub "\ufec4", "ţ" # ﻄ
376
+ sub "\ufec2", "ţ" # ﻂ
377
+
378
+ sub "\u0638", "z̧" # ظ
379
+ sub "\ufec7", "z̧" # ﻇ
380
+ sub "\ufec8", "z̧" # ﻈ
381
+ sub "\ufec6", "z̧" # ﻆ
382
+
383
+ sub "\u0639", "‘" # ع
384
+ sub "\ufecb", "‘" # ﻋ
385
+ sub "\ufecc", "‘" # ﻌ
386
+ sub "\ufeca", "‘" # ﻊ
387
+
388
+ sub "\u063a", "gh" # غ
389
+ sub "\ufecf", "gh" # ﻏ
390
+ sub "\ufed0", "gh" # ﻐ
391
+ sub "\ufece", "gh" # ﻎ
392
+
393
+ sub "\u0641", "f" # ف
394
+ sub "\ufed3", "f" # ﻓ
395
+ sub "\ufed4", "f" # ﻔ
396
+ sub "\ufed2", "f" # ﻒ
397
+
398
+ sub "\u0642", "q" # ق
399
+ sub "\ufed7", "q" # ﻗ
400
+ sub "\ufed8", "q" # ﻘ
401
+ sub "\ufed6", "q" # ﻖ
402
+
403
+ sub "\u0643", "k" # ك
404
+ sub "\ufedb", "k" # ﻛ
405
+ sub "\ufedc", "k" # ﻜ
406
+ sub "\ufeda", "k" # ﻚ
407
+
408
+ sub "\u0644", "l" # ل
409
+ sub "\ufedf", "l" # ﻟ
410
+ sub "\ufee0", "l" # ﻠ
411
+ sub "\ufede", "l" # ﻞ
412
+
413
+ sub "\u0645", "m" # م
414
+ sub "\ufee3", "m" # ﻣ
415
+ sub "\ufee4", "m" # ﻤ
416
+ sub "\ufee2", "m" # ﻢ
417
+
418
+ sub "\u0646", "n" # ن
419
+ sub "\ufee7", "n" # ﻧ
420
+ sub "\ufee8", "n" # ﻨ
421
+ sub "\ufee6", "n" # ﻦ
422
+
423
+ sub "\u0647", "h" # ه
424
+ sub "\ufeeb", "h" # ﻫ
425
+ sub "\ufeec", "h" # ﻬ
426
+ sub "\ufeea", "h" # ﻪ
427
+
428
+ sub "\u0648", "w" # و
429
+ sub "\ufeee", "w" # ﻮ
430
+
431
+ sub "\u064a", "y" # ي
432
+ sub "\ufef3", "y" # ﻳ
433
+ sub "\ufef4", "y" # ﻴ
434
+ sub "\ufef1", "y" # ﻱ
435
+
436
+
437
+ # NUMERALS
438
+
439
+ # Although Perso-Arabic script is written from right to left, numerical expressions, e.g. ۱۹٦۸ → 1968, are written from left to right.
440
+ sub "۰", "0"
441
+ sub "۱", "1"
442
+ sub "۲", "2"
443
+ sub "۳", "3"
444
+ sub "٤", "4"
445
+ sub "٥", "5"
446
+ sub "٦", "6"
447
+ sub "۷", "7"
448
+ sub "۸", "8"
449
+ sub "۹", "9"
450
+ }
451
+
452
+ # POSTRULES
453
+ sub any("\u0061".."\uFFFF"), upcase, before: boundary, not_before: boundary + any("‘’")
454
+ # don't capitalize defined article in the middle of a sentence
455
+ sub " At T", " at T" # الت
456
+ sub " Ath Th", " ath th" # الث
457
+ sub " Ad D", " ad D" # الد
458
+ sub " Adh Dh", " adh Dh" # الذ
459
+ sub " Ar R", " ar R" # الر
460
+ sub " Az Z", " az Z" # الز
461
+ sub " As S", " as S" # الس
462
+ sub " Ash Sh", " ash Sh" # الش
463
+ sub " Aş Ş", " aş Ş" # الص
464
+ sub " Aḑ Ḑ", " aḑ Ḑ" # الض
465
+ sub " Aţ Ţ", " aţ Ţ" # الط
466
+ sub " Az̧ Z̧", " az̧ Z̧" # الظ
467
+ sub " Al L", " al L" # الل
468
+ sub " An N", " an N" # الن
469
+ sub " Al ", " al " # ال
470
+
471
+ compose
472
+ }