;;;
;;; 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
(0x06E5 ?x)
(0x06E6 ?x)
(0x06E9 ?x)
+ (0x200C ?x)
+ (0x200D ?x)
)
(generator
=))
*))
-;; 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) =)
))
)