Use font-facility to check U+25CC's availability.
authorntakahas <ntakahas>
Mon, 1 Mar 2010 12:46:44 +0000 (12:46 +0000)
committerntakahas <ntakahas>
Mon, 1 Mar 2010 12:46:44 +0000 (12:46 +0000)
FLT/BNG2-OTF.flt
FLT/DEV2-OTF.flt
FLT/GJR2-OTF.flt
FLT/GUR2-OTF.flt
FLT/KND2-OTF.flt
FLT/MLM2-OTF.flt
FLT/ORY2-OTF.flt
FLT/TEL2-OTF.flt
FLT/TML2-OTF.flt

index 62e1361..5fb3706 100644 (file)
   (cond
    ;; Syllables with an independent vowel
    ("(RH)?Vn?(J?H[CR])?m?b?p?n?a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; KHANDA-TA combines only with reph.
    ("(RH)?(T)"
 
    ;; Consonant-based syllables
    ("([CR]n?J?HJ?)*[CR]n?(H[NJ]?|m?([NJ]?b)?p?n?)a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
+
+   ;; Two-part vowel signs
+   ((0x09C7 0x09BE)
+    (cond
+     ((font-facility 0x25CC) < 0x09C7 0x25CC 0x09BE >)
+     (".+" < 0x09CB >)))
+   ((0x09C7 0x09D7)
+    (cond
+     ((font-facility 0x25CC) < 0x09C7 0x25CC 0x09D7 >)
+     (".+" < 0x09CC >)))
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("n|H|b|p|a|A|JH[CR]"
-    < 0x25CC (0 :otf=bng2=blwf,pstf+) >)
-
-   ;; Pre-base matra
-   ("(m)(p)?"
-    < (1 =) 0x25CC (2 =) >)
+   ("(m)"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[nHbpaA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JH[CR]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=bng2=blwf,pstf+ >)
+     (".+" [ :otf=bng2=blwf,pstf+ ])))
 
    ("." =))
   *))
index 01ba062..cda2083 100644 (file)
   (cond
    ;; Syllables with an independent vowel
    ("(RH)?Vn?(J?HR)?m?u?b?p?n?a?(Ss?|sS?)?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Consonant-based syllables
    ("([CR]n?J?HJ?)*[CR]n?(H[NJ]?|m?u?b?p?n?)a?(Ss?|sS?)?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("(m)|(n|H|u|b|p|a|S|s|A|JHR)"
-    < (1 =) 0x25CC (2 :otf=dev2=blwf+) >)
+   ("m"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[nHubpaSsA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JHR"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=dev2=blwf+ >)
+     (".+" [ :otf=dev2=blwf+ ])))
 
    ("." =))
   *))
index 422837a..c8327a1 100644 (file)
   (cond
    ;; Syllables with an independent vowel
    ("(RH)?Vn?(J?HR)?m?u?b?p?n?a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Consonant-based syllables
    ("([CR]n?J?HJ?)*[CR]n?(H[NJ]?|m?u?b?p?n?)a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("(m)|(n|H|u|b|p|a|A|JHR)"
-    < | (1 =) 0x25CC (2 :otf=gjr2=blwf+) | >)
+   ("m"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[nHubpaA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JHR"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=gjr2=blwf+ >)
+     (".+" [ :otf=gjr2=blwf+ ])))
 
    ("." =))
   *))
