aboutsummaryrefslogtreecommitdiff
path: root/arabluatex_trans.lua
diff options
context:
space:
mode:
Diffstat (limited to 'arabluatex_trans.lua')
-rw-r--r--arabluatex_trans.lua203
1 files changed, 146 insertions, 57 deletions
diff --git a/arabluatex_trans.lua b/arabluatex_trans.lua
index 63a1956..c3c21e1 100644
--- a/arabluatex_trans.lua
+++ b/arabluatex_trans.lua
@@ -2,24 +2,23 @@
2This file is part of the `arabluatex' package 2This file is part of the `arabluatex' package
3 3
4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX 4ArabLuaTeX -- Processing ArabTeX notation under LuaLaTeX
5Copyright (C) 2016--2019 Robert Alessi 5Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023
6Robert Alessi <alessi@robertalessi.net>
6 7
7Please send error reports and suggestions for improvements to Robert 8Permission to use, copy, modify, and distribute this software for any
8Alessi <alessi@robertalessi.net> 9purpose with or without fee is hereby granted, provided that the above
9 10copyright notice and this permission notice appear in all copies.
10This program is free software: you can redistribute it and/or modify
11it under the terms of the GNU General Public License as published by
12the Free Software Foundation, either version 3 of the License, or
13(at your option) any later version.
14 11
15This program is distributed in the hope that it will be useful, but 12THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
16WITHOUT ANY WARRANTY; without even the implied warranty of 13WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
17MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
18General Public License for more details. 15ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
16WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
17ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
18OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
19 19
20You should have received a copy of the GNU General Public License 20Please send error reports and suggestions for improvements to Robert
21along with this program. If not, see 21Alessi <alessi@robertalessi.net>
22<http://www.gnu.org/licenses/>.
23--]] 22--]]
24 23
25-- common 24-- common
@@ -202,6 +201,91 @@ hamzatrdmg = {
202 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"} 201 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"}
203} 202}
204 203
204hamzatrnoinitialdmg = {
205 -- next lines for ʾalif alone
206 {a="(%.A)l%-(%^n)", b=".|l-%2"}, --additional (^n is lunar)
207 {a="([%(%[%|%<%s%-O])(%.A)l%-(%^n)", b="%1.|l-%3"}, --additional (^n is lunar) --p
208 {a="(%.A)l%-([%_%^%.]?[tdrzsnc])", b=".|%2-%2"},
209 {a="([%(%[%|%<%s%-O])(%.A)l%-([%_%^%.]?[tdrzsnc])", b="%1.|%3-%3"}, --p
210 {a="(%.A)([uai])l%-(%^n)", b="||%2l-%3"}, --additional (^n is lunar)
211 {a="([%(%[%|%<%s%-O])(%.A)([uai])l%-(%^n)", b="%1||%3l-%4"}, --additional (^n is lunar) --p
212 {a="(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="||%2%3-%3"},
213 {a="([%(%[%|%<%s%-O])(%.A)([uai])l%-([%_%^%.]?[tdrzsnc])", b="%1||%3%4-%4"}, --p
214 {a="(%.A)([^uai])", b=".|%2"},
215 {a="(%.A)([uai])", b="||%2"},
216 -- hard coded hamza
217 {a="|\"'", b="ʾ"},
218 {a="A\"'", b="ʾA"},
219 {a="[au]\"'", b="ʾ"},
220 {a="w\"'", b="ʾ"},
221 {a="i\"'", b="ʾ"},
222 {a="y\"'", b="ʾ"},
223 -- hamza takes tašdīd too
224 {a="''([Uu])", b="ʾʾ%1"},
225 {a="''([Aa])", b="ʾʾ%1"},
226 {a="''([Ii])", b="ʾʾ%1"},
227 -- initial long u and i (for a, see below)
228 {a="%'%_U", b="||U"},
229 {a="%'%_I", b="||I"},
230 -- taḫfīfu 'l-hamza
231 {a="'u'([^uaiUAI])", b="|U%1"},
232 {a="'i'([^uaiUAI])", b="|I%1"},
233 {a="^u'([^uaiUAI])", b="U%1"},
234 {a="([^uaiUAIYN][%s%(%[%<])u'([^uaiUAI])", b="%1U%2"},
235 {a="^i'([^uaiUAI])", b="I%1"},
236 {a="([^uaiUAIYN][%s%(%[%<])i'([^uaiUAI])", b="%1I%2"},
237 -- madda (historic writing below)
238 {a="'a'([^uaiUAI])", b="ʾA%1"},
239 {a="'a?A", b="ʾA"},
240 {a="(A)(')(i)$", b="%1ʾ%3"},
241 {a="(A)(')(i)(%W)", b="%1ʾ%3%4"},
242 {a="(A)(')(i)", b="%1ʾ%3"}, -- historic madda
243 {a="(A)(')", b="%1ʾ"}, -- historic madda
244 -- initial (needs both ^ and %W patterns)
245 -- 'aw: the diphthong is to be resolved into 'awi' (next 8 lines)
246 {a="^('aw)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1i"},
247 {a="(%W)('aw)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1%2i"},
248 {a="^('aw)(O)(\"?[uai])([%S]-O)", b="%1i"},
249 {a="(%W)('aw)(O)(\"?[uai])([%S]-O)", b="%1%2i"},
250 {a="^('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1i%2%3"},
251 {a="(%W)('aw)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1%2i%3%4"},
252 {a="^('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1i%2%3"}, --p
253 {a="(%W)('aw)(%s)([%(%[%|%<]?\"?[uai])", b="%1%2i%3%4"}, --p
254 -- then the 'initial' rules for the remaining cases
255 {a="^(')([ua])", b="||%2"},
256 {a="^(')(i)", b="||%2"},
257 -- consider replacing initial %W with [%s%(%[%<%-]:
258 -- {a="(%W)(')([ua])", b="%1||%3"},
259 -- {a="(%W)(')(i)", b="%1||%3"},
260 {a="([%s%(%[%<%-])(')([ua])", b="%1||%3"},
261 {a="([%s%(%[%<%-])(')(i)", b="%1||%3"},
262 -- final
263 {a="([Iy])(')(aN)$", b="%1ʾ%3"},
264 {a="([Iy])(')(aN)(%W)", b="%1ʾ%3%4"},
265 {a="([^uai])(')([uai]N?)$", b="%1ʾ%3"},
266 {a="([^uai])(')([uai]N?)(%W)", b="%1ʾ%3%4"},
267 {a="([UI])(')([uai])$", b="%1ʾ%3"},
268 {a="([UI])(')([uai])(%W)", b="%1ʾ%3%4"},
269 -- middle
270 {a="(U)(')", b="%1ʾ"},
271 {a="([Iy])(')", b="%1ʾ"},
272 {a="([^uai])(')([uU])", b="%1ʾ%3"},
273 {a="([^uai])(')(%_?[aAY])", b="%1ʾ%3"},
274 {a="([^uai])(')([iI])", b="%1ʾ%3"},
275 {a="(u)(')([uU])", b="%1ʾ%3"},
276 {a="(u)(')(%_?[aAY])", b="%1ʾ%3"},
277 {a="(u)(')([iI])", b="%1ʾ%3"},
278 {a="(a)(')(%_?[aAY])", b="%1ʾ%3"},
279 {a="(a)(')([uU])", b="%1ʾ%3"},
280 {a="(a)(')([iI])", b="%1ʾ%3"},
281 {a="(i)(')(%_?[aAY])", b="%1ʾ%3"},
282 {a="(i)(')([uU])", b="%1ʾ%3"},
283 {a="(i)(')([iI])", b="%1ʾ%3"},
284 {a="(a)(')([^uaiUAI])", b="%1ʾ%3"},
285 {a="(u)(')([^uaiUAI])", b="%1ʾ%3"},
286 {a="(i)(')([^uaiUAI])", b="%1ʾ%3"}
287}
288
205tanwintrdmg = { 289tanwintrdmg = {
206 {a="%-?([uai]NU)(O)([ui])([%S]-O)", b="\\arbup{un%3}"}, 290 {a="%-?([uai]NU)(O)([ui])([%S]-O)", b="\\arbup{un%3}"},
207 {a="%-?([uai]NU)(%s)([ui])", b="\\arbup{un%3}%2'"}, 291 {a="%-?([uai]NU)(%s)([ui])", b="\\arbup{un%3}%2'"},
@@ -216,41 +300,41 @@ tanwintrdmg = {
216 {a="%-?(uN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{uni}"}, 300 {a="%-?(uN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{uni}"},
217 {a="%-?(aN)(_A)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"}, 301 {a="%-?(aN)(_A)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"},
218 {a="%-?(aN)(Y)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"}, 302 {a="%-?(aN)(Y)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="ạ\\arbup{ni}"},
219 {a="(T)%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="t\\arbup{ani}"}, 303 {a="([TH])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="t\\arbup{ani}"},
220 {a="([^TA])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1\\arbup{ani}"}, 304 {a="([^TAH])%-?(aN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="%1\\arbup{ani}"},
221 {a="%-?(iN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{ini}"}, 305 {a="%-?(iN)(O)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)([%S]-O)", b="\\arbup{ini}"},
222 {a="%-?(uN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{uni}%2%3"}, 306 {a="%-?(uN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{uni}%2%3"},
223 {a="%-?(aN)(_A)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, 307 {a="%-?(aN)(_A)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"},
224 {a="%-?(aN)(Y)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"}, 308 {a="%-?(aN)(Y)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="ạ\\arbup{ni}%3%4"},
225 {a="(T)%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="t\\arbup{ani}%3%4"}, 309 {a="([TH])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="t\\arbup{ani}%3%4"},
226 {a="([^TA])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1\\arbup{ani}%3%4"}, 310 {a="([^TAH])%-?(aN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="%1\\arbup{ani}%3%4"},
227 {a="%-?(iN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{ini}%2%3"}, 311 {a="%-?(iN)(%s)(['][%_%^%.]?[l'btjghxdrzs`fqkmnwy]%-)", b="\\arbup{ini}%2%3"},
228 -- tanwīn preceding 'lla_dI/'llatI 312 -- tanwīn preceding 'lla_dI/'llatI
229 {a="%-?(uN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{uni}"}, 313 {a="%-?(uN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{uni}"},
230 {a="%-?(aN)(_A)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"}, 314 {a="%-?(aN)(_A)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"},
231 {a="%-?(aN)(Y)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"}, 315 {a="%-?(aN)(Y)(O)('lla[%_]?[dt])([%S]-O)", b="ạ\\arbup{ni}"},
232 {a="(T)%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="t\\arbup{ani}"}, 316 {a="([TH])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="t\\arbup{ani}"},
233 {a="([^TA])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="%1\\arbup{ani}"}, 317 {a="([^TAH])%-?(aN)(O)('lla[%_]?[dt])([%S]-O)", b="%1\\arbup{ani}"},
234 {a="%-?(iN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{ini}"}, 318 {a="%-?(iN)(O)('lla[%_]?[dt])([%S]-O)", b="\\arbup{ini}"},
235 {a="%-?(uN)(%s)('lla[%_]?[dt])", b="\\arbup{uni}%2%3"}, 319 {a="%-?(uN)(%s)('lla[%_]?[dt])", b="\\arbup{uni}%2%3"},
236 {a="%-?(aN)(_A)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, 320 {a="%-?(aN)(_A)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"},
237 {a="%-?(aN)(Y)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"}, 321 {a="%-?(aN)(Y)(%s)('lla[%_]?[dt])", b="ạ\\arbup{ni}%3%4"},
238 {a="(T)%-?(aN)(%s)('lla[%_]?[dt])", b="t\\arbup{ani}%3%4"}, 322 {a="([TH])%-?(aN)(%s)('lla[%_]?[dt])", b="t\\arbup{ani}%3%4"},
239 {a="([^TA])%-?(aN)(%s)('lla[%_]?[dt])", b="%1\\arbup{ani}%3%4"}, 323 {a="([^TAH])%-?(aN)(%s)('lla[%_]?[dt])", b="%1\\arbup{ani}%3%4"},
240 {a="%-?(iN)(%s)('lla[%_]?[dt])", b="\\arbup{ini}%2%3"}, 324 {a="%-?(iN)(%s)('lla[%_]?[dt])", b="\\arbup{ini}%2%3"},
241 -- tanwīn + alif without hamza and kasra (ibn) or dhamma (uhrub) 325 -- tanwīn + alif without hamza and kasra (ibn) or dhamma (uhrub)
242 {a="%-?(uN)(O)([ui])([%S]-O)", b="\\arbup{un%3}"}, 326 {a="%-?(uN)(O)([ui])([%S]-O)", b="\\arbup{un%3}"},
243 {a="%-?(aN)(_A)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"}, 327 {a="%-?(aN)(_A)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"},
244 {a="%-?(aN)(Y)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"}, 328 {a="%-?(aN)(Y)(O)([ui])([%S]-O)", b="ạ\\arbup{n%4}"},
245 {a="(T)%-?(aN)(O)([ui])([%S]-O)", b="t\\arbup{an%4}"}, 329 {a="([TH])%-?(aN)(O)([ui])([%S]-O)", b="t\\arbup{an%4}"},
246 {a="([^TA])%-?(aN)(O)([ui])([%S]-O)", b="%1\\arbup{an%4}"}, 330 {a="([^TAH])%-?(aN)(O)([ui])([%S]-O)", b="%1\\arbup{an%4}"},
247 {a="%-?(iN)(O)([ui])([%S]-O)", b="\\arbup{in%3}"}, 331 {a="%-?(iN)(O)([ui])([%S]-O)", b="\\arbup{in%3}"},
248 {a="(O[%S]-)([uai]N)(O)(\"?[ui])", b="'"}, 332 {a="(O[%S]-)([uai]N)(O)(\"?[ui])", b="'"},
249 {a="%-?(uN)(%s)([ui])", b="\\arbup{un%3}%2'"}, 333 {a="%-?(uN)(%s)([ui])", b="\\arbup{un%3}%2'"},
250 {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, 334 {a="%-?(aN)(_A)(%s)([ui])", b="ạ\\arbup{n%4}%3'"},
251 {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3'"}, 335 {a="%-?(aN)(Y)(%s)([ui])", b="ạ\\arbup{n%4}%3'"},
252 {a="(T)%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3'"}, 336 {a="([TH])%-?(aN)(%s)([ui])", b="t\\arbup{an%4}%3'"},
253 {a="([^TA])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3'"}, 337 {a="([^TAH])%-?(aN)(%s)([ui])", b="%1\\arbup{an%4}%3'"},
254 {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2'"}, 338 {a="%-?(iN)(%s)([ui])", b="\\arbup{in%3}%2'"},
255 -- 339 --
256-- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table) 340-- {a="uN", b="\\arbup{un}"}, (now included in the last line of this table)
@@ -258,13 +342,13 @@ tanwintrdmg = {
258 -- needed by \arbcolor: 342 -- needed by \arbcolor:
259 {a="%-?(aN)(O[%S]-%_AO)", b="ạ\\arbup{n}"}, 343 {a="%-?(aN)(O[%S]-%_AO)", b="ạ\\arbup{n}"},
260 {a="%-?(aN)(O[%S]-YO)", b="ạ\\arbup{n}"}, 344 {a="%-?(aN)(O[%S]-YO)", b="ạ\\arbup{n}"},
261 {a="(O[%S]-TO)%-?(\"?aN)", b="\\arbup{an}"}, 345 {a="(O[%S]-[TH]O)%-?(\"?aN)", b="\\arbup{an}"},
262 {a="(O[%S]-[^TA]O)%-?(\"?aN)", b="\\arbup{an}"}, 346 {a="(O[%S]-[^TAH]O)%-?(\"?aN)", b="\\arbup{an}"},
263 -- 347 --
264 {a="%-?(aN)(_A)", b="ạ\\arbup{n}"}, 348 {a="%-?(aN)(_A)", b="ạ\\arbup{n}"},
265 {a="%-?(aN)(Y)", b="ạ\\arbup{n}"}, 349 {a="%-?(aN)(Y)", b="ạ\\arbup{n}"},
266 {a="(T)%-?(\"?aN)", b="t\\arbup{an}"}, 350 {a="([TH])%-?(\"?aN)", b="t\\arbup{an}"},
267 {a="([^TA])%-?(\"?aN)", b="%1\\arbup{an}"}, 351 {a="([^TAH])%-?(\"?aN)", b="%1\\arbup{an}"},
268 {a="%-?([ui])N", b="\\arbup{%1n}"} 352 {a="%-?([ui])N", b="\\arbup{%1n}"}
269} 353}
270 354
@@ -414,18 +498,20 @@ digraphstrdmg = {
414 {a="([%_]?[Uu])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="u%2%3"}, 498 {a="([%_]?[Uu])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="u%2%3"},
415 {a="([%_]?[Ii])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="i%2%3"}, 499 {a="([%_]?[Ii])(%s)([%(%[%|%<]?['][%_%^%.]?[l'btjghxdrzs`fqkmnwy][%-l])", b="i%2%3"},
416 {a="%-%-", b=""}, 500 {a="%-%-", b=""},
417 {a="iyyaT(%p*)$", b="īyaT%1"}, 501-- {a="iyyaT(%p*)$", b="īyaT%1"}, -- previously. is now:
418 {a="iyyaT(%p*%s)", b="īyaT%1"}, 502 {a="iyya([TH])(%p*)$", b="īya%1%2"},
503-- {a="iyyaT(%p*%s)", b="īyaT%1"}, -- previously. is now:
504 {a="iyya([TH])(%p*%s)", b="īya%1%2"},
419 {a="iyy(%p*)$", b="ī%1"}, 505 {a="iyy(%p*)$", b="ī%1"},
420 {a="iyy(%p*%s)", b="ī%1"}, 506 {a="iyy(%p*%s)", b="ī%1"},
421 -- {a="T([^uai])", b="%1"}, 507 -- {a="[TH]([^uai])", b="%1"},
422 {a="T(\\arbup)", b="t%1"}, 508 {a="[TH](\\arbup)", b="t%1"},
423 {a="([a%'][%_%^%.]?[tdrzsln]%-)(%S-)T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="%1%2h%3%4"}, --p 509 {a="([a%'][%_%^%.]?[tdrzsln]%-)(%S-)[TH]([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="%1%2h%3%4"}, --p
424 {a="T([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="t%1%2"}, --p 510 {a="[TH]([%(%[%|%<%s])(a[%_%^%.]?[tdrzsln]%-)", b="t%1%2"}, --p
425 {a="T([%|\"])", b="t%1"}, 511 {a="[TH]([%|\"])", b="t%1"},
426 {a="T(%p*%s)", b="h%1"}, 512 {a="[TH](%p*%s)", b="h%1"},
427 {a="T(%p*)$", b="h%1"}, 513 {a="[TH](%p*)$", b="h%1"},
428 {a="T(%p*)(%W)", b="h%1%2"}, 514 {a="[TH](%p*)(%W)", b="h%1%2"},
429 {a="_t", b="ṯ"}, 515 {a="_t", b="ṯ"},
430 {a="%^g", b="ǧ"}, 516 {a="%^g", b="ǧ"},
431 {a="%.h", b="ḥ"}, 517 {a="%.h", b="ḥ"},
@@ -480,6 +566,7 @@ singletrdmg = {
480 {a="y", b="y"}, 566 {a="y", b="y"},
481 {a="T", b="t"}, 567 {a="T", b="t"},
482 -- additional characters (begin) 568 -- additional characters (begin)
569 {a="H", b="t"},
483 {a="p", b="p"}, 570 {a="p", b="p"},
484 {a="v", b="v"}, 571 {a="v", b="v"},
485 {a="g", b="g"}, 572 {a="g", b="g"},
@@ -595,13 +682,13 @@ tanwintrloc = {
595 -- needed by \arbcolor: 682 -- needed by \arbcolor:
596 {a="%-?(aN)(O[%S]-%_AO)", b="an"}, 683 {a="%-?(aN)(O[%S]-%_AO)", b="an"},
597 {a="%-?(aN)(O[%S]-YO)", b="an"}, 684 {a="%-?(aN)(O[%S]-YO)", b="an"},
598 {a="(O[%S]-TO)%-?(\"?aN)", b="an"}, 685 {a="(O[%S]-[TH]O)%-?(\"?aN)", b="an"},
599 {a="(O[%S]-[^TA]O)%-?(\"?aN)", b="an"}, 686 {a="(O[%S]-[^TAH]O)%-?(\"?aN)", b="an"},
600 -- 687 --
601 {a="%-?(aN)(_A)", b="an"}, 688 {a="%-?(aN)(_A)", b="an"},
602 {a="%-?(aN)(Y)", b="an"}, 689 {a="%-?(aN)(Y)", b="an"},
603 {a="(T)%-?(\"?aN)", b="tan"}, 690 {a="([TH])%-?(\"?aN)", b="tan"},
604 {a="([^TA])%-?(\"?aN)", b="%1an"} 691 {a="([^TAH])%-?(\"?aN)", b="%1an"}
605} 692}
606 693
607trigraphstrloc = { -- trigraphs or more 694trigraphstrloc = { -- trigraphs or more
@@ -688,12 +775,12 @@ digraphstrloc = {
688 {a="iyy(%p*%s)", b="ī%1"}, 775 {a="iyy(%p*%s)", b="ī%1"},
689 {a="iyy", b="īy"}, 776 {a="iyy", b="īy"},
690 {a="([tkdsg])(h)", b="%1'%2"}, 777 {a="([tkdsg])(h)", b="%1'%2"},
691 -- {a="T([^uai])", b="h%1"}, 778 -- {a="[TH]([^uai])", b="h%1"},
692 {a="([a%']l%-)(%S-)T([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p 779 {a="([a%']l%-)(%S-)[TH]([%(%[%|%<%s])(al%-)", b="%1%2h%3%4"}, --p
693 {a="T([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p 780 {a="[TH]([%(%[%|%<%s])(al%-)", b="t%1%2"}, --p
694 {a="T([%|\"])", b="t%1"}, 781 {a="[TH]([%|\"])", b="t%1"},
695 {a="T(%p*)$", b="h%1"}, 782 {a="[TH](%p*)$", b="h%1"},
696 {a="T(%p*%s)", b="h%1"}, 783 {a="[TH](%p*%s)", b="h%1"},
697 {a="_t", b="th"}, 784 {a="_t", b="th"},
698 {a="%^g", b="j"}, 785 {a="%^g", b="j"},
699 {a="%.h", b="ḥ"}, 786 {a="%.h", b="ḥ"},
@@ -747,6 +834,7 @@ singletrloc = {
747 {a="y", b="y"}, 834 {a="y", b="y"},
748 {a="T", b="t"}, 835 {a="T", b="t"},
749 -- additional characters (begin) 836 -- additional characters (begin)
837 {a="H", b="t"},
750 {a="p", b="p"}, 838 {a="p", b="p"},
751 {a="v", b="v"}, 839 {a="v", b="v"},
752 {a="g", b="g"}, 840 {a="g", b="g"},
@@ -942,12 +1030,12 @@ digraphstrarabica = {
942 {a="%-%-", b=""}, 1030 {a="%-%-", b=""},
943 {a="iyy(%p*)$", b="ī%1"}, 1031 {a="iyy(%p*)$", b="ī%1"},
944 {a="iyy(%p*%s)", b="ī%1"}, 1032 {a="iyy(%p*%s)", b="ī%1"},
945 -- {a="T([^uai])", b="h%1"}, 1033 -- {a="[TH]([^uai])", b="h%1"},
946 {a="([a%']l%-)(%S-)aT([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p 1034 {a="([a%']l%-)(%S-)a[TH]([%(%[%|%<%s])(al%-)", b="%1%2a%3%4"}, --p
947 {a="aT([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p 1035 {a="a[TH]([%(%[%|%<%s])(al%-)", b="at%1%2"}, --p
948 {a="T([%|\"])", b="t%1"}, 1036 {a="[TH]([%|\"])", b="t%1"},
949 {a="aT(%p*)$", b="a%1"}, 1037 {a="a[TH](%p*)$", b="a%1"},
950 {a="aT(%p*%s)", b="a%1"}, 1038 {a="a[TH](%p*%s)", b="a%1"},
951 {a="_t", b="ṯ"}, 1039 {a="_t", b="ṯ"},
952 {a="%^g", b="ǧ"}, 1040 {a="%^g", b="ǧ"},
953 {a="%.h", b="ḥ"}, 1041 {a="%.h", b="ḥ"},
@@ -1001,6 +1089,7 @@ singletrarabica = {
1001 {a="y", b="y"}, 1089 {a="y", b="y"},
1002 {a="T", b="t"}, 1090 {a="T", b="t"},
1003 -- additional characters (begin) 1091 -- additional characters (begin)
1092 {a="H", b="t"},
1004 {a="p", b="p"}, 1093 {a="p", b="p"},
1005 {a="v", b="v"}, 1094 {a="v", b="v"},
1006 {a="g", b="g"}, 1095 {a="g", b="g"},