562 lines
11 KiB
Plaintext
562 lines
11 KiB
Plaintext
;; ARAB.flt -- Font Layout Table for Arabic font (Unicode encoding)
|
|
;; Copyright (C) 2003, 2004, 2007 AIST (H15PRO112)
|
|
;; See the end for copying conditions.
|
|
|
|
(font layouter arab nil
|
|
(font (nil bitstream\ cyberbase unicode-bmp)))
|
|
|
|
;;; <li> ARAB.flt
|
|
;;;
|
|
;;; For Arabic fonts of Unicode encoding to draw Arabic script.
|
|
|
|
;; phase 1: Kazakh high hamza
|
|
(category
|
|
(0x0600 0x06FF ?x)
|
|
(0x0675 0x0678 ?p)
|
|
(0x0643 ?n)
|
|
(0x06AF ?n)
|
|
(0x06D5 ?n)
|
|
(0x200C ?x)
|
|
(0x200D ?x)
|
|
(0xFB50 0xFDFF ?x) ; Arabic Presentation Forms-A
|
|
(0xFE70 0xFEFC ?x) ; Arabic Presentation Forms-B
|
|
)
|
|
|
|
(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
|
|
(0x0627 ?d) ; alef
|
|
(0x0644 ?l) ; lam
|
|
(0x064B 0x0655 ?t) ; combinings
|
|
(0x0670 ?t) ; combining
|
|
(0x06D6 0x06ED ?t) ; combinings
|
|
(0x06E5 ?x)
|
|
(0x06E6 ?x)
|
|
(0x06E9 ?x)
|
|
(0x200C ?x)
|
|
(0x200D ?x)
|
|
(0xFB50 0xFDFF ?x)
|
|
(0xFE70 0xFEFC ?x)
|
|
)
|
|
|
|
(generator
|
|
(0
|
|
(cond
|
|
("l(t*)a(t*)"
|
|
0xFEF5
|
|
(1 = *)
|
|
(2 = *))
|
|
("l(t*)b(t*)"
|
|
0xFEF7
|
|
(1 = *)
|
|
(2 = *))
|
|
("l(t*)c(t*)"
|
|
0xFEF9
|
|
(1 = *)
|
|
(2 = *))
|
|
("l(t*)d(t*)"
|
|
0xFEFB
|
|
(1 = *)
|
|
(2 = *))
|
|
("."
|
|
=))
|
|
*))
|
|
|
|
;; phase 3: joining
|
|
(category
|
|
;; D: Dual-joining (beh, teh, etc. & zwj)
|
|
;; R: Right-joining (alef, dal, thal, reh, zain)
|
|
;; U: Non-joining (Hamza, etc. & zwnj)
|
|
;; T: Transparent (combining marks)
|
|
;; P: Already in Arabic Presentation Form A & B
|
|
(0x060C 0x060F ?U)
|
|
(0x0610 0x0615 ?T)
|
|
(0x061B ?U)
|
|
(0x061F ?U)
|
|
(0x0621 ?U)
|
|
(0x0622 0x0623 ?R)
|
|
(0x0624 ?R)
|
|
(0x0625 ?R)
|
|
(0x0626 ?D)
|
|
(0x0627 ?R)
|
|
(0x0628 ?D)
|
|
(0x0629 ?R)
|
|
(0x062A 0x062E ?D)
|
|
(0x062F 0x0632 ?R)
|
|
(0x0633 0x0647 ?D)
|
|
(0x0648 ?R)
|
|
(0x0649 0x064A ?D)
|
|
(0x064B 0x0658 ?T)
|
|
(0x0660 0x066D ?U)
|
|
(0x066E 0x066F ?D)
|
|
(0x0670 ?T)
|
|
(0x0671 0x0673 ?R)
|
|
(0x0674 0x0678 ?U)
|
|
(0x0679 0x0687 ?D)
|
|
(0x0688 0x0699 ?R)
|
|
(0x069A 0x06C3 ?D)
|
|
(0x06C4 0x06CB ?R)
|
|
(0x06CC 0x06CE ?D)
|
|
(0x06CF ?R)
|
|
(0x06D0 0x06D3 ?D)
|
|
(0x06D4 ?U)
|
|
(0x06D5 ?R)
|
|
(0x06D6 0x06E4 ?T)
|
|
(0x06E5 0x06E6 ?U)
|
|
(0x06E7 0x06E8 ?T)
|
|
(0x06E9 ?U)
|
|
(0x06EA 0x06ED ?T)
|
|
(0x06EE 0x06EF ?R)
|
|
(0x06F0 0x06F9 ?U)
|
|
(0x06FA 0x06FC ?D)
|
|
(0x06FD 0x06FE ?U)
|
|
(0x06FF ?D)
|
|
(0xFB50 0xFDFF ?P)
|
|
(0xFE70 0xFEFC ?P)
|
|
(0xFEF5 ?R)
|
|
(0xFEF7 ?R)
|
|
(0xFEF9 ?R)
|
|
(0xFEFB ?R)
|
|
(0x200C ?U)
|
|
(0x200D ?D)
|
|
)
|
|
|
|
(generator
|
|
(0
|
|
(cond
|
|
("PT*"
|
|
= combining *)
|
|
|
|
("D[^P]*"
|
|
(cond
|
|
("(.)(T*)([DR].*)"
|
|
(1 initial)
|
|
(2 combining *)
|
|
(3 join))
|
|
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
|
|
(1 isolated)
|
|
(2 combining *)
|
|
(3 disjoin))))
|
|
|
|
("([RU])(T*)([^P]*)"
|
|
(1 isolated)
|
|
(2 combining *)
|
|
(3 disjoin))
|
|
|
|
("(T+)([^P]*)"
|
|
(1 = *)
|
|
(2 disjoin)))
|
|
|
|
*)
|
|
|
|
(join
|
|
(cond
|
|
("D.*"
|
|
(cond
|
|
("(.)(T*)([DR].*)"
|
|
(1 medial)
|
|
(2 combining *)
|
|
(3 join))
|
|
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
|
|
(1 final)
|
|
(2 combining *)
|
|
(3 disjoin))))
|
|
|
|
("(.)(T*)(.*)" ; == (R)(T*)(.*)
|
|
(1 final)
|
|
(2 combining *)
|
|
(3 disjoin))))
|
|
|
|
(disjoin
|
|
(cond
|
|
("D.*"
|
|
(cond
|
|
("(.)(T*)([DR].*)"
|
|
(1 initial)
|
|
(2 combining *)
|
|
(3 join))
|
|
("(.)(T*)(.*)" ; == (D)(T*)(U.*)
|
|
(1 isolated)
|
|
(2 combining *)
|
|
(3 disjoin))))
|
|
|
|
("(.)(T*)(.*)" ; == ([RU])(T*)(.*)
|
|
(1 isolated)
|
|
(2 combining *)
|
|
(3 disjoin))))
|
|
|
|
(isolated
|
|
(cond
|
|
((range 0x060C 0x060F) =)
|
|
((0x061B) =)
|
|
((0x061F) =)
|
|
((0x0621) 0xFE80)
|
|
((0x0622) 0xFE81)
|
|
((0x0623) 0xFE83)
|
|
((0x0624) 0xFE85)
|
|
((0x0625) 0xFE87)
|
|
((0x0626) 0xFE89)
|
|
((0x0627) 0xFE8D)
|
|
((0x0628) 0xFE8F)
|
|
((0x0629) 0xFE93)
|
|
((0x062A) 0xFE95)
|
|
((0x062B) 0xFE99)
|
|
((0x062C) 0xFE9D)
|
|
((0x062D) 0xFEA1)
|
|
((0x062E) 0xFEA5)
|
|
((0x062F) 0xFEA9)
|
|
((0x0630) 0xFEAB)
|
|
((0x0631) 0xFEAD)
|
|
((0x0632) 0xFEAF)
|
|
((0x0633) 0xFEB1)
|
|
((0x0634) 0xFEB5)
|
|
((0x0635) 0xFEB9)
|
|
((0x0636) 0xFEBD)
|
|
((0x0637) 0xFEC1)
|
|
((0x0638) 0xFEC5)
|
|
((0x0639) 0xFEC9)
|
|
((0x0640) 0x0640)
|
|
((0x063A) 0xFECD)
|
|
((0x0641) 0xFED1)
|
|
((0x0642) 0xFED5)
|
|
((0x0643) 0xFED9)
|
|
((0x0644) 0xFEDD)
|
|
((0x0645) 0xFEE1)
|
|
((0x0646) 0xFEE5)
|
|
((0x0647) 0xFEE9)
|
|
((0x0648) 0xFEED)
|
|
((0x0649) 0xFEEF)
|
|
((0x064A) 0xFEF1)
|
|
((range 0x0660 0x066D) =)
|
|
((0x0671) 0xFB50)
|
|
((0x0674) =)
|
|
((0x0677) 0xFBDD)
|
|
((0x0679) 0xFB66)
|
|
((0x067A) 0xFB5E)
|
|
((0x067B) 0xFB52)
|
|
((0x067E) 0xFB56)
|
|
((0x067F) 0xFB62)
|
|
((0x0680) 0xFB5A)
|
|
((0x0683) 0xFB76)
|
|
((0x0684) 0xFB72)
|
|
((0x0686) 0xFB7A)
|
|
((0x0687) 0xFB7E)
|
|
((0x0688) 0xFB88)
|
|
((0x068C) 0xFB84)
|
|
((0x068D) 0xFB82)
|
|
((0x068E) 0xFB86)
|
|
((0x0691) 0xFB8C)
|
|
((0x0698) 0xFB8A)
|
|
((0x06A4) 0xFB6A)
|
|
((0x06A6) 0xFB6E)
|
|
((0x06A9) 0xFB8E)
|
|
((0x06AD) 0xFBD3)
|
|
((0x06AF) 0xFB92)
|
|
((0x06B1) 0xFB9A)
|
|
((0x06B3) 0xFB96)
|
|
((0x06BA) 0xFB9E)
|
|
((0x06BB) 0xFBA0)
|
|
((0x06BE) 0xFBAA)
|
|
((0x06C0) 0xFBA4)
|
|
((0x06C1) 0xFBA6)
|
|
((0x06C5) 0xFBE0)
|
|
((0x06C6) 0xFBD9)
|
|
((0x06C7) 0xFBD7)
|
|
((0x06C8) 0xFBDB)
|
|
((0x06C9) 0xFBE2)
|
|
((0x06CB) 0xFBDE)
|
|
((0x06CC) 0xFBFC)
|
|
((0x06D0) 0xFBE4)
|
|
((0x06D2) 0xFBAE)
|
|
((0x06D3) 0xFBB0)
|
|
((0x06D4) =)
|
|
((0x06D5) 0xFEE9)
|
|
((0x06E5) =)
|
|
((0x06E6) =)
|
|
((0x06E9) =)
|
|
((range 0x06F0 0x06F9) =)
|
|
((0x06FD) =)
|
|
((0x06FE) =)
|
|
((0xFEF5) =)
|
|
((0xFEF7) =)
|
|
((0xFEF9) =)
|
|
((0xFEFB) =)
|
|
((0x200C) =)
|
|
((0x200D) =)
|
|
))
|
|
|
|
(final
|
|
(cond
|
|
((0x0622) 0xFE82)
|
|
((0x0623) 0xFE84)
|
|
((0x0624) 0xFE86)
|
|
((0x0625) 0xFE88)
|
|
((0x0626) 0xFE8A)
|
|
((0x0627) 0xFE8E)
|
|
((0x0628) 0xFE90)
|
|
((0x0629) 0xFE94)
|
|
((0x062A) 0xFE96)
|
|
((0x062B) 0xFE9A)
|
|
((0x062C) 0xFE9E)
|
|
((0x062D) 0xFEA2)
|
|
((0x062E) 0xFEA6)
|
|
((0x062F) 0xFEAA)
|
|
((0x0630) 0xFEAC)
|
|
((0x0631) 0xFEAE)
|
|
((0x0632) 0xFEB0)
|
|
((0x0633) 0xFEB2)
|
|
((0x0634) 0xFEB6)
|
|
((0x0635) 0xFEBA)
|
|
((0x0636) 0xFEBE)
|
|
((0x0637) 0xFEC2)
|
|
((0x0638) 0xFEC6)
|
|
((0x0639) 0xFECA)
|
|
((0x0640) 0x0640)
|
|
((0x063A) 0xFECE)
|
|
((0x0641) 0xFED2)
|
|
((0x0642) 0xFED6)
|
|
((0x0643) 0xFEDA)
|
|
((0x0644) 0xFEDE)
|
|
((0x0645) 0xFEE2)
|
|
((0x0646) 0xFEE6)
|
|
((0x0647) 0xFEEA)
|
|
((0x0648) 0xFEEE)
|
|
((0x0649) 0xFEF0)
|
|
((0x064A) 0xFEF2)
|
|
((0x0671) 0xFB51)
|
|
((0x0679) 0xFB67)
|
|
((0x067A) 0xFB5F)
|
|
((0x067B) 0xFB52)
|
|
((0x067E) 0xFB57)
|
|
((0x067F) 0xFB63)
|
|
((0x0680) 0xFB5B)
|
|
((0x0683) 0xFB77)
|
|
((0x0684) 0xFB73)
|
|
((0x0686) 0xFB7B)
|
|
((0x0687) 0xFB7F)
|
|
((0x0688) 0xFB89)
|
|
((0x068C) 0xFB85)
|
|
((0x068D) 0xFB83)
|
|
((0x068E) 0xFB87)
|
|
((0x0691) 0xFB8D)
|
|
((0x0698) 0xFB8B)
|
|
((0x06A4) 0xFB6B)
|
|
((0x06A6) 0xFB6F)
|
|
((0x06A9) 0xFB8F)
|
|
((0x06AD) 0xFBD4)
|
|
((0x06AF) 0xFB93)
|
|
((0x06B1) 0xFB9B)
|
|
((0x06B3) 0xFB97)
|
|
((0x06BA) 0xFB9F)
|
|
((0x06BB) 0xFBA1)
|
|
((0x06BE) 0xFBAB)
|
|
((0x06C0) 0xFBA5)
|
|
((0x06C1) 0xFBA7)
|
|
((0x06C5) 0xFBE1)
|
|
((0x06C6) 0xFBDA)
|
|
((0x06C7) 0xFBD8)
|
|
((0x06C8) 0xFBDC)
|
|
((0x06C9) 0xFBE3)
|
|
((0x06CB) 0xFBDF)
|
|
((0x06CC) 0xFBFD)
|
|
((0x06D0) 0xFBE5)
|
|
((0x06D2) 0xFBAF)
|
|
((0x06D3) 0xFBB1)
|
|
((0x06D5) 0xFEEA)
|
|
((0xFEF5) 0xFEF6)
|
|
((0xFEF7) 0xFEF8)
|
|
((0xFEF9) 0xFEFA)
|
|
((0xFEFB) 0xFEFC)
|
|
((0x200C) =)
|
|
((0x200D) =)
|
|
))
|
|
|
|
(initial
|
|
(cond
|
|
((0x0626) 0xFE8B)
|
|
((0x0628) 0xFE91)
|
|
((0x062A) 0xFE97)
|
|
((0x062B) 0xFE9B)
|
|
((0x062C) 0xFE9F)
|
|
((0x062D) 0xFEA3)
|
|
((0x062E) 0xFEA7)
|
|
((0x0633) 0xFEB3)
|
|
((0x0634) 0xFEB7)
|
|
((0x0635) 0xFEBB)
|
|
((0x0636) 0xFEBF)
|
|
((0x0637) 0xFEC3)
|
|
((0x0638) 0xFEC7)
|
|
((0x0639) 0xFECB)
|
|
((0x0640) 0x0640)
|
|
((0x063A) 0xFECF)
|
|
((0x0641) 0xFED3)
|
|
((0x0642) 0xFED7)
|
|
((0x0643) 0xFEDB)
|
|
((0x0644) 0xFEDF)
|
|
((0x0645) 0xFEE3)
|
|
((0x0646) 0xFEE7)
|
|
((0x0647) 0xFEEB)
|
|
((0x0649) 0xFBE8)
|
|
((0x064A) 0xFEF3)
|
|
((0x0679) 0xFB68)
|
|
((0x067A) 0xFB60)
|
|
((0x067B) 0xFB54)
|
|
((0x067E) 0xFB58)
|
|
((0x067F) 0xFB64)
|
|
((0x0680) 0xFB5C)
|
|
((0x0683) 0xFB78)
|
|
((0x0684) 0xFB74)
|
|
((0x0686) 0xFB7C)
|
|
((0x0687) 0xFB80)
|
|
((0x06A4) 0xFB6C)
|
|
((0x06A6) 0xFB70)
|
|
((0x06A9) 0xFB90)
|
|
((0x06AD) 0xFBD5)
|
|
((0x06AF) 0xFB94)
|
|
((0x06B1) 0xFB9C)
|
|
((0x06B3) 0xFB98)
|
|
((0x06BA) 0xFEE7)
|
|
((0x06BB) 0xFBA2)
|
|
((0x06BE) 0xFBAC)
|
|
((0x06C1) 0xFBA8)
|
|
((0x06CC) 0xFBFE)
|
|
((0x06D0) 0xFBE6)
|
|
((0x200C) =)
|
|
((0x200D) =)
|
|
))
|
|
|
|
(medial
|
|
(cond
|
|
((0x0626) 0xFE8C)
|
|
((0x0628) 0xFE92)
|
|
((0x062A) 0xFE98)
|
|
((0x062B) 0xFE9C)
|
|
((0x062C) 0xFEA0)
|
|
((0x062D) 0xFEA4)
|
|
((0x062E) 0xFEA8)
|
|
((0x0633) 0xFEB4)
|
|
((0x0634) 0xFEB8)
|
|
((0x0635) 0xFEBC)
|
|
((0x0636) 0xFEC0)
|
|
((0x0637) 0xFEC4)
|
|
((0x0638) 0xFEC8)
|
|
((0x0639) 0xFECC)
|
|
((0x0640) 0x0640)
|
|
((0x063A) 0xFED0)
|
|
((0x0641) 0xFED4)
|
|
((0x0642) 0xFED8)
|
|
((0x0643) 0xFEDC)
|
|
((0x0644) 0xFEE0)
|
|
((0x0645) 0xFEE4)
|
|
((0x0646) 0xFEE8)
|
|
((0x0647) 0xFEEC)
|
|
((0x0649) 0xFBE9)
|
|
((0x064A) 0xFEF4)
|
|
((0x0679) 0xFB69)
|
|
((0x067A) 0xFB61)
|
|
((0x067B) 0xFB55)
|
|
((0x067E) 0xFB59)
|
|
((0x067F) 0xFB65)
|
|
((0x0680) 0xFB5D)
|
|
((0x0683) 0xFB79)
|
|
((0x0684) 0xFB75)
|
|
((0x0686) 0xFB7D)
|
|
((0x0687) 0xFB81)
|
|
((0x06A4) 0xFB6D)
|
|
((0x06A6) 0xFB71)
|
|
((0x06A9) 0xFB91)
|
|
((0x06AD) 0xFBD6)
|
|
((0x06AF) 0xFB95)
|
|
((0x06B1) 0xFB9D)
|
|
((0x06B3) 0xFB99)
|
|
((0x06BA) 0xFEE8)
|
|
((0x06BB) 0xFBA3)
|
|
((0x06BE) 0xFBAD)
|
|
((0x06C1) 0xFBA9)
|
|
((0x06CC) 0xFBFF)
|
|
((0x06D0) 0xFBE7)
|
|
((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-tc =)
|
|
((0x064E) tc+bc =)
|
|
((0x064F) tc+bc =)
|
|
((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-tc =)
|
|
((0x06E4) tc+bc =)
|
|
((0x06E7) tc+bc =)
|
|
((0x06E8) tc+bc =)
|
|
((0x06EA) bc-tc =)
|
|
((0x06EB) tc+bc =)
|
|
((0x06EC) tc+bc =)
|
|
((0x06ED) bc-tc =)
|
|
((0x200C) =)
|
|
((0x200D) =)
|
|
))
|
|
)
|
|
|
|
;; Copyright (C) 2003, 2004, 2007
|
|
;; National Institute of Advanced Industrial Science and Technology (AIST)
|
|
;; Registration Number H15PRO112
|
|
|
|
;; This file is part of the m17n database; a sub-part of the m17n
|
|
;; library.
|
|
|
|
;; The m17n library is free software; you can redistribute it and/or
|
|
;; modify it under the terms of the GNU Lesser General Public License
|
|
;; as published by the Free Software Foundation; either version 2.1 of
|
|
;; the License, or (at your option) any later version.
|
|
|
|
;; The m17n library is distributed in the hope that it will be useful,
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
;; Lesser General Public License for more details.
|
|
|
|
;; You should have received a copy of the GNU Lesser General Public
|
|
;; License along with the m17n library; if not, write to the Free
|
|
;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
|
;; Boston, MA 02110-1301, USA.
|
|
|
|
;; Local Variables:
|
|
;; mode: lisp
|
|
;; End:
|