index 45eb9b3..28ed009 100644 (file)
@@ -42,6 +42,7 @@
 (generator
  (0
   (cond
+   ;; Compose a consonant and a nukta
    ((0x0A32 0x0A3C) 0x0A33)
    ((0x0A38 0x0A3C) 0x0A36)
    ((0x0A16 0x0A3C) 0x0A59)
   (cond
    ;; Consonant-based syllables
    ("(Cn?J?HJ?)*Cn?(H[NJ]?|m?u?b?p?n?)a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Syllables with an independent vowel
    ("Vn?(J?HC)?m?u?b?p?n?a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("(m)|(n|H|u|b|p|a|A|JHC)"
-    < (1 =) 0x25CC (2 :otf=gur2=blwf,pstf+) >)
+   ("m"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[nHubpaA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JHC"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=gur2=blwf,pstf+ >)
+     (".+" [ :otf=gur2=blwf,pstf+ ])))
 
    ("." =))
   *))
index 9ca19d9..fca711c 100644 (file)
@@ -62,7 +62,7 @@
 (generator
  (0
   (cond
-   ;; Decompose two-part and three-part vowel signs.
+   ;; Decompose multi-part vowel signs.
    ((0x0CC0)
     0x0CBF 0x0CD5)
    ((0x0CC7)
   (cond
    ;; Syllables with an independent vowel
    ("(RH)?Vn?(J?H[CR])?b?b?a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Consonant-based syllables
    ("([CR]n?J?HJ?)*[CR]n?(H[NJ]?|b?b?a?n?)A?"
-    < | (0 = *) | >)
+    < | = * | >)
+
+   ;; Multi-part vowel signs
+   ((0x0CBF 0x0CD5)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0CBF 0x0CD5 >)
+     (".+" < 0x0CC0 >)))
+   ((0x0CC6 0x0CD5)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0CC6 0x0CD5 >)
+     (".+" < 0x0CC7 >)))
+   ((0x0CC6 0x0CD6)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0CC6 0x0CD6 >)
+     (".+" < 0x0CC8 >)))
+   ((0x0CC6 0x0CC2 0x0CD5)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0CC6 0x0CC2 0x0CD5 >)
+     (".+" < 0x0CCB >)))
+   ((0x0CC6 0x0CC2)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0CC6 0x0CC2 >)
+     (".+" < 0x0CCA >)))
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("n|H|bb?a?|a|A|JH[CR]"
-    < 0x25CC (0 :otf=knd2=blwf+) >)
+   ("[nHbaA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JH[CR]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=knd2=blwf+ >)
+     (".+" [ :otf=knd2=blwf+ ])))
 
    ("." =))
   *))
index 7743880..f7432b1 100644 (file)
   (cond
    ;; Consonant-based syllables
    ("(CJ?HJ?)*C(H[NJ]?|m?b?p?)A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Syllables with an independent vowel
    ("V(J?HC)?m?b?p?A?"
-    < | (0 = *) | >)
+    < | = * | >)
+
+   ;; Two-part vowel signs
+   ((0x0D46 0x0D3E)
+    (cond
+     ((font-facility 0x25CC) < 0x0D46 0x25CC 0x0D3E >)
+     (".+" < 0x0D4A >)))
+   ((0x0D47 0x0D3E)
+    (cond
+     ((font-facility 0x25CC) < 0x0D47 0x25CC 0x0D3E >)
+     (".+" < 0x0D4B >)))
+   ((0x0D46 0x0D57)
+    (cond
+     ((font-facility 0x25CC) < 0x0D46 0x25CC 0x0D57 >)
+     (".+" < 0x0D4C >)))
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("H|b|p|A|JHC"
-    < 0x25CC (0 :otf=mlm2=pref,blwf,pstf+) >)
-
-   ;; Pre-base matra
-   ("(m)(p)?"
-    < (1 =) 0x25CC (2 =) >)
+   ("(m)"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[HbpA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ((0x200D 0x0D4D 0x0D30)
+    (cond
+     ((font-facility 0x25CC) < :otf=mlm2=pref+ 0x25CC >)
+     (".+" [ :otf=mlm2=pref+ ])))
+   ("JHC"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=mlm2=blwf,pstf+ >)
+     (".+" [ :otf=mlm2=blwf,pstf+ ])))
 
    ("." =))
   *))
