Mercurial > emacs
changeset 41523:9dcf83921a38
*** empty log message ***
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Mon, 26 Nov 2001 00:05:57 +0000 |
parents | ee8692067cf0 |
children | 095a45698793 |
files | lisp/language/devan-util.el |
diffstat | 1 files changed, 350 insertions(+), 350 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/language/devan-util.el Mon Nov 26 00:05:33 2001 +0000 +++ b/lisp/language/devan-util.el Mon Nov 26 00:05:57 2001 +0000 @@ -154,268 +154,268 @@ ;; Problem:: ;; Can we generalize this methods to other Indian scripts? -;;; (defvar dev-char-glyph -;;; '(("$,15E(B" . "$,4 K(B") -;;; ("$,15F(B" . "$,4 K")(B") -;;; ("$,15~(B" . "$,4")(B") -;;; ("$,15G(B" . "$,4 \(B") -;;; ("$,15(B" . "$,4"*(B") -;;; ("$,155A(B" . "$,4"*(B\$,4"&(B") -;;; ("$,15H(B" . "$,4 \"'(B") -;;; ("$,15H5A(B" . "$,4 \"'"&(B") -;;; ("$,16 (B" . "$,4"2(B") -;;; ("$,16 5A(B" . "$,4"2"&(B") -;;; ("$,15I(B" . "$,4 ](B") -;;; ("$,16!(B" . "$,4"6(B") -;;; ("$,15J(B" . "$,4 ^"P(B") -;;; ("$,16"(B" . "$,4":(B") -;;; ("$,15K(B" . "$,4 `"Q(B") -;;; ("$,16#(B" . "$,4">(B") -;;; ;;("$,15L(B" . nil) ; not implemented. -;;; ("$,16$(B" . "$,4"?(B") -;;; ("$,15M(B" . "$,4 b"L(B") -;;; ("$,15M5A(B" . "$,4 b"$(B") -;;; ("$,15M5B(B" . "$,4 b"$(B") -;;; ("$,16%(B" . "\$,4"L(B") -;;; ("$,15N(B" . "$,4 b"@(B") -;;; ("$,15N5A(B" . "$,4 b"@"&(B") -;;; ("$,16&(B" . "\$,4"@(B") -;;; ("$,16&5A(B" . "\$,4"@(B\$,4"&(B") -;;; ("$,15O(B" . "$,4 b(B") -;;; ("$,16'(B" . "\$,4"D(B") -;;; ("$,16'5A(B" . "\$,4"D(B\$,4"&(B") -;;; ("$,15P(B" . "$,4 b"D(B") -;;; ("$,15P5A(B" . "$,4 b"D"&(B") -;;; ("$,16((B" . "\$,4"H(B") -;;; ("$,16(5A(B" . "\$,4"H(B\$,4"&(B") -;;; ("$,15Q(B" . "$,4 K")"L(B") ;; special rule for reodering. -;;; ("$,15Q5A(B" . "$,4 K")"$(B") -;;; ("$,15Q5B(B" . "$,4 K")"$(B") -;;; ("$,16)(B" . "\$,4")"L(B") -;;; ("$,16)5A(B" . "\$,4")"$(B") -;;; ("$,16)5B(B" . "\$,4")"$(B") -;;; ("$,15R(B" . "$,4 K")"@(B") -;;; ("$,15R5A(B" . "$,4 K")"@"&(B") -;;; ("$,16*(B" . "\$,4")"@(B") -;;; ("$,16*5A(B" . "\$,4")"@"&(B") -;;; ("$,15S(B" . "$,4 K")"D(B") -;;; ("$,15S5A(B" . "$,4 K")"D"&(B") -;;; ("$,16+(B" . "\$,4")"D(B") -;;; ("$,16+5A(B" . "\$,4")"D"&(B") -;;; ("$,15T(B" . "$,4 K")"H(B") -;;; ("$,15T5A(B" . "$,4 K")"H"&(B") -;;; ("$,16,(B" . "\$,4")"H(B") -;;; ("$,16,5A(B" . "\$,4")"H"&(B") -;;; ("$,16@(B" . "$,4 a"Q(B") -;;; ;;("$,16B(B" . nil) -;;; ;;("$,16A(B" . nil) -;;; ;;("$,16C(B" . nil) +(defvar dev-char-glyph + '(("$,15E(B" . "$,4 K(B") + ("$,15F(B" . "$,4 K")(B") + ("$,15~(B" . "$,4")(B") + ("$,15G(B" . "$,4 \(B") + ("$,15(B" . "$,4"*(B") + ("$,155A(B" . "$,4"*(B\$,4"&(B") + ("$,15H(B" . "$,4 \"'(B") + ("$,15H5A(B" . "$,4 \"'"&(B") + ("$,16 (B" . "$,4"2(B") + ("$,16 5A(B" . "$,4"2"&(B") + ("$,15I(B" . "$,4 ](B") + ("$,16!(B" . "$,4"6(B") + ("$,15J(B" . "$,4 ^"P(B") + ("$,16"(B" . "$,4":(B") + ("$,15K(B" . "$,4 `"Q(B") + ("$,16#(B" . "$,4">(B") + ;;("$,15L(B" . nil) ; not implemented. + ("$,16$(B" . "$,4"?(B") + ("$,15M(B" . "$,4 b"L(B") + ("$,15M5A(B" . "$,4 b"$(B") + ("$,15M5B(B" . "$,4 b"$(B") + ("$,16%(B" . "\$,4"L(B") + ("$,15N(B" . "$,4 b"@(B") + ("$,15N5A(B" . "$,4 b"@"&(B") + ("$,16&(B" . "\$,4"@(B") + ("$,16&5A(B" . "\$,4"@(B\$,4"&(B") + ("$,15O(B" . "$,4 b(B") + ("$,16'(B" . "\$,4"D(B") + ("$,16'5A(B" . "\$,4"D(B\$,4"&(B") + ("$,15P(B" . "$,4 b"D(B") + ("$,15P5A(B" . "$,4 b"D"&(B") + ("$,16((B" . "\$,4"H(B") + ("$,16(5A(B" . "\$,4"H(B\$,4"&(B") + ("$,15Q(B" . "$,4 K")"L(B") ;; special rule for reodering. + ("$,15Q5A(B" . "$,4 K")"$(B") + ("$,15Q5B(B" . "$,4 K")"$(B") + ("$,16)(B" . "\$,4")"L(B") + ("$,16)5A(B" . "\$,4")"$(B") + ("$,16)5B(B" . "\$,4")"$(B") + ("$,15R(B" . "$,4 K")"@(B") + ("$,15R5A(B" . "$,4 K")"@"&(B") + ("$,16*(B" . "\$,4")"@(B") + ("$,16*5A(B" . "\$,4")"@"&(B") + ("$,15S(B" . "$,4 K")"D(B") + ("$,15S5A(B" . "$,4 K")"D"&(B") + ("$,16+(B" . "\$,4")"D(B") + ("$,16+5A(B" . "\$,4")"D"&(B") + ("$,15T(B" . "$,4 K")"H(B") + ("$,15T5A(B" . "$,4 K")"H"&(B") + ("$,16,(B" . "\$,4")"H(B") + ("$,16,5A(B" . "\$,4")"H"&(B") + ("$,16@(B" . "$,4 a"Q(B") + ;;("$,16B(B" . nil) + ;;("$,16A(B" . nil) + ;;("$,16C(B" . nil) -;;; ;; GRUTTALS -;;; ("$,15U(B" . "$,4 e"R(B") -;;; ("$,15U6-(B" . "$,4 c(B") -;;; ("$,15U6-5p(B" . "$,4 g"R(B") -;;; ("$,15U6-5d(B" . "$,4 h"R(B") -;;; ("$,15U6-5w(B" . "$,4 i")(B") -;;; ("$,15U6-5w6-(B" . "$,4 i(B") + ;; GRUTTALS + ("$,15U(B" . "$,4 e"R(B") + ("$,15U6-(B" . "$,4 c(B") + ("$,15U6-5p(B" . "$,4 g"R(B") + ("$,15U6-5d(B" . "$,4 h"R(B") + ("$,15U6-5w(B" . "$,4 i")(B") + ("$,15U6-5w6-(B" . "$,4 i(B") -;;; ("$,15V(B" . "$,4 j")(B") -;;; ("$,15V6-(B" . "$,4 j(B") -;;; ("$,15V6-5p(B" . "$,4 l")(B") -;;; ("$,15V6-5p6-(B" . "$,4 l(B") + ("$,15V(B" . "$,4 j")(B") + ("$,15V6-(B" . "$,4 j(B") + ("$,15V6-5p(B" . "$,4 l")(B") + ("$,15V6-5p6-(B" . "$,4 l(B") -;;; ("$,15W(B" . "$,4 m")(B") -;;; ("$,15W6-(B" . "$,4 m(B") -;;; ("$,15W6-5p(B" . "$,4 o")(B") -;;; ("$,15W6-5p6-(B" . "$,4 o(B") + ("$,15W(B" . "$,4 m")(B") + ("$,15W6-(B" . "$,4 m(B") + ("$,15W6-5p(B" . "$,4 o")(B") + ("$,15W6-5p6-(B" . "$,4 o(B") -;;; ("$,15X(B" . "$,4 p")(B") -;;; ("$,15X6-(B" . "$,4 p(B") -;;; ("$,15X6-5p(B" . "$,4 q")(B") -;;; ("$,15X6-5p6-(B" . "$,4 q(B") + ("$,15X(B" . "$,4 p")(B") + ("$,15X6-(B" . "$,4 p(B") + ("$,15X6-5p(B" . "$,4 q")(B") + ("$,15X6-5p6-(B" . "$,4 q(B") -;;; ("$,15Y(B" . "$,4 r"S(B") -;;; ;; PALATALS -;;; ("$,15Z(B" . "$,4 s")(B") -;;; ("$,15Z6-(B" . "$,4 s(B") -;;; ("$,15Z6-5p(B" . "$,4 t")(B") -;;; ("$,15Z6-5p6-(B" . "$,4 t(B") + ("$,15Y(B" . "$,4 r"S(B") + ;; PALATALS + ("$,15Z(B" . "$,4 s")(B") + ("$,15Z6-(B" . "$,4 s(B") + ("$,15Z6-5p(B" . "$,4 t")(B") + ("$,15Z6-5p6-(B" . "$,4 t(B") -;;; ("$,15[(B" . "$,4 u"T(B") + ("$,15[(B" . "$,4 u"T(B") -;;; ("$,15\(B" . "$,4 v")(B") -;;; ("$,15\6-(B" . "$,4 v(B") -;;; ("$,15\6-5p(B" . "$,4 x")(B") -;;; ("$,15\6-5p6-(B" . "$,4 x(B") -;;; ("$,15\6-5^(B" . "$,4 y")(B") -;;; ("$,15\6-5^6-(B" . "$,4 y(B") + ("$,15\(B" . "$,4 v")(B") + ("$,15\6-(B" . "$,4 v(B") + ("$,15\6-5p(B" . "$,4 x")(B") + ("$,15\6-5p6-(B" . "$,4 x(B") + ("$,15\6-5^(B" . "$,4 y")(B") + ("$,15\6-5^6-(B" . "$,4 y(B") -;;; ("$,15](B" . "$,4 z")(B") -;;; ("$,15]6-(B" . "$,4 z(B") -;;; ("$,15]6-5p(B" . "$,4 {")(B") -;;; ("$,15]6-5p6-(B" . "$,4 {(B") + ("$,15](B" . "$,4 z")(B") + ("$,15]6-(B" . "$,4 z(B") + ("$,15]6-5p(B" . "$,4 {")(B") + ("$,15]6-5p6-(B" . "$,4 {(B") -;;; ("$,15^(B" . "$,4 |")(B") -;;; ("$,15^6-(B" . "$,4 |(B") -;;; ;; CEREBRALS -;;; ("$,15_(B" . "$,4 }"U(B") -;;; ("$,15_6-5_(B" . "$,4 ~"U(B") -;;; ("$,15_6-5`(B" . "$,4 "U(B") + ("$,15^(B" . "$,4 |")(B") + ("$,15^6-(B" . "$,4 |(B") + ;; CEREBRALS + ("$,15_(B" . "$,4 }"U(B") + ("$,15_6-5_(B" . "$,4 ~"U(B") + ("$,15_6-5`(B" . "$,4 "U(B") -;;; ("$,15`(B" . "$,4! "V(B") -;;; ("$,15`6-5`(B" . "$,4!!"V(B") + ("$,15`(B" . "$,4! "V(B") + ("$,15`6-5`(B" . "$,4!!"V(B") -;;; ("$,15a(B" . "$,4!""W(B") -;;; ("$,15a6-5a(B" . "$,4!$"W(B") -;;; ("$,15a6-5b(B" . "$,4!%"W(B") + ("$,15a(B" . "$,4!""W(B") + ("$,15a6-5a(B" . "$,4!$"W(B") + ("$,15a6-5b(B" . "$,4!%"W(B") -;;; ("$,15b(B" . "$,4!&"X(B") + ("$,15b(B" . "$,4!&"X(B") -;;; ("$,15c(B" . "$,4!(")(B") -;;; ("$,15c6-(B" . "$,4!((B") -;;; ;; DENTALS -;;; ("$,15d(B" . "$,4!)")(B") -;;; ("$,15d6-(B" . "$,4!)(B") -;;; ("$,15d6-5p(B" . "$,4!*")(B") -;;; ("$,15d6-5p6-(B" . "$,4!*(B") -;;; ("$,15d6-5d(B" . "$,4!+")(B") -;;; ("$,15d6-5d6-(B" . "$,4!+(B") + ("$,15c(B" . "$,4!(")(B") + ("$,15c6-(B" . "$,4!((B") + ;; DENTALS + ("$,15d(B" . "$,4!)")(B") + ("$,15d6-(B" . "$,4!)(B") + ("$,15d6-5p(B" . "$,4!*")(B") + ("$,15d6-5p6-(B" . "$,4!*(B") + ("$,15d6-5d(B" . "$,4!+")(B") + ("$,15d6-5d6-(B" . "$,4!+(B") -;;; ("$,15e(B" . "$,4!,")(B") -;;; ("$,15e6-(B" . "$,4!,(B") -;;; ("$,15e6-5p(B" . "$,4!-")(B") -;;; ("$,15e6-5p6-(B" . "$,4!-(B") + ("$,15e(B" . "$,4!,")(B") + ("$,15e6-(B" . "$,4!,(B") + ("$,15e6-5p(B" . "$,4!-")(B") + ("$,15e6-5p6-(B" . "$,4!-(B") -;;; ("$,15f(B" . "$,4!."Y(B") -;;; ("$,15f6#(B" . "$,4!/"Y(B") -;;; ("$,15f6-5p(B" . "$,4!0"Y(B") -;;; ("$,15f6-5f(B" . "$,4!1"Y(B") -;;; ("$,15f6-5g(B" . "$,4!2"Y(B") -;;; ("$,15f6-5n(B" . "$,4!3(B") -;;; ("$,15f6-5o(B" . "$,4!4(B") -;;; ("$,15f6-5u(B" . "$,4!5"Y(B") + ("$,15f(B" . "$,4!."Y(B") + ("$,15f6#(B" . "$,4!/"Y(B") + ("$,15f6-5p(B" . "$,4!0"Y(B") + ("$,15f6-5f(B" . "$,4!1"Y(B") + ("$,15f6-5g(B" . "$,4!2"Y(B") + ("$,15f6-5n(B" . "$,4!3(B") + ("$,15f6-5o(B" . "$,4!4(B") + ("$,15f6-5u(B" . "$,4!5"Y(B") -;;; ("$,15g(B" . "$,4!6")(B") -;;; ("$,15g6-(B" . "$,4!6(B") -;;; ("$,15g6-5p(B" . "$,4!7")(B") -;;; ("$,15g6-5p6-(B" . "$,4!7(B") + ("$,15g(B" . "$,4!6")(B") + ("$,15g6-(B" . "$,4!6(B") + ("$,15g6-5p(B" . "$,4!7")(B") + ("$,15g6-5p6-(B" . "$,4!7(B") -;;; ("$,15h(B" . "$,4!8")(B") -;;; ("$,15h6-(B" . "$,4!8(B") -;;; ("$,15h6-5p(B" . "$,4!9")(B") -;;; ("$,15h6-5p6-(B" . "$,4!9")(B") -;;; ("$,15h6-5h(B" . "$,4!:")(B") -;;; ("$,15h6-5h6-(B" . "$,4!:(B") + ("$,15h(B" . "$,4!8")(B") + ("$,15h6-(B" . "$,4!8(B") + ("$,15h6-5p(B" . "$,4!9")(B") + ("$,15h6-5p6-(B" . "$,4!9")(B") + ("$,15h6-5h(B" . "$,4!:")(B") + ("$,15h6-5h6-(B" . "$,4!:(B") -;;; ("$,15i(B" . "$,4!8"#")(B") -;;; ;; LABIALS -;;; ("$,15j(B" . "$,4!;")(B") -;;; ("$,15j6-(B" . "$,4!;(B") -;;; ("$,15j6-5p(B" . "$,4!<")(B") -;;; ("$,15j6-5p6-(B" . "$,4!<(B") + ("$,15i(B" . "$,4!8"#")(B") + ;; LABIALS + ("$,15j(B" . "$,4!;")(B") + ("$,15j6-(B" . "$,4!;(B") + ("$,15j6-5p(B" . "$,4!<")(B") + ("$,15j6-5p6-(B" . "$,4!<(B") -;;; ("$,15k(B" . "$,4!a"[(B") -;;; ("$,15k6-(B" . "$,4!=(B") -;;; ("$,15k6-5p(B" . "$,4!c"[(B") + ("$,15k(B" . "$,4!a"[(B") + ("$,15k6-(B" . "$,4!=(B") + ("$,15k6-5p(B" . "$,4!c"[(B") -;;; ("$,15l(B" . "$,4!d")(B") -;;; ("$,15l6-(B" . "$,4!d(B") -;;; ("$,15l6-5p(B" . "$,4!e")(B") -;;; ("$,15l6-5p6-(B" . "$,4!e(B") + ("$,15l(B" . "$,4!d")(B") + ("$,15l6-(B" . "$,4!d(B") + ("$,15l6-5p(B" . "$,4!e")(B") + ("$,15l6-5p6-(B" . "$,4!e(B") -;;; ("$,15m(B" . "$,4!f")(B") -;;; ("$,15m6-(B" . "$,4!f(B") -;;; ("$,15m6-5p(B" . "$,4!g")(B") -;;; ("$,15m6-5p6-(B" . "$,4!g(B") + ("$,15m(B" . "$,4!f")(B") + ("$,15m6-(B" . "$,4!f(B") + ("$,15m6-5p(B" . "$,4!g")(B") + ("$,15m6-5p6-(B" . "$,4!g(B") -;;; ("$,15n(B" . "$,4!h")(B") -;;; ("$,15n6-(B" . "$,4!h(B") -;;; ("$,15n6-5p(B" . "$,4!i")(B") -;;; ("$,15n6-5p6-(B" . "$,4!i(B") -;;; ;; SEMIVOWELS -;;; ("$,15o(B" . "$,4!j")(B") -;;; ("$,15o6-(B" . "$,4!j(B") -;;; ("$,15o6-5p(B" . "$,4!k")(B") -;;; ("$,15o6-5p6-(B" . "$,4!k(B") -;;; ("$,16-5o(B" . "$,4!l(B") ;; when every ohter lig. fails. + ("$,15n(B" . "$,4!h")(B") + ("$,15n6-(B" . "$,4!h(B") + ("$,15n6-5p(B" . "$,4!i")(B") + ("$,15n6-5p6-(B" . "$,4!i(B") + ;; SEMIVOWELS + ("$,15o(B" . "$,4!j")(B") + ("$,15o6-(B" . "$,4!j(B") + ("$,15o6-5p(B" . "$,4!k")(B") + ("$,15o6-5p6-(B" . "$,4!k(B") + ("$,16-5o(B" . "$,4!l(B") ;; when every ohter lig. fails. -;;; ("$,15p(B" . "$,4!n"W(B") -;;; ;; ("$,15p6-(B" . "\$,4"'(B") ;; special case. only the topmost pos. -;;; ("$,15q(B" . "$,4!n"#"W(B") -;;; ("$,15q6-(B" . "$,4!m(B") ;; IS 13194 speical rule. -;;; ("$,15p6!(B" . "$,4!o"[(B") -;;; ("$,15p6"(B" . "$,4!p"\(B") + ("$,15p(B" . "$,4!n"W(B") + ;; ("$,15p6-(B" . "\$,4"'(B") ;; special case. only the topmost pos. + ("$,15q(B" . "$,4!n"#"W(B") + ("$,15q6-(B" . "$,4!m(B") ;; IS 13194 speical rule. + ("$,15p6!(B" . "$,4!o"[(B") + ("$,15p6"(B" . "$,4!p"\(B") -;;; ("$,15r(B" . "$,4!q")(B") -;;; ("$,15r6-(B" . "$,4!q(B") -;;; ("$,15s(B" . "$,4!s(B") -;;; ("$,15s6-(B" . "$,4!r(B") -;;; ("$,15t(B" . "$,4!s"#(B") -;;; ("$,15t6-(B" . "$,4!r"#(B") + ("$,15r(B" . "$,4!q")(B") + ("$,15r6-(B" . "$,4!q(B") + ("$,15s(B" . "$,4!s(B") + ("$,15s6-(B" . "$,4!r(B") + ("$,15t(B" . "$,4!s"#(B") + ("$,15t6-(B" . "$,4!r"#(B") -;;; ("$,15u(B" . "$,4!t")(B") -;;; ("$,15u6-(B" . "$,4!t(B") -;;; ("$,15u6-5p(B" . "$,4!u")(B") -;;; ("$,15u6-5p6-(B" . "$,4!u(B") -;;; ;; SIBILANTS -;;; ("$,15v(B" . "$,4!v")(B") -;;; ("$,15v6-(B" . "$,4!v(B") -;;; ("$,15v6-5u(B" . "$,4!w")(B") -;;; ("$,15v6-5u6-(B" . "$,4!w(B") -;;; ("$,15v6-5p(B" . "$,4!x")(B") -;;; ("$,15v6-5p6-(B" . "$,4!x(B") + ("$,15u(B" . "$,4!t")(B") + ("$,15u6-(B" . "$,4!t(B") + ("$,15u6-5p(B" . "$,4!u")(B") + ("$,15u6-5p6-(B" . "$,4!u(B") + ;; SIBILANTS + ("$,15v(B" . "$,4!v")(B") + ("$,15v6-(B" . "$,4!v(B") + ("$,15v6-5u(B" . "$,4!w")(B") + ("$,15v6-5u6-(B" . "$,4!w(B") + ("$,15v6-5p(B" . "$,4!x")(B") + ("$,15v6-5p6-(B" . "$,4!x(B") -;;; ("$,15w(B" . "$,4!y")(B") -;;; ("$,15w6-(B" . "$,4!y(B") -;;; ("$,15x(B" . "$,4!z")(B") -;;; ("$,15x6-(B" . "$,4!z(B") -;;; ("$,15x6-5p(B" . "$,4!{")(B") -;;; ("$,15x6-5p6-(B" . "$,4!{(B") + ("$,15w(B" . "$,4!y")(B") + ("$,15w6-(B" . "$,4!y(B") + ("$,15x(B" . "$,4!z")(B") + ("$,15x6-(B" . "$,4!z(B") + ("$,15x6-5p(B" . "$,4!{")(B") + ("$,15x6-5p6-(B" . "$,4!{(B") -;;; ("$,15y(B" . "$,4!}(B") -;;; ("$,15y6-(B" . "$,4!|(B") -;;; ("$,15y6#(B" . "$,4!~(B") -;;; ("$,15y6-5p(B" . "$,4!(B") -;;; ("$,15y6-5n(B" . "$,4" (B") -;;; ("$,15y6-5o(B" . "$,4"!(B") -;;; ;; NUKTAS -;;; ("$,168(B" . "$,4 f"R"S(B") -;;; ("$,1686-(B" . "$,4 d(B") -;;; ("$,169(B" . "$,4 k")(B") -;;; ("$,1696-(B" . "$,4 k(B") -;;; ("$,16:(B" . "$,4 n")(B") -;;; ("$,16:6-(B" . "$,4 n(B") -;;; ("$,16;(B" . "$,4 w")(B") -;;; ("$,16;6-(B" . "$,4 w(B") -;;; ("$,16<(B" . "$,4!#"W(B") -;;; ("$,16=(B" . "$,4!'"X(B") -;;; ("$,16>(B" . "$,4!b"[(B") -;;; ("$,16>6-(B" . "$,4!>(B") -;;; ("$,16?(B" . "$,4!j"#")(B") -;;; ;; misc modifiers. -;;; ("$,15A(B" . "\$,4"$(B") -;;; ("$,15B(B" . "\$,4"&(B") -;;; ("$,15C(B" . "$,4 F(B") -;;; ("$,15|(B" . "$,4"#(B") -;;; ("$,15}(B" . "$,4 E(B") -;;; ("$,16-(B" . "$,4""(B") -;;; ("$,16-5p(B" . "$,4"%(B") ;; following "r" -;;; ;; ("$,160(B" . "$,4 D(B") -;;; ;; ("$,16D(B" . "$,4 J(B") -;;; ;; ("$,16F(B" . "") -;;; ;; ("$,16G(B" . "") -;;; ;; ("$,16H(B" . "") -;;; ;; ("$,16I(B" . "") -;;; ;; ("$,16J(B" . "") -;;; ;; ("$,16K(B" . "") -;;; ;; ("$,16L(B" . "") -;;; ;; ("$,16M(B" . "") -;;; ;; ("$,16N(B" . "") -;;; ;; ("$,16O(B" . "") -;;; ) -;;; "Devanagari characters to glyphs conversion table. -;;; Default value contains only the basic rules. You may add your own -;;; preferred rule from the sanskrit fonts." ) + ("$,15y(B" . "$,4!}(B") + ("$,15y6-(B" . "$,4!|(B") + ("$,15y6#(B" . "$,4!~(B") + ("$,15y6-5p(B" . "$,4!(B") + ("$,15y6-5n(B" . "$,4" (B") + ("$,15y6-5o(B" . "$,4"!(B") + ;; NUKTAS + ("$,168(B" . "$,4 f"R"S(B") + ("$,1686-(B" . "$,4 d(B") + ("$,169(B" . "$,4 k")(B") + ("$,1696-(B" . "$,4 k(B") + ("$,16:(B" . "$,4 n")(B") + ("$,16:6-(B" . "$,4 n(B") + ("$,16;(B" . "$,4 w")(B") + ("$,16;6-(B" . "$,4 w(B") + ("$,16<(B" . "$,4!#"W(B") + ("$,16=(B" . "$,4!'"X(B") + ("$,16>(B" . "$,4!b"[(B") + ("$,16>6-(B" . "$,4!>(B") + ("$,16?(B" . "$,4!j"#")(B") + ;; misc modifiers. + ("$,15A(B" . "\$,4"$(B") + ("$,15B(B" . "\$,4"&(B") + ("$,15C(B" . "$,4 F(B") + ("$,15|(B" . "$,4"#(B") + ("$,15}(B" . "$,4 E(B") + ("$,16-(B" . "$,4""(B") + ("$,16-5p(B" . "$,4"%(B") ;; following "r" + ;; ("$,160(B" . "$,4 D(B") + ;; ("$,16D(B" . "$,4 J(B") + ;; ("$,16F(B" . "") + ;; ("$,16G(B" . "") + ;; ("$,16H(B" . "") + ;; ("$,16I(B" . "") + ;; ("$,16J(B" . "") + ;; ("$,16K(B" . "") + ;; ("$,16L(B" . "") + ;; ("$,16M(B" . "") + ;; ("$,16N(B" . "") + ;; ("$,16O(B" . "") + ) + "Devanagari characters to glyphs conversion table. +Default value contains only the basic rules. You may add your own +preferred rule from the sanskrit fonts." ) (defvar dev-char-glyph-hash (let* ((hash (makehash 'equal))) @@ -430,34 +430,34 @@ ;; it is supposed that glyphs are ordered in ;; [consonant/nukta] - [matra/halant] - [preceding-r] - [anuswar]. -;;; (defvar dev-glyph-glyph -;;; '(("\$,4"'(B\$,4"&(B" . "\$,4"((B") -;;; ("\$,4"'(B\$,4"$(B" . "\$,4"((B") -;;; ("$,4"*(B\$,4"&(B" . "$,4"+(B") -;;; ("$,4"*(B\$,4"'(B" . "$,4",(B") -;;; ("$,4"*(B\$,4"'(B\$,4"&(B" . "$,4"-(B") -;;; ("$,4"2(B\$,4"&(B" . "$,4"3(B") -;;; ("$,4"2(B\$,4"'(B" . "$,4"4(B") -;;; ("$,4"2(B\$,4"'(B\$,4"&(B" . "$,4"5(B") -;;; ("$,4"#(B\$,4"6(B" . "$,4"7(B") -;;; ("$,4"%(B\$,4"6(B" . "$,4"8(B") -;;; ;;("$,4"6(B" . "$,4"9(B") -;;; ("$,4"#(B\$,4":(B" . "$,4";(B") -;;; ("$,4"%(B\$,4":(B" . "$,4"<(B") -;;; ;;("$,4":(B" . "$,4"=(B") -;;; ("\$,4"@(B\$,4"&(B" . "\$,4"A(B") -;;; ("\$,4"@(B\$,4"'(B" . "\$,4"B(B") -;;; ("\$,4"@(B\$,4"'(B\$,4"&(B" . "\$,4"C(B") -;;; ("\$,4"D(B\$,4"&(B" . "\$,4"E(B") -;;; ("\$,4"D(B\$,4"'(B" . "\$,4"F(B") -;;; ("\$,4"D(B\$,4"'(B\$,4"&(B" . "\$,4"G(B") -;;; ("\$,4"H(B\$,4"&(B" . "\$,4"I(B") -;;; ("\$,4"H(B\$,4"'(B" . "\$,4"J(B") -;;; ("\$,4"H(B\$,4"'(B\$,4"&(B" . "\$,4"K(B") -;;; ("\$,4"L(B\$,4"&(B" . "\$,4"M(B") -;;; ("\$,4"L(B\$,4"'(B" . "\$,4"N(B") -;;; ("\$,4"L(B\$,4"'(B\$,4"&(B" . "\$,4"O(B") -;;; )) +(defvar dev-glyph-glyph + '(("\$,4"'(B\$,4"&(B" . "\$,4"((B") + ("\$,4"'(B\$,4"$(B" . "\$,4"((B") + ("$,4"*(B\$,4"&(B" . "$,4"+(B") + ("$,4"*(B\$,4"'(B" . "$,4",(B") + ("$,4"*(B\$,4"'(B\$,4"&(B" . "$,4"-(B") + ("$,4"2(B\$,4"&(B" . "$,4"3(B") + ("$,4"2(B\$,4"'(B" . "$,4"4(B") + ("$,4"2(B\$,4"'(B\$,4"&(B" . "$,4"5(B") + ("$,4"#(B\$,4"6(B" . "$,4"7(B") + ("$,4"%(B\$,4"6(B" . "$,4"8(B") + ;;("$,4"6(B" . "$,4"9(B") + ("$,4"#(B\$,4":(B" . "$,4";(B") + ("$,4"%(B\$,4":(B" . "$,4"<(B") + ;;("$,4":(B" . "$,4"=(B") + ("\$,4"@(B\$,4"&(B" . "\$,4"A(B") + ("\$,4"@(B\$,4"'(B" . "\$,4"B(B") + ("\$,4"@(B\$,4"'(B\$,4"&(B" . "\$,4"C(B") + ("\$,4"D(B\$,4"&(B" . "\$,4"E(B") + ("\$,4"D(B\$,4"'(B" . "\$,4"F(B") + ("\$,4"D(B\$,4"'(B\$,4"&(B" . "\$,4"G(B") + ("\$,4"H(B\$,4"&(B" . "\$,4"I(B") + ("\$,4"H(B\$,4"'(B" . "\$,4"J(B") + ("\$,4"H(B\$,4"'(B\$,4"&(B" . "\$,4"K(B") + ("\$,4"L(B\$,4"&(B" . "\$,4"M(B") + ("\$,4"L(B\$,4"'(B" . "\$,4"N(B") + ("\$,4"L(B\$,4"'(B\$,4"&(B" . "\$,4"O(B") + )) (defvar dev-glyph-glyph-hash (let* ((hash (makehash 'equal))) (mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) @@ -468,11 +468,11 @@ ;; yet another glyph-to-glyph conversions. -;;; (defvar dev-glyph-glyph-2 -;;; '(("$,4"*(B" . "$,4".(B") -;;; ("$,4"+(B" . "$,4"/(B") -;;; ("$,4",(B" . "$,4"0(B") -;;; ("$,4"-(B" . "$,4"1(B"))) +(defvar dev-glyph-glyph-2 + '(("$,4"*(B" . "$,4".(B") + ("$,4"+(B" . "$,4"/(B") + ("$,4",(B" . "$,4"0(B") + ("$,4"-(B" . "$,4"1(B"))) (defvar dev-glyph-glyph-2-hash (let* ((hash (makehash 'equal))) (mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) @@ -551,87 +551,87 @@ (devanagari-compose-syllable-region (point-min) (point-max)) (buffer-string))) -;;; (defun devanagari-compose-syllable-region (from to) -;;; "Compose devanagari syllable in region FROM to TO." -;;; (let ((glyph-str nil) (cons-num 0) glyph-str-list -;;; (last-halant nil) (preceding-r nil) (last-modifier nil) -;;; (last-char (char-before to)) match-str -;;; glyph-block split-pos) -;;; (save-excursion -;;; (save-restriction -;;; ;;; *** char-to-glyph conversion *** -;;; ;; Special rule 1. -- Last halant must be preserved. -;;; (if (eq last-char ?$,16-(B) -;;; (progn -;;; (setq last-halant t) -;;; (narrow-to-region from (1- to))) -;;; (narrow-to-region from to) -;;; ;; note if the last char is modifier. -;;; (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B)) -;;; (setq last-modifier t))) -;;; (goto-char (point-min)) -;;; ;; Special rule 2. -- preceding "r halant" must be modifier. -;;; (when (looking-at "$,15p6-(B.") -;;; (setq preceding-r t) -;;; (goto-char (+ 2 (point)))) -;;; ;; translate the rest characters into glyphs -;;; (while (re-search-forward dev-char-glyph-regexp nil t) -;;; (setq match-str (match-string 0)) -;;; (setq glyph-str -;;; (concat glyph-str -;;; (gethash match-str dev-char-glyph-hash))) -;;; ;; count the number of consonant-glyhs. -;;; (if (string-match devanagari-consonant match-str) -;;; (setq cons-num (1+ cons-num)))) -;;; ;; preceding-r must be attached before the anuswar if exists. -;;; (if preceding-r -;;; (if last-modifier -;;; (setq glyph-str (concat (substring glyph-str 0 -1) -;;; "$,4"'(B" (substring glyph-str -1))) -;;; (setq glyph-str (concat glyph-str "$,4"'(B")))) -;;; (if last-halant (setq glyph-str (concat glyph-str "$,4""(B"))) -;;; ;;; *** glyph-to-glyph conversion *** -;;; (when (string-match dev-glyph-glyph-regexp glyph-str) -;;; (setq glyph-str -;;; (replace-match (gethash (match-string 0 glyph-str) -;;; dev-glyph-glyph-hash) -;;; nil t glyph-str)) -;;; (if (and (> cons-num 1) -;;; (string-match dev-glyph-glyph-2-regexp glyph-str)) -;;; (setq glyph-str -;;; (replace-match (gethash (match-string 0 glyph-str) -;;; dev-glyph-glyph-2-hash) -;;; nil t glyph-str)))) -;;; ;;; *** glyph reordering *** -;;; (while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str)) -;;; (setq glyph-block (substring glyph-str 0 (1+ split-pos))) -;;; (setq glyph-str (substring glyph-str (1+ split-pos))) -;;; (setq -;;; glyph-block -;;; (if (string-match dev-glyph-right-modifier-regexp glyph-block) -;;; (sort (string-to-list glyph-block) -;;; (function (lambda (x y) -;;; (< (get-char-code-property x 'composition-order) -;;; (get-char-code-property y 'composition-order))))) -;;; (sort (string-to-list glyph-block) -;;; (function (lambda (x y) -;;; (let ((xo (get-char-code-property x 'composition-order)) -;;; (yo (get-char-code-property y 'composition-order))) -;;; (if (= xo 2) nil (if (= yo 2) t (< xo yo))))))))) -;;; (setq glyph-str-list (nconc glyph-str-list glyph-block))) -;;; ;; concatenate and attach reference-points. -;;; (setq glyph-str -;;; (cdr -;;; (apply -;;; 'nconc -;;; (mapcar -;;; (function (lambda (x) -;;; (list -;;; (or (get-char-code-property x 'reference-point) -;;; '(5 . 3) ;; default reference point. -;;; ) -;;; x))) -;;; glyph-str-list)))))) -;;; (compose-region from to glyph-str))) +(defun devanagari-compose-syllable-region (from to) + "Compose devanagari syllable in region FROM to TO." + (let ((glyph-str nil) (cons-num 0) glyph-str-list + (last-halant nil) (preceding-r nil) (last-modifier nil) + (last-char (char-before to)) match-str + glyph-block split-pos) + (save-excursion + (save-restriction + ;;; *** char-to-glyph conversion *** + ;; Special rule 1. -- Last halant must be preserved. + (if (eq last-char ?$,16-(B) + (progn + (setq last-halant t) + (narrow-to-region from (1- to))) + (narrow-to-region from to) + ;; note if the last char is modifier. + (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B)) + (setq last-modifier t))) + (goto-char (point-min)) + ;; Special rule 2. -- preceding "r halant" must be modifier. + (when (looking-at "$,15p6-(B.") + (setq preceding-r t) + (goto-char (+ 2 (point)))) + ;; translate the rest characters into glyphs + (while (re-search-forward dev-char-glyph-regexp nil t) + (setq match-str (match-string 0)) + (setq glyph-str + (concat glyph-str + (gethash match-str dev-char-glyph-hash))) + ;; count the number of consonant-glyhs. + (if (string-match devanagari-consonant match-str) + (setq cons-num (1+ cons-num)))) + ;; preceding-r must be attached before the anuswar if exists. + (if preceding-r + (if last-modifier + (setq glyph-str (concat (substring glyph-str 0 -1) + "$,4"'(B" (substring glyph-str -1))) + (setq glyph-str (concat glyph-str "$,4"'(B")))) + (if last-halant (setq glyph-str (concat glyph-str "$,4""(B"))) + ;;; *** glyph-to-glyph conversion *** + (when (string-match dev-glyph-glyph-regexp glyph-str) + (setq glyph-str + (replace-match (gethash (match-string 0 glyph-str) + dev-glyph-glyph-hash) + nil t glyph-str)) + (if (and (> cons-num 1) + (string-match dev-glyph-glyph-2-regexp glyph-str)) + (setq glyph-str + (replace-match (gethash (match-string 0 glyph-str) + dev-glyph-glyph-2-hash) + nil t glyph-str)))) + ;;; *** glyph reordering *** + (while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str)) + (setq glyph-block (substring glyph-str 0 (1+ split-pos))) + (setq glyph-str (substring glyph-str (1+ split-pos))) + (setq + glyph-block + (if (string-match dev-glyph-right-modifier-regexp glyph-block) + (sort (string-to-list glyph-block) + (function (lambda (x y) + (< (get-char-code-property x 'composition-order) + (get-char-code-property y 'composition-order))))) + (sort (string-to-list glyph-block) + (function (lambda (x y) + (let ((xo (get-char-code-property x 'composition-order)) + (yo (get-char-code-property y 'composition-order))) + (if (= xo 2) nil (if (= yo 2) t (< xo yo))))))))) + (setq glyph-str-list (nconc glyph-str-list glyph-block))) + ;; concatenate and attach reference-points. + (setq glyph-str + (cdr + (apply + 'nconc + (mapcar + (function (lambda (x) + (list + (or (get-char-code-property x 'reference-point) + '(5 . 3) ;; default reference point. + ) + x))) + glyph-str-list)))))) + (compose-region from to glyph-str))) (provide 'devan-util)