("D.*"
(cond
("(.)(T*)([DR].*)"
+ <
(1 otf:arab=init)
(2 = *)
+ >
(3 join))
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
+ <
(1 otf:arab=isol)
(2 = *)
+ >
(3 disjoin))))
("([RU])(T*)(.*)"
+ <
(1 otf:arab=isol)
(2 = *)
+ >
(3 disjoin))
("(T+)(.*)"
("D.*"
(cond
("(.)(T*)([DR].*)"
+ <
(1 otf:arab=medi)
(2 = *)
+ >
(3 join))
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
+ <
(1 otf:arab=fina)
(2 = *)
+ >
(3 disjoin))))
("(.)(T*)(.*)" ; == (R)(T*)(.*)
+ <
(1 otf:arab=fina)
(2 = *)
+ >
(3 disjoin))))
(disjoin
("D.*"
(cond
("(.)(T*)([DR].*)"
+ <
(1 otf:arab=init)
(2 = *)
+ >
(3 join))
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
+ <
(1 otf:arab=isol)
(2 = *)
+ >
(3 disjoin))))
("(.)(T*)(.*)" ; == ([RU])(T*)(.*)
+ <
(1 otf:arab=isol)
(2 = *)
+ >
(3 disjoin)))))
;; Step 3: Other GSUB features (ligatures, etc.)