index 30cf52f..3df404c 100644 (file)
   (cond
    ;; Syllables with an independent vowel
    ("(RH)?Vn?(J?H[CR])?m?u?b?p?n?a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
 
    ;; Consonant-based syllables
    ("([CR]n?J?HJ?)*[CR]n?(H[NJ]?|m?u?b?p?n?)a?A?"
-    < | (0 = *) | >)
+    < | = * | >)
+
+   ;; Two-part vowel signs
+   ((0x0B47 0x0B56)
+    (cond
+     ((font-facility 0x25CC) < 0x0B47 0x25CC 0x0B56 >)
+     (".+" < 0x0B48 >)))
+   ((0x0B47 0x0B3E)
+    (cond
+     ((font-facility 0x25CC) < 0x0B47 0x25CC 0x0B3E >)
+     (".+" < 0x0B4B >)))
+   ((0x0B47 0x0B57)
+    (cond
+     ((font-facility 0x25CC) < 0x0B47 0x25CC 0x0B57 >)
+     (".+" < 0x0B4C >)))
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("n|H|u|b|p|a|A|JH[CR]"
-    < 0x25CC (0 :otf=bng2=blwf,pstf+) >)
-
-   ;; Pre-base matra
-   ("(m)([up])?"
-    < (1 =) 0x25CC (2 =) >)
+   ("m"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[nHubpaA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JH[CR]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=ory2=blwf,pstf+ >)
+     (".+" [ :otf=ory2=blwf,pstf+ ])))
 
    ("." =))
   *))
index 20b10b8..ff41512 100644 (file)
@@ -48,7 +48,7 @@
 (generator
  (0
   (cond
-   ;; Decompose two-part vowels.
+   ;; Decompose two-part vowel signs.
    ((0x0C48)
     0x0C46 0x0C56)
 
    ("(V)(J?HC)?(u?b?p?A?)"
     < | (1 =) (2 :otf=tel2=locl,blwf+) (3 = *) | >)
 
+   ;; Two-part vowel signs
+   ((0x0C46 0x0C56)
+    (cond
+     ((font-facility 0x25CC) < 0x25CC 0x0C46 0x0C56 >)
+     (".+" < 0x0C48 >)))
+
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("H|ub?|b|p|A|JHC"
-    < 0x25CC (0 :otf=tel2=blwf+) >)
+   ("[HubpA]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
+   ("JHC"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC :otf=tel2=blwf+ >)
+     (".+" [ :otf=tel2=blwf+ ])))
 
    ("." =))
   *))
index e1c5e77..ebab27d 100644 (file)
   (cond
    ;; Consonant-based syllables
    ("(CJ?HJ?)*C(H[NJ]?|m?p?)a?"
-    < | (0 :otf=tml2=locl,akhn,half,cjct+) | >)
+    < | :otf=tml2=locl,akhn,half,cjct+ | >)
 
    ;; Syllables with an independent vowel
    ("Vm?p?a?"
-    < | (0 = *) | >)
+    < | = * | >)
+
+   ;; Two-part vowel signs
+   ((0x0BC6 0x0BBE)
+    (cond
+     ((font-facility 0x25CC) < 0x0BC6 0x25CC 0x0BBE >)
+     (".+" < 0x0BCA >)))
+   ((0x0BC7 0x0BBE)
+    (cond
+     ((font-facility 0x25CC) < 0x0BC7 0x25CC 0x0BBE >)
+     (".+" < 0x0BCB >)))
+   ((0x0BC6 0x0BD7)
+    (cond
+     ((font-facility 0x25CC) < 0x0BC6 0x25CC 0x0BD7 >)
+     (".+" < 0x0BCC >)))
 
    ;; Combining marks are displayed with a DOTTED CIRCLE.
-   ("H|p|a"
-    < 0x25CC (0 =) >)
-
-   ;; Pre-base matra
-   ("(m)(p)?"
-    < (1 =) 0x25CC (2 =) >)
+   ("m"
+    (cond
+     ((font-facility 0x25CC) < = 0x25CC >)
+     ("." [ = ])))
+   ("[Hpa]"
+    (cond
+     ((font-facility 0x25CC) < 0x25CC = >)
+     ("." [ = ])))
 
    ("." =))
   *))