New file
[m17n/m17n-db.git] / ARABIC.flt
index 3f35d16..4fb83d2 100644 (file)
 ;;;
 ;;; For Arabic fonts of Unicode encoding to draw Arabic script.
 
-;; phase 1: ligatures
+;; phase 1: Kazakh high hamza
 (category
- (0x0600 0x06ff                ?x)             ; general
+ (0x0600 0x06FF                ?x)
+ (0x0675 0x0678                ?p)
+ (0x0643               ?n)
+ (0x06AF               ?n)
+ (0x06D5               ?n)
+ (0x200C               ?x)
+ (0x200D               ?x)
+ )
+
+(generator
+ (0
+  (cond
+   (".*p.*"
+    (cond
+     (".*n.*"
+      rmhamza *)
+     ("(.)(.*)"
+      (1 < 0x0674 rmhamza >)
+      (2 rmhamza *))))
+   (0 = *)))
+
+ (rmhamza
+  (cond
+   ((0x0675)   0x0627)
+   ((0x0676)   0x0648)
+   ((0x0677)   0x06C7)
+   ((0x0678)   0x0649)
+   ("."                =))))
+
+;; phase 2: ligatures
+(category
+ (0x0600 0x06FF                ?x)             ; general
  (0x0622               ?a)             ; alef madda
  (0x0623               ?b)             ; alef hamza above
  (0x0625               ?c)             ; alef hamza below
@@ -39,6 +70,8 @@
  (0x06E5               ?x)
  (0x06E6               ?x)
  (0x06E9               ?x)
+ (0x200C               ?x)
+ (0x200D               ?x)
  )
 
 (generator
@@ -64,7 +97,7 @@
     =))
   *))
 
-;; phase 2: joining
+;; phase 3: joining
 (category
  ;; D: Dual-joining (beh, teh, etc. & zwj)
  ;; R: Right-joining (alef, dal, thal, reh, zain)
  (0x06CC 0x06CE                ?D)
  (0x06CF               ?R)
  (0x06D0 0x06D3                ?D)
- (0x06D4 0x06D5                ?U)
+ (0x06D4               ?U)
+ (0x06D5               ?R)
  (0x06D6 0x06E4                ?T)
  (0x06E5 0x06E6                ?U)
  (0x06E7 0x06E8                ?T)
    ((0x064A)   0xFEF1)
    ((range 0x0660 0x066D)      =)
    ((0x0671)   0xFB50)
+   ((0x0674)   =)
    ((0x0677)   0xFBDD)
    ((0x0679)   0xFB66)
    ((0x067A)   0xFB5E)
    ((0x06D2)   0xFBAE)
    ((0x06D3)   0xFBB0)
    ((0x06D4)   =)
-   ((0x06D5)   =)
+   ((0x06D5)   0xFEE9)
    ((0x06E5)   =)
    ((0x06E6)   =)
    ((0x06E9)   =)
    ((0xFEF7)   =)
    ((0xFEF9)   =)
    ((0xFEFB)   =)
-   ((0x200C))
-   ((0x200D))
+   ((0x200C)   =)
+   ((0x200D)   =)
    ))
 
  (final
    ((0x06D0)   0xFBE5)
    ((0x06D2)    0xFBAF)
    ((0x06D3)   0xFBB1)
+   ((0x06D5)   0xFEEA)
    ((0xFEF5)   0xFEF6)
    ((0xFEF7)   0xFEF8)
    ((0xFEF9)   0xFEFA)
    ((0xFEFB)   0xFEFC)
-   ((0x200C))
-   ((0x200D))
+   ((0x200C)   =)
+   ((0x200D)   =)
    ))
 
  (initial
    ((0x06AF)   0xFB94)
    ((0x06B1)   0xFB9C)
    ((0x06B3)   0xFB98)
+   ((0x06BA)   0xFEE7)
    ((0x06BB)   0xFBA2)
    ((0x06BE)   0xFBAC)
    ((0x06C1)   0xFBA8)
    ((0x06CC)   0xFBFE)
    ((0x06D0)   0xFBE6)
-   ((0x200C))
-   ((0x200D))
+   ((0x200C)   =)
+   ((0x200D)   =)
    ))
 
  (medial
    ((0x06AF)   0xFB95)
    ((0x06B1)   0xFB9D)
    ((0x06B3)   0xFB99)
+   ((0x06BA)   0xFEE8)
    ((0x06BB)   0xFBA3)
    ((0x06BE)   0xFBAD)
    ((0x06C1)   0xFBA9)
    ((0x06CC)   0xFBFF)
    ((0x06D0)   0xFBE7)
-   ((0x200C))
-   ((0x200D))
+   ((0x200C)   =)
+   ((0x200D)   =)
    ))
 
  (combining
   (cond
+   ((0x0651 0x0650) tc+bc 0x064E tc+bc 0x0651) ; shadda + kasra
+   ((0x0651 0x064D) tc+bc 0x064B tc+bc 0x0651) ; shadda + kasratan
    ((range 0x0610 0x0615) tc+bc =)
    ((0x064B) tc+bc =)
    ((0x064C) tc+bc =)
-   ((0x064D) bc-15tc =)
+   ((0x064D) bc-tc =)
    ((0x064E) tc+bc =)
    ((0x064F) tc+bc =)
-   ((0x0650) bc-15tc =)
-   ((0x0651) tc+bc =)
-   ((0x0652) tc+bc =)
-   ((0x0653) tc+bc =)
-   ((0x0654) tc+bc =)
-   ((0x0655) bc-15tc =)
-   ((0x0656) bc-15tc =)
+   ((0x0650) bc-tc =)
+   ((range 0x0651 0x0654) tc+bc =)
+   ((0x0655) bc-tc =)
+   ((0x0656) bc-tc =)
    ((0x0657) tc+bc =)
    ((0x0658) tc+bc =)
    ((0x0670) tc+bc =)
    ((range 0x06D6 0x06DC) tc+bc =)
    ((range 0x06DF 0x06E2) tc+bc =)
-   ((0x06E3) bc-15tc =)
+   ((0x06E3) bc-tc =)
    ((0x06E4) tc+bc =)
    ((0x06E7) tc+bc =)
    ((0x06E8) tc+bc =)
-   ((0x06EA) bc-15tc =)
+   ((0x06EA) bc-tc =)
    ((0x06EB) tc+bc =)
    ((0x06EC) tc+bc =)
-   ((0x06ED) bc-15tc =)
-   ((0x200C))
-   ((0x200D))
+   ((0x06ED) bc-tc =)
+   ((0x200C)   =)
+   ((0x200D)   =)
    ))
  )