;; (generator
 ;;  (0
-;;   otf:arab=ccmp))
+;;   otf:arab=ccmp+))
 
 ;; Step 2: Initial, medial, or final.
 
     (cond
      ("(.)(T*)([DR].*)"
       <
-      (1 otf:arab=init)
+      (1 otf:arab=init+)
       (2 = *)
       >
       (3 join))
      ("(.)(T*)(.*)"                    ; == (D)(T*)(U.*)
       <
-      (1 otf:arab=isol)
+      (1 otf:arab=isol+)
       (2 = *)
       >
       (3 disjoin))))
 
    ("([RU])(T*)(.*)"
     <
-    (1 otf:arab=isol)
+    (1 otf:arab=isol+)
     (2 = *)
     >
     (3 disjoin))
     (cond
      ("(.)(T*)([DR].*)"
       <
-      (1 otf:arab=medi)
+      (1 otf:arab=medi+)
       (2 = *)
       >
       (3 join))
      ("(.)(T*)(.*)"                    ; == (D)(T*)(U.*)
       <
-      (1 otf:arab=fina)
+      (1 otf:arab=fina+)
       (2 = *)
       >
       (3 disjoin))))
 
    ("(.)(T*)(.*)"
     <
-    (1 otf:arab=fina)
+    (1 otf:arab=fina+)
     (2 = *)
     >
     (3 disjoin))))
     (cond
      ("(.)(T*)([DR].*)"
       <
-      (1 otf:arab=init)
+      (1 otf:arab=init+)
       (2 = *)
       >
       (3 join))
      ("(.)(T*)(.*)"                    ; == (D)(T*)(U.*)
       <
-      (1 otf:arab=isol)
+      (1 otf:arab=isol+)
       (2 = *)
       >
       (3 disjoin))))
 
    ("(.)(T*)(.*)"                      ; == ([RU])(T*)(.*)
     <
-    (1 otf:arab=isol)
+    (1 otf:arab=isol+)
     (2 = *)
     >
     (3 disjoin)))))
 
-;; Step 3: Other GSUB features (ligatures, etc.)
+;; Step 3: Other OTF features.
 
 (generator
  (0
-  otf:arab=rlig,calt,liga,dlig,cswh,mset))
-
-;; Step 4: GPOS features.
-
-(generator
- (0
-  otf:arab=))
+  otf:arab=rlig,calt,liga,dlig,cswh,mset+curs,kern,mark,mkmk))
 
 ;; Local Variables:
 ;; mode: lisp