Mercurial > emacs
annotate lisp/language/devan-util.el @ 28405:870e99935503
*** empty log message ***
author | Dave Love <fx@gnu.org> |
---|---|
date | Wed, 29 Mar 2000 21:57:22 +0000 |
parents | e0a13ff5901d |
children | 60eb71a9f901 |
rev | line source |
---|---|
17052 | 1 ;;; devan-util.el --- Support for Devanagari Script Composition |
2 | |
3 ;; Copyright (C) 1996 Free Software Foundation, Inc. | |
4 | |
5 ;; Author: KAWABATA, Taichi <kawabata@is.s.u-tokyo.ac.jp> | |
6 | |
7 ;; Keywords: multilingual, Indian, Devanagari | |
8 | |
9 ;; This file is part of GNU Emacs. | |
10 | |
11 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
12 ;; it under the terms of the GNU General Public License as published by | |
13 ;; the Free Software Foundation; either version 2, or (at your option) | |
14 ;; any later version. | |
15 | |
16 ;; GNU Emacs is distributed in the hope that it will be useful, | |
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 ;; GNU General Public License for more details. | |
20 | |
21 ;; You should have received a copy of the GNU General Public License | |
17314
f438ebf1c679
Fix FSF address in comment.
Kenichi Handa <handa@m17n.org>
parents:
17300
diff
changeset
|
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the |
f438ebf1c679
Fix FSF address in comment.
Kenichi Handa <handa@m17n.org>
parents:
17300
diff
changeset
|
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
f438ebf1c679
Fix FSF address in comment.
Kenichi Handa <handa@m17n.org>
parents:
17300
diff
changeset
|
24 ;; Boston, MA 02111-1307, USA. |
17052 | 25 |
26 ;;; Commentary: | |
27 | |
28 ;; History: | |
29 ;; 1996.10.18 written by KAWABATA, Taichi <kawabata@is.s.u-tokyo.ac.jp> | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
30 ;; 1997.3.24 fixed some bugs. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
31 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
32 ;; Future work :: |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
33 ;; Decompose the input characters and process them on the character basis. |
17052 | 34 |
35 ;; Devanagari script composition rules and related programs. | |
36 | |
37 ;;; Code: | |
38 | |
39 ;;; | |
40 ;;; Steps toward composition of Devanagari Characters. | |
41 ;;; | |
42 | |
17993
73869115ae0a
Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents:
17850
diff
changeset
|
43 ;;;###autoload |
73869115ae0a
Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents:
17850
diff
changeset
|
44 (defun setup-devanagari-environment () |
73869115ae0a
Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents:
17850
diff
changeset
|
45 "Setup multilingual environment (MULE) for languages using Devanagari." |
73869115ae0a
Most of setup-LANGUAGE-environment functions are
Kenichi Handa <handa@m17n.org>
parents:
17850
diff
changeset
|
46 (interactive) |
22987
708271862495
(setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents:
22520
diff
changeset
|
47 (set-language-environment "Devanagari")) |
708271862495
(setup-XXX-environment): Just call set-language-environment. If
Kenichi Handa <handa@m17n.org>
parents:
22520
diff
changeset
|
48 |
17052 | 49 ;;; Basic functions. |
50 | |
51 ;;;###autoload | |
26894 | 52 (defun indian-to-devanagari (char) |
53 "Convert IS 13194 character CHAR to Devanagari basic characters. | |
54 If CHAR is not IS 13194, return CHAR as is." | |
55 (let ((charcodes (split-char char))) | |
17052 | 56 (if (eq (car charcodes) 'indian-is13194) |
57 (make-char 'indian-2-column ?\x21 (nth 1 charcodes)) | |
26894 | 58 char))) |
17052 | 59 |
60 ;;;###autoload | |
26894 | 61 (defun devanagari-to-indian (char) |
62 "Convert Devanagari basic character CHAR to IS 13194 characters. | |
63 If CHAR is not Devanagari basic character, return CHAR as is." | |
64 (let ((charcodes (split-char char))) | |
17052 | 65 (if (and (eq (car charcodes) 'indian-2-column) |
66 (= (nth 1 charcodes) ?\x21)) | |
67 (make-char 'indian-is13194 (nth 2 charcodes)) | |
26894 | 68 char))) |
17052 | 69 |
70 ;;;###autoload | |
71 (defun indian-to-devanagari-region (from to) | |
26894 | 72 "Convert IS 13194 characters in region to Devanagari basic characters. |
73 When called from a program, expects two arguments, | |
74 positions (integers or markers) specifying the region." | |
17052 | 75 (interactive "r") |
26894 | 76 (save-excursion |
77 (goto-char from) | |
78 (while (< (point) to) | |
79 (let ((char (following-char))) | |
80 (if (eq (char-charset char) 'indian-is13194) | |
81 (progn | |
82 (delete-char 1) | |
83 (insert (indian-to-devanagari char))) | |
84 (forward-char 1)))))) | |
17052 | 85 |
86 ;;;###autoload | |
87 (defun devanagari-to-indian-region (from to) | |
26894 | 88 "Convert Devanagari basic characters in region to Indian characters. |
89 When called from a program, expects two arguments, | |
90 positions (integers or markers) specifying the region." | |
17052 | 91 (interactive "r") |
26894 | 92 (save-excursion |
93 (goto-char from) | |
94 (while (< (point) to) | |
95 (let ((char (following-char))) | |
96 (if (eq (char-charset char) 'indian-2-column) | |
97 (progn | |
98 (delete-char -1) | |
99 (insert (devanagari-to-indian char))) | |
100 (forward-char 1)))))) | |
17052 | 101 |
102 ;;;###autoload | |
26894 | 103 (defun indian-to-devanagari-string (string) |
104 "Convert Indian characters in STRING to Devanagari Basic characters." | |
105 (let* ((len (length string)) | |
20839 | 106 (i 0) |
107 (vec (make-vector len 0))) | |
108 (while (< i len) | |
26894 | 109 (aset vec i (indian-to-devanagari (aref string i))) |
20839 | 110 (setq i (1+ i))) |
111 (concat vec))) | |
17052 | 112 |
113 ;; Phase 0 - Determine whether the characters can be composed. | |
114 ;; | |
115 ;;; | |
116 ;;; Regular expressions to split characters for composition. | |
117 ;;; | |
118 ;; | |
119 ;; Indian script word contains one or more syllables. | |
120 ;; In BNF, it can be expressed as follows: | |
121 ;; | |
122 ;; Word ::= {Syllable} [Cons-Syllable] | |
123 ;; Syllable ::= Cons-Vowel-Syllable | Vowel-Syllable | |
124 ;; Vowel-Syllable ::= V[D] | |
125 ;; Cons-Vowel-Syllable ::= [Cons-Syllable] Full-Cons [M] [D] | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
126 ;; Cons-Syllable ::= [Pure-Cons] [Pure-Cons] [Pure-Cons] Pure-Cons |
17052 | 127 ;; Pure-Cons ::= Full-Cons H |
128 ;; Full-Cons ::= C [N] | |
129 ;; | |
130 ;; {} repeat, [] optional | |
131 ;; | |
132 ;; C - Consonant ($(5!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E(B | |
133 ;; $(5!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X(B) | |
134 ;; N - Nukta ($(5!i(B) | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
135 ;; H - Halant($(5!h(B) or Virama |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
136 ;; V - Vowel ($(5!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2#&#'#*(B) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
137 ;; ("$(5#&#'#*(B" can be obtained by IS13194 vowels with nukta.) |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
138 ;; D - Vowel Modifiers, i.e. Anuswar, Chandrabindu ($(5!!!"(B) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
139 ;; (Visaraga ($(5!#(B) is excluded.) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
140 ;; M - Matra ($(5!Z![!\!]!^!_!`!a!b!c!d!e!f!g#K#L#M(B) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
141 ;; ("$(5#K#L#M(B" can be obtained by IS13194 matras with nukta.) |
17052 | 142 ;; |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
143 ;; In Emacs, one syllable of Indian language is considered to be one |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
144 ;; composite glyph. If we expand the above expression for |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
145 ;; cons-vowel-syllable, it would be: |
17052 | 146 ;; |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
147 ;; [[C [N] H] [C [N] H] [C [N] H] C [N] H] C [N] [M] [D] |
17052 | 148 ;; |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
149 ;; Therefore, in worst case, the one syllable may contain |
17052 | 150 ;; following characters. |
151 ;; | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
152 ;; C N H C N H C N H C N H C N M D |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
153 ;; |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
154 ;; The example is a sanskrit word "kArtsnya", where five consecutive |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
155 ;; consonants appear. |
17052 | 156 ;; |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
157 ;; On the other hand, consonant-syllable, which appears at the end of |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
158 ;; the word, would have the following expression: |
17052 | 159 ;; |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
160 ;; [C [N] H] [C [N] H] [C [N] H] C [N] H |
17052 | 161 ;; |
162 ;; This is acceptable BEFORE proper consonant-syllable is input. The | |
163 ;; string which doesn't match with the above expression is invalid and | |
164 ;; thus must be fixed. | |
165 ;; | |
166 ;; Note: | |
21442 | 167 ;; Third case can be considered, which is an acceptable syllable and can |
17052 | 168 ;; not add any code more. |
169 ;; | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
170 ;; [[C [N] H] [C [N] H] [C [N] H] C [N] H] C [N] [M] D |
17052 | 171 ;; |
172 ;; However, to make editing possible even in this condition, we will | |
173 ;; not consider about this case. | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
174 ;; |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
175 ;; Note: |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
176 ;; Currently, it seems that the only following consonants would have |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
177 ;; Nukta sign attatched. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
178 ;; ($(5!3!4!5!:!?!@!I(B) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
179 ;; Therefore, [$(5!3(B-$(5!X(B]$(5!i(B? can be re-written as |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
180 ;; \\([$(5!3!4!5!:!?!@!I(B]$(5!i(B\\)\\|[$(5!3(B-$(5!X(B] |
17052 | 181 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
182 (defconst devanagari-full-cons |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
183 "\\(\\([$(5!3!4!5!:!?!@!I(B]$(5!i(B\\)\\|[$(5!3(B-$(5!X$.$E"%(B]\\)" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
184 "Devanagari full consonant") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
185 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
186 (defconst devanagari-pure-cons |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
187 (concat "\\(" devanagari-full-cons "$(5!h(B\\)") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
188 "Devanagari pure consonant") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
189 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
190 (defconst devanagari-matra |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
191 "\\(\\([$(5!_![!\(B]$(5!i(B\\)\\|[$(5!Z(B-$(5!g#K#L#M(B]\\)" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
192 "Devanagari Matra Signs. '$(5#K#L#M(B' can also be created from the combination |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
193 of '$(5!_![!\(B' and nukta sign.") |
17052 | 194 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
195 (defconst devanagari-vowel |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
196 "\\(\\([$(5!*!&!'(B]$(5!i(B\\)\\|[$(5!$(B-$(5!2#&#'#*(B]\\)" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
197 "Devanagari Vowels. '$(5#&#'#*(B' can also be created from the combination |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
198 of '$(5!*!&!'(B' and nukta sign.") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
199 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
200 (defconst devanagari-vowel-syllable |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
201 (concat devanagari-vowel "[$(5!!!"(B]?") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
202 "Devanagari vowel syllable.") |
17052 | 203 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
204 (defconst devanagari-cons-syllable |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
205 (concat devanagari-pure-cons "?" devanagari-pure-cons "?" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
206 devanagari-pure-cons "?" devanagari-pure-cons "$") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
207 "Devanagari consonant syllable") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
208 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
209 (defconst devanagari-cons-vowel-syllable |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
210 (concat "\\(" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
211 devanagari-pure-cons "?" devanagari-pure-cons "?" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
212 devanagari-pure-cons "?" devanagari-pure-cons "\\)?" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
213 devanagari-full-cons devanagari-matra "?[$(5!!!"(B]?") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
214 "Devanagari consonant vowel syllable.") |
17052 | 215 |
216 ;; | |
217 ;; Also, digits and virams should be processed other than syllables. | |
218 ;; | |
219 ;; In IS 13194, Avagrah is obtained by Nukta after Viram, and | |
220 ;; OM is obtained by Nukta after Chandrabindu | |
221 ;; | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
222 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
223 (defconst devanagari-digit-viram-visarga |
22520
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
224 "[$(5!q(B-$(5!z!j!#(B]") |
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
225 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
226 (defconst devanagari-other-sign |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
227 "\\([$(5!!!j(B]$(5!i(B\\)\\|\\([$(5#!#J(B]\\)") |
17052 | 228 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
229 (defconst devanagari-composite-glyph-unit |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
230 (concat "\\(" devanagari-cons-syllable |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
231 "\\)\\|\\(" devanagari-vowel-syllable |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
232 "\\)\\|\\(" devanagari-cons-vowel-syllable |
22520
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
233 "\\)\\|\\(" devanagari-other-sign |
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
234 "\\)\\|\\(" devanagari-digit-viram-visarga "\\)") |
17052 | 235 "Regexp matching to Devanagari string to be composed form one glyph.") |
236 | |
237 ;;(put-charset-property charset-devanagari-1-column | |
238 ;; 'char-to-glyph 'devanagari-compose-string) | |
239 ;;(put-charset-property charset-devanagari-2-column | |
240 ;; 'char-to-glyph 'devanagari-compose-string) | |
241 | |
242 ;; Sample | |
243 ;; | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
244 ;;(string-match devanagari-cons-vowel-syllable-examine "$(5!X![(B") => 0 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
245 ;;(string-match devanagari-cons-vowel-syllable-examine "$(5!F!h!D!\(B") => 0 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
246 ;;(string-match devanagari-cons-vowel-syllable-examine "$(5!X![!F!h!D!\(B") => 0 |
17052 | 247 |
248 ;; | |
249 ;; Steps toward the composition | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
250 ;; Converting Character Codes to Composite Glyph. |
17052 | 251 ;; |
252 ;; Example : $(5!X![(B/$(5!F!h!D!\(B | |
253 ;; | |
254 ;; First, convert Characters to appropriate glyphs. | |
255 ;; | |
256 ;; => $(5!X![(B/$(5"F!D!\(B | |
257 ;; | |
258 ;; Then, determine the base glyph, apply-orders and apply-rules. | |
259 ;; | |
260 ;; => $(5!X(B (ml.mr) $(5![(B / $(5!D(B (ml.mr) $(5"F(B (mr ml) $(5!\(B | |
261 ;; | |
262 ;; Finally, convert 2-column glyphs to 1-column glyph | |
263 ;; if such a glyph exist. | |
264 ;; | |
26894 | 265 ;; => $(6!X(B (ml.mr) $(6![(B / $(6!D(B (ml.mr) $(6"F(B (mr ml) $(6!\(B |
17052 | 266 ;; |
267 ;; Compose the glyph. | |
268 ;; | |
26894 | 269 ;; => 4$(6!Xt%![0!X![1(B/4$(6!Dt%"Fv#!\0!D"F!\1(B |
270 ;; => 4$(6!Xt%![0!X![14!Dt%"Fv#!\0!D"F!\1(B | |
17052 | 271 ;; |
272 | |
273 ;; | |
274 ;; Phase 1: Converting Character Code to Glyph Code. | |
275 ;; | |
276 ;; | |
277 ;; IMPORTANT: | |
26894 | 278 ;; There may be many rules that you many want to suppress. |
17052 | 279 ;; In that case, please comment out that rule. |
280 ;; | |
281 ;; RULES WILL BE EVALUATED FROM FIRST TO LAST. | |
282 ;; PUT MORE SPECIFIC RULES FIRST. | |
283 ;; | |
284 ;; TO DO: | |
285 ;; Prepare multiple specific list of rules for each languages | |
26894 | 286 ;; that adopt Devanagari script. |
17052 | 287 ;; |
288 | |
289 (defconst devanagari-char-to-glyph-rules | |
290 '( | |
291 | |
292 ;; `r' at the top of syllable and followed by other consonants. | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
293 ;; ("[^$(5!h(B]\\($(5!O!h(B\\)[$(5!3(B-$(5!X(B]" "$(5"p(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
294 ("^\\($(5!O!h(B\\)[$(5!3(B-$(5!X(B]" "$(5"p(B") |
17052 | 295 |
296 ;; Ligature Rules | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
297 ("\\($(5!3!h!B!h!O!h!M(B\\)" "$(5$!(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
298 ("\\($(5!3!h!B!h!T(B\\)" "$(5$"(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
299 ("\\($(5!3!h!B!h!M(B\\)" "$(5$#(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
300 ("\\($(5!3!h!F!h!M(B\\)" "$(5$$(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
301 ("\\($(5!3!h!O!h!M(B\\)" "$(5$%(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
302 ("\\($(5!3!h!O(B\\)" "$(5"#(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
303 ("\\($(5!3!h!T!h!M(B\\)" "$(5$&(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
304 ("\\($(5!3!h(B\\)$(5!3!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"3(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
305 ("\\($(5!3!h!3(B\\)" "$(5$'(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
306 ("\\($(5!3!h(B\\)$(5!B!h!O(B" "$(5"3(B") ; Special Rules for "k-tr" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
307 ("\\($(5!3!h!B(B\\)" "$(5$((B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
308 ("\\($(5!3!h!F(B\\)" "$(5$)(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
309 ("\\($(5!3!h!L(B\\)" "$(5$*(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
310 ("\\($(5!3!h!M(B\\)" "$(5$+(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
311 ("\\($(5!3!h!Q(B\\)" "$(5$,(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
312 ("\\($(5!3!h!T(B\\)" "$(5$-(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
313 ("\\($(5!3!h!V!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"l(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
314 ("\\($(5$.!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"l(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
315 ("\\($(5!3!h!V(B\\)" "$(5$.(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
316 ("\\($(5!3!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"3(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
317 ("\\($(5!3!i!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"s(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
318 ("\\($(5!3!i(B\\)" "$(5#3(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
319 ("\\($(5!4!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"4(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
320 ("\\($(5!4!i!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"t(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
321 ("\\($(5!4!i(B\\)" "$(5#4(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
322 ("\\($(5!5!h!O!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"`(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
323 ("\\($(5!5!h!O(B\\)" "$(5"$(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
324 ("\\($(5!5!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"5(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
325 ("\\($(5!5!i!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"u(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
326 ("\\($(5!5!i(B\\)" "$(5#5(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
327 ("\\($(5!6!h!F!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"a(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
328 ("\\($(5!6!h!F(B\\)" "$(5$/(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
329 ; Slot |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
330 ("\\($(5!6!h!O(B\\)" "$(5!6"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
331 ("\\($(5!6!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"6(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
332 ("\\($(5!7!h!3!h!B!h!M(B\\)" "$(5$0(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
333 ("\\($(5!7!h!3!h!V!h!T(B\\)" "$(5$1(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
334 ("\\($(5!7!h!3!h!B(B\\)" "$(5$2(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
335 ("\\($(5!7!h!3!h!V(B\\)" "$(5$3(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
336 ("\\($(5!7!h!3!h!O(B\\)" "$(5$9"q(B") ; Special Rule. May be precomposed font needed. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
337 ("\\($(5!7!h!6!h!O(B\\)" "$(5$4(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
338 ("\\($(5!7!h!3!h!M(B\\)" "$(5$5(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
339 ("\\($(5!7!h!4!h!M(B\\)" "$(5$6(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
340 ("\\($(5!7!h!5!h!M(B\\)" "$(5$7(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
341 ("\\($(5!7!h!6!h!M(B\\)" "$(5$8(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
342 ("\\($(5!7!h!3(B\\)" "$(5$9(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
343 ("\\($(5!7!h!4(B\\)" "$(5$:(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
344 ("\\($(5!7!h!5!h!O(B\\)" "$(5$;"q(B") ; Special Rule. May be precomposed font needed. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
345 ("\\($(5!7!h!5(B\\)" "$(5$;(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
346 ("\\($(5!7!h!6(B\\)" "$(5$<(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
347 ("\\($(5!7!h!7(B\\)" "$(5$=(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
348 ("\\($(5!7!h!F(B\\)" "$(5$>(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
349 ("\\($(5!7!h!L(B\\)" "$(5$?(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
350 ("\\($(5!7!h!M(B\\)" "$(5$@(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
351 ("\\($(5!8!h(B\\)[$(5!8!<(B]$(5!h(B" "$(5"8(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
352 ("\\($(5!8!h!8(B\\)" "$(5$A(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
353 ("\\($(5!8!h!<(B\\)" "$(5$B(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
354 ("\\($(5!8!h!O!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"8"q(B") ; Half Form Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
355 ("\\($(5!8!h!O(B\\)" "$(5!8"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
356 ("\\($(5!8!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"8(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
357 ("\\($(5!9!h!M(B\\)" "$(5$C(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
358 ("\\($(5!:!h!O(B\\)" "$(5$D(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
359 ("\\($(5!:!h!<!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"m(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
360 ("\\($(5!:!h!<(B\\)" "$(5$E(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
361 ("\\($(5!:!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5":(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
362 ("\\($(5!:!i!h!O(B\\)" "$(5"!(B") ; Nukta Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
363 ("\\($(5!:!i!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"z(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
364 ("\\($(5!:!i(B\\)" "$(5#:(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
365 ("\\($(5!;!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5";(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
366 ("\\($(5!<!h(B\\)$(5!8!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"<(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
367 ("\\($(5!<!h!8(B\\)" "$(5$F(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
368 ("\\($(5!<!h(B\\)$(5!:!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"<(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
369 ("\\($(5!<!h!:(B\\)" "$(5$G(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
370 ("\\($(5!<!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"<(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
371 ("\\($(5!=!h!3(B\\)" "$(5$H(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
372 ("\\($(5!=!h!=(B\\)" "$(5$I(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
373 ("\\($(5!=!h!>(B\\)" "$(5$J(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
374 ("\\($(5!=!h!M(B\\)" "$(5$K(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
375 ("\\($(5!>!h!M(B\\)" "$(5$L(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
376 ("\\($(5!?!h!5!h!M(B\\)" "$(5$M(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
377 ("\\($(5!?!h!6!h!O(B\\)" "$(5$N(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
378 ("\\($(5!?!h!O!h!M(B\\)" "$(5$O(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
379 ("\\($(5!?!h!5(B\\)" "$(5$P(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
380 ("\\($(5!?!h!6(B\\)" "$(5$Q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
381 ("\\($(5!?!h!?(B\\)" "$(5$R(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
382 ("\\($(5!?!h!L(B\\)" "$(5$S(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
383 ("\\($(5!?!h!M(B\\)" "$(5$T(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
384 ("\\($(5!?!i(B\\)" "$(5#?(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
385 ("\\($(5!@!h!M(B\\)" "$(5$`(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
386 ("\\($(5!@!i(B\\)" "$(5#@(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
387 ("\\($(5!A!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"A(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
388 ("\\($(5!B!h(B\\)$(5!B!h!O(B" "$(5"B(B") ; Special Rule for "t-tr" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
389 ("\\($(5!B!h!B!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"c(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
390 ("\\($(5!B!h!B(B\\)" "$(5$a(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
391 ("\\($(5!B!h!F(B\\)" "$(5$b(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
392 ("\\($(5!B!h!O!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"d(B") ; Half Form Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
393 ("\\($(5!B!h!O(B\\)" "$(5"%(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
394 ("\\($(5!B!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"B(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
395 ("\\($(5!C!h!O(B\\)" "$(5!C"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
396 ("\\($(5!C!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"C(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
397 ("\\($(5!D!h!D!h!M(B\\)" "$(5$c(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
398 ("\\($(5!D!h!E!h!M(B\\)" "$(5$d(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
399 ("\\($(5!D!h!K!h!M(B\\)" "$(5$e(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
400 ("\\($(5!D!h!K!h!O(B\\)" "$(5$r"r(B") ; Special Case for "dbhr" ; *** |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
401 ("\\($(5!D!h!O!h!M(B\\)" "$(5$f(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
402 ("\\($(5!D!h!T!h!M(B\\)" "$(5$g(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
403 ("\\($(5!D!h!5!h!O(B\\)" "$(5$h(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
404 ("\\($(5!D!h!6!h!O(B\\)" "$(5$i(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
405 ("\\($(5!D!h!D!h!T(B\\)" "$(5$j(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
406 ("\\($(5!D!h!E!h!T(B\\)" "$(5$k(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
407 ("\\($(5!D!h(B\\)$(5!E!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5!D!h(B") ; Special Half Form (for ddhra) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
408 ("\\($(5!D!h!5(B\\)" "$(5$l(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
409 ("\\($(5!D!h!6(B\\)" "$(5$m(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
410 ("\\($(5!D!h!D(B\\)" "$(5$n(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
411 ("\\($(5!D!h!E(B\\)" "$(5$o(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
412 ("\\($(5!D!h!F(B\\)" "$(5$p(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
413 ("\\($(5!D!h(B\\)$(5!J!h(B" "$(5!D!h(B") ; Suppressing "db-" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
414 ("\\($(5!D!h!J(B\\)" "$(5$q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
415 ("\\($(5!D!h!K(B\\)" "$(5$r(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
416 ("\\($(5!D!h!L(B\\)" "$(5$s(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
417 ("\\($(5!D!h!M(B\\)" "$(5$t(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
418 ("\\($(5!D!h!T(B\\)" "$(5$u(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
419 ("\\($(5!E!h!F!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"e(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
420 ("\\($(5!E!h!F(B\\)" "$(5$v(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
421 ("\\($(5!E!h!O!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"f(B") ; Half Form Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
422 ("\\($(5!E!h!O(B\\)" "$(5!E"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
423 ("\\($(5!E!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"E(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
424 ("\\($(5!F!h!F!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"k(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
425 ("\\($(5!F!h!F(B\\)" "$(5$w(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
426 ("\\($(5!F!h!O(B\\)" "$(5!F"q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
427 ("\\($(5!F!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"F(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
428 ("\\($(5!G!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"G(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
429 ("\\($(5!H!h(B\\)$(5!B!h!O(B" "$(5"H(B") ; Special Rule for "p-tr" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
430 ("\\($(5!H!h!B!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"g(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
431 ("\\($(5!H!h!B(B\\)" "$(5$x(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
432 ("\\($(5!H!h!F(B\\)" "$(5$y(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
433 ("\\($(5!H!h!Q(B\\)" "$(5$z(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
434 ("\\($(5!H!h!O(B\\)" "$(5"&(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
435 ("\\($(5!H!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"H(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
436 ("\\($(5!I!h!O(B\\)" "$(5"'(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
437 ("\\($(5!I!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"I(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
438 ("\\($(5!I!i!h!O(B\\)" "$(5""(B") ; Nukta Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
439 ("\\($(5!I!i!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"y(B") ; Nukta Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
440 ("\\($(5!I!i(B\\)" "$(5#I(B") ; Nukta |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
441 ("\\($(5!J!h(B\\)$(5!F!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"J(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
442 ("\\($(5!J!h!F(B\\)" "$(5${(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
443 ("\\($(5!J!h(B\\)$(5!J!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"J(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
444 ("\\($(5!J!h!J(B\\)" "$(5$|(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
445 ("\\($(5!J!h(B\\)$(5!T!h(B[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"J(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
446 ("\\($(5!J!h!T(B\\)" "$(5$}(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
447 ("\\($(5!J!h!O(B\\)" "$(5!J"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
448 ("\\($(5!J!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"J(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
449 ("\\($(5!K!h!F(B\\)" "$(5$~(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
450 ("\\($(5!K!h!O(B\\)" "$(5!K"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
451 ("\\($(5!K!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"K(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
452 ("\\($(5!L!h!F(B\\)" "$(5#P(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
453 ("\\($(5!L!h!Q(B\\)" "$(5#Q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
454 ("\\($(5!L!h!O(B\\)" "$(5!L"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
455 ("\\($(5!L!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"L(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
456 ("\\($(5!M!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"M(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
457 ("\\($(5!N!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"N(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
458 ;; special form for "ru". |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
459 ("\\($(5!O!](B\\)" "$(5",(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
460 ("\\($(5!O!^(B\\)" "$(5"-(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
461 ("\\($(5!P!](B\\)" "$(5".(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
462 ("\\($(5!P!^(B\\)" "$(5"/(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
463 ;; |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
464 ("\\($(5!Q!h!Q(B\\)" "$(5#`(B" sanskrit) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
465 ("\\($(5!Q!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"Q(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
466 ("\\($(5!R!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"R(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
467 ("\\($(5!S!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"S(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
468 ("\\($(5!T!h!F(B\\)" "$(5#a(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
469 ("\\($(5!T!h!T(B\\)" "$(5#b(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
470 ("\\($(5!T!h!O(B\\)" "$(5!T"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
471 ("\\($(5!T!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"T(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
472 ("\\($(5!U!h!8!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"h(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
473 ("\\($(5!U!h!8(B\\)" "$(5#c(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
474 ("\\($(5!U!h!F(B\\)" "$(5#d(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
475 ("\\($(5!U!h!J(B\\)" "$(5#e(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
476 ("\\($(5!U!h!Q(B\\)" "$(5#f(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
477 ("\\($(5!U!h(B\\)$(5!T!h!O(B" "$(5"U(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
478 ("\\($(5!U!h!T!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"j(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
479 ; ("\\($(5!U!h!T(B\\)" "$(5#g(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
480 ("\\($(5!U!h!O!h!T(B\\)" "$(5#g(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
481 ("\\($(5!U!h!O!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"i(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
482 ("\\($(5!U!h!O(B\\)" "$(5")(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
483 ("\\($(5!U!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"U(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
484 ("\\($(5!V!h!=!h!O!h!M(B\\)" "$(5#h(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
485 ("\\($(5!V!h!=!h!M(B\\)" "$(5#i(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
486 ("\\($(5!V!h!=!h!T(B\\)" "$(5#j(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
487 ("\\($(5!V!h!=(B\\)" "$(5#k(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
488 ("\\($(5!V!h!>(B\\)" "$(5#l(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
489 ("\\($(5!V!h!O(B\\)" "$(5!V"q(B") ; Post "r" |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
490 ("\\($(5!V!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"V(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
491 ("\\($(5!W!h!F!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"W"F(B") ; Special Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
492 ("\\($(5!W!h!F(B\\)" "$(5#m(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
493 ("\\($(5!W!h!O(B\\)" "$(5#n(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
494 ("\\($(5!W!h(B\\)[$(5!3(B-$(5!N!P(B-$(5!X(B]" "$(5"W(B") ; Half Form |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
495 ("\\($(5!X!h!A(B\\)" "$(5#p(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
496 ("\\($(5!X!h!F(B\\)" "$(5#q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
497 ("\\($(5!X!h!L(B\\)" "$(5#r(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
498 ("\\($(5!X!h!M(B\\)" "$(5#s(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
499 ("\\($(5!X!h!O(B\\)" "$(5#t(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
500 ("\\($(5!X!h!Q(B\\)" "$(5#u(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
501 ("\\($(5!X!h!T(B\\)" "$(5#v(B") |
17052 | 502 ;; Special Ligature Rules |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
503 ("\\($(5!X!_(B\\)" "$(5#R(B") |
17052 | 504 |
505 ;; For consonants other than listed above, glyph-composition will | |
506 ;; be applied. If the consonant which is preceding "$(5!O(B" does not | |
507 ;; have the vertical line (such as "$(5!?(B"), "$(5"r(B" is put beneath the | |
508 ;; consonant. | |
509 ;; | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
510 ("[$(5!7!9!=!>!?!@!D!O!P!R!S!X(B]\\($(5!h!O(B\\)" "$(5"r(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
511 ("[$(5!6!8!C!E!F!H!J!K!L!M!T!V(B]\\($(5!h!O(B\\)" "$(5"q(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
512 ("$(5!?!i(B\\($(5!h!O(B\\)" "$(5"r(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
513 ("$(5!@!i(B\\($(5!h!O(B\\)" "$(5"r(B") |
17052 | 514 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
515 ;; Nukta with Non-Consonants |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
516 ("\\($(5!!!i(B\\)" "$(5#!(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
517 ("\\($(5!&!i(B\\)" "$(5#&(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
518 ("\\($(5!'!i(B\\)" "$(5#'(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
519 ("\\($(5!*!i(B\\)" "$(5#*(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
520 ("\\($(5![!i(B\\)" "$(5#L(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
521 ("\\($(5!\!i(B\\)" "$(5#M(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
522 ("\\($(5!_!i(B\\)" "$(5#K(B") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
523 ("\\($(5!j!i(B\\)" "$(5#J(B") |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
524 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
525 ;; Special rule for "r + some vowels" |
22520
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
526 ("\\($(5!O!_!i(B\\)" "$(5#*"p(B") |
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
527 ("\\($(5!O![!i(B\\)" "$(5#&"p(B") |
901451c61b3f
(devanagari-digit-viram-visarga): Set the
Kenichi Handa <handa@m17n.org>
parents:
21442
diff
changeset
|
528 ("\\($(5!O!\!i(B\\)" "$(5#'"p(B") |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
529 ("\\($(5!O!_(B\\)" "$(5!*"p(B") |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
530 ;; If everything fails, "y" will connect to the front consonant. |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
531 ("\\($(5!h!M(B\\)" "$(5"](B") |
17052 | 532 ) |
533 "Alist of regexps of Devanagari character sequences vs composed characters.") | |
534 | |
535 (let ((rules devanagari-char-to-glyph-rules)) | |
536 (while rules | |
537 (let ((rule (car rules)) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
538 (chars) (char) (glyphs) (glyph)) |
17052 | 539 (setq rules (cdr rules)) |
540 (string-match "\\\\(\\(.+\\)\\\\)" (car rule)) | |
541 (setq chars (substring (car rule) (match-beginning 1) (match-end 1))) | |
542 (setq char (string-to-char chars)) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
543 (setq glyphs (cdr rule)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
544 (setq glyph (string-to-char (car glyphs))) |
17052 | 545 (put-char-code-property |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
546 char 'char-to-glyph |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
547 ;; We don't "cons" it since priority is top to down. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
548 (append (get-char-code-property char 'char-to-glyph) (list rule))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
549 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
550 (if (and (< ?(5z(B glyph) ; Glyphs only. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
551 (null (get-char-code-property glyph 'glyph-to-char))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
552 ; One glyph may corresponds to multiple characters, |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
553 ; e.g., surrounding vowel in Tamil, etc. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
554 ; but for Devanagari, we put this restriction |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
555 ; to make sure the fact that one glyph corresponds to one char. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
556 (put-char-code-property |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
557 glyph 'glyph-to-char |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
558 (cons (list (car glyphs) chars) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
559 (get-char-code-property glyph 'glyph-to-char) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
560 )))))) |
17052 | 561 |
562 ;; | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
563 ;; Function used in both characters-to-glyphs conversion and |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
564 ;; glyphs-to-characters conversion. |
17052 | 565 ;; |
566 | |
26894 | 567 (defun max-match-len (regexp) |
568 "Return the maximum length of text that can match the pattern REGEXP. | |
569 Only [...] pattern of regexp is recognized." | |
570 (let ((len 0) | |
571 (index 0)) | |
572 (while (string-match "\\[\\([^\]]\\)+\\]" regexp index) | |
573 (setq len (+ len (- (match-beginning 0) index) 1) | |
574 index (match-end 0))) | |
575 len)) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
576 |
26894 | 577 ;; Return t iff at least one member appears in both LIST1 and LIST2. |
578 (defun intersecting-p (list1 list2) | |
20839 | 579 (let ((found nil)) |
580 (while (and list1 (not found)) | |
581 (if (memq (car list1) list2) | |
582 (setq found t) | |
583 (setq list1 (cdr list1)))) | |
584 found)) | |
585 | |
26894 | 586 (defun string-conversion-by-rule (source symbol &rest specs) |
587 "Convert string SOURCE by rules stored in SYMBOL property of each character. | |
588 The remaining arguments forms a list SPECS that restricts applicable rules. | |
589 | |
590 The rules has the form ((REGEXP STR RULE-SPEC ...) ...). | |
591 Each character sequence in STRING that matches REGEXP is | |
592 replaced by STR. | |
593 | |
594 If SPECS is nil, only rules with no RULE-SPECs is applied. Otherwise | |
595 rules with no RULE-SPECS and rules that have at least one member of | |
596 SPECS in RULE-SPECs is applied. | |
597 | |
598 Rules are tested in the order of the list, thus more specific rules | |
599 should be placed in front of less specific rules. | |
600 | |
601 If rule is given in the forms of regexp '...\\(...\\)...', a character | |
602 sequence that matches the pattern inside of the parenthesis is the | |
603 subject of the match. Otherwise, the entire expression is the subject | |
604 of the match." | |
17052 | 605 (let ((pos 0) |
606 (dst-str "")) | |
26894 | 607 (while (< pos (length source)) |
17052 | 608 (let ((found nil) |
609 (rules (get-char-code-property | |
610 (string-to-char | |
26894 | 611 (substring source pos)) symbol))) |
17052 | 612 (while rules |
613 (let* ((rule (car rules)) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
614 (regexp (car rule)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
615 (replace-str (car (cdr rule))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
616 (rule-specs (cdr (cdr rule))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
617 search-pos) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
618 (if (not (or (null rule-specs) |
26894 | 619 (intersecting-p specs rule-specs))) |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
620 (setq rules (cdr rules)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
621 (if (null (string-match "\\\\(.+\\\\)" regexp)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
622 (progn |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
623 (setq regexp (concat "\\(" regexp "\\)")) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
624 (setq search-pos pos)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
625 (setq search-pos (- pos (max-match-len |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
626 (substring regexp |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
627 (string-match "^[^\\\\]*" regexp) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
628 (match-end 0)))))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
629 (if (< search-pos 0) (setq search-pos 0)) |
26894 | 630 (if (string-match regexp source search-pos) |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
631 (if (= (match-beginning 1) pos) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
632 (progn |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
633 (setq dst-str (concat dst-str replace-str)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
634 (setq rules nil) ; Get out of the loop. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
635 (setq found t) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
636 ;; proceed `pos' for replaced characters. |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
637 (setq pos (match-end 1))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
638 (setq rules (cdr rules))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
639 (setq rules (cdr rules)))))) |
17052 | 640 ;; proceed to next position |
641 (if (not found) | |
26894 | 642 (setq dst-str (concat dst-str (substring source pos (1+ pos))) |
20839 | 643 pos (1+ pos))))) |
17052 | 644 dst-str)) |
645 | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
646 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
647 ;; |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
648 ;; Convert Character Code to Glyph Code |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
649 ;; |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
650 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
651 ;;;###autoload |
26894 | 652 (defun char-to-glyph-devanagari (string &rest langs) |
653 "Convert Devanagari characters in STRING to Devanagari glyphs. | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
654 Ligatures and special rules are processed." |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
655 (apply |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
656 'string-conversion-by-rule |
26894 | 657 (append (list string 'char-to-glyph) langs))) |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
658 |
17052 | 659 ;; Example: |
660 ;;(char-to-glyph-devanagari "$(5!X![!F!h!D!\(B") => "$(5!X!["F!D!\(B" | |
661 ;;(char-to-glyph-devanagari "$(5!O!Z!V!h!=!h!O![!M(B") => ??? | |
662 | |
663 ;; | |
664 ;; Phase 2: Compose Glyphs to form One Glyph. | |
665 ;; | |
666 | |
26894 | 667 ;; Each list consists of glyph, application-priority and application-direction. |
17052 | 668 ;; |
669 ;; Glyphs will be ordered from low priority number to high priority number. | |
670 ;; If application-priority is omitted, it is assumed to be 0. | |
671 ;; If application-direction is omitted, it is asumbed to be '(mr . ml). | |
672 | |
673 (defconst devanagari-composition-rules | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
674 '((?$(5!!(B 0 (tr . br)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
675 (?$(5!"(B 0 (mr . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
676 (?$(5!#(B 0) |
17052 | 677 (?$(5!$(B 0) |
678 (?$(5!%(B 0) | |
679 (?$(5!&(B 0) | |
680 (?$(5!'(B 0) | |
681 (?$(5!((B 0) | |
682 (?$(5!)(B 0) | |
683 (?$(5!*(B 0) | |
684 (?$(5!+(B 0) | |
685 (?$(5!,(B 0) | |
686 (?$(5!-(B 0) | |
687 (?$(5!.(B 0) | |
688 (?$(5!/(B 0) | |
689 (?$(5!0(B 0) | |
690 (?$(5!1(B 0) | |
691 (?$(5!2(B 0) | |
692 (?$(5!3(B 0) | |
693 (?$(5!4(B 0) | |
694 (?$(5!5(B 0) | |
695 (?$(5!6(B 0) | |
696 (?$(5!7(B 0) | |
697 (?$(5!8(B 0) | |
698 (?$(5!9(B 0) | |
699 (?$(5!:(B 0) | |
700 (?$(5!;(B 0) | |
701 (?$(5!<(B 0) | |
702 (?$(5!=(B 0) | |
703 (?$(5!>(B 0) | |
704 (?$(5!?(B 0) | |
705 (?$(5!@(B 0) | |
706 (?$(5!A(B 0) | |
707 (?$(5!B(B 0) | |
708 (?$(5!C(B 0) | |
709 (?$(5!D(B 0) | |
710 (?$(5!E(B 0) | |
711 (?$(5!F(B 0) | |
712 (?$(5!G(B 0) | |
713 (?$(5!H(B 0) | |
714 (?$(5!I(B 0) | |
715 (?$(5!J(B 0) | |
716 (?$(5!K(B 0) | |
717 (?$(5!L(B 0) | |
718 (?$(5!M(B 0) | |
719 (?$(5!N(B 0) | |
720 (?$(5!O(B 0) | |
721 (?$(5!P(B 0) | |
722 (?$(5!Q(B 0) | |
723 (?$(5!R(B 0) | |
724 (?$(5!S(B 0) | |
725 (?$(5!T(B 0) | |
726 (?$(5!U(B 0) | |
727 (?$(5!V(B 0) | |
728 (?$(5!W(B 0) | |
729 (?$(5!X(B 0) | |
730 (?$(5!Y(B 0) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
731 (?$(5!Z(B 0) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
732 (?$(5![(B 0 (ml . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
733 (?$(5!\(B 0) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
734 (?$(5!](B 0 (br . tr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
735 (?$(5!^(B 0 (br . tr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
736 (?$(5!_(B 0 (br . tr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
737 (?$(5!`(B 0 (mr . mr)) ; (tc . bc) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
738 (?$(5!a(B 0 (mr . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
739 (?$(5!b(B 0 (mr . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
740 (?$(5!c(B 0 (mr . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
741 (?$(5!d(B 0) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
742 (?$(5!e(B 0) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
743 (?$(5!f(B 0) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
744 (?$(5!g(B 0) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
745 (?$(5!h(B 0 (br . tr)) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
746 (?$(5!i(B 0 (br . tr)) |
17052 | 747 (?$(5!j(B 0) |
748 (nil 0) | |
749 (nil 0) | |
750 (nil 0) | |
751 (nil 0) | |
752 (nil 0) | |
753 (nil 0) | |
754 (?$(5!q(B 0) | |
755 (?$(5!r(B 0) | |
756 (?$(5!s(B 0) | |
757 (?$(5!t(B 0) | |
758 (?$(5!u(B 0) | |
759 (?$(5!v(B 0) | |
760 (?$(5!w(B 0) | |
761 (?$(5!x(B 0) | |
762 (?$(5!y(B 0) | |
763 (?$(5!z(B 0) | |
764 (nil 0) | |
765 (nil 0) | |
766 (nil 0) | |
767 (nil 0) | |
768 (?$(5"!(B 0) | |
769 (?$(5""(B 0) | |
770 (?$(5"#(B 0) | |
771 (?$(5"$(B 0) | |
772 (?$(5"%(B 0) | |
773 (?$(5"&(B 0) | |
774 (?$(5"'(B 0) | |
775 (?$(5"((B 0) | |
776 (?$(5")(B 0) | |
777 (?$(5"*(B 0) | |
778 (?$(5"+(B 0) | |
779 (?$(5",(B 0) | |
780 (?$(5"-(B 0) | |
781 (?$(5".(B 0) | |
782 (?$(5"/(B 0) | |
783 (?$(5"0(B 0) | |
784 (?$(5"1(B 0) | |
785 (?$(5"2(B 0) | |
786 (?$(5"3(B 0) | |
787 (?$(5"4(B 0) | |
788 (?$(5"5(B 0) | |
789 (?$(5"6(B 0) | |
790 (?$(5"7(B 0) | |
791 (?$(5"8(B 0) | |
792 (?$(5"9(B 0) | |
793 (?$(5":(B 0) | |
794 (?$(5";(B 0) | |
795 (?$(5"<(B 0) | |
796 (?$(5"=(B 0) | |
797 (?$(5">(B 0) | |
798 (?$(5"?(B 0) | |
799 (?$(5"@(B 0) | |
800 (?$(5"A(B 0) | |
801 (?$(5"B(B 0) | |
802 (?$(5"C(B 0) | |
803 (?$(5"D(B 0) | |
804 (?$(5"E(B 0) | |
805 (?$(5"F(B 0) | |
806 (?$(5"G(B 0) | |
807 (?$(5"H(B 0) | |
808 (?$(5"I(B 0) | |
809 (?$(5"J(B 0) | |
810 (?$(5"K(B 0) | |
811 (?$(5"L(B 0) | |
812 (?$(5"M(B 0) | |
813 (?$(5"N(B 0) | |
814 (?$(5"O(B 0) | |
815 (?$(5"P(B 0) | |
816 (?$(5"Q(B 0) | |
817 (?$(5"R(B 0) | |
818 (?$(5"S(B 0) | |
819 (?$(5"T(B 0) | |
820 (?$(5"U(B 0) | |
821 (?$(5"V(B 0) | |
822 (?$(5"W(B 0) | |
823 (?$(5"X(B 0) | |
824 (?$(5"Y(B 0) | |
825 (?$(5"Z(B 0) | |
826 (?$(5"[(B 0) | |
827 (?$(5"\(B 0) | |
828 (?$(5"](B 0) | |
829 (?$(5"^(B 0) | |
830 (?$(5"_(B 0) | |
831 (?$(5"`(B 0) | |
832 (?$(5"a(B 0) | |
833 (?$(5"b(B 0) | |
834 (?$(5"c(B 0) | |
835 (?$(5"d(B 0) | |
836 (?$(5"e(B 0) | |
837 (?$(5"f(B 0) | |
838 (?$(5"g(B 0) | |
839 (?$(5"h(B 0) | |
840 (?$(5"i(B 0) | |
841 (?$(5"j(B 0) | |
842 (?$(5"k(B 0) | |
843 (?$(5"l(B 0) | |
844 (?$(5"m(B 0) | |
845 (?$(5"n(B 0) | |
846 (?$(5"o(B 0) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
847 (?$(5"p(B 10 (mr . mr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
848 (?$(5"q(B 0 (br . br)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
849 (?$(5"r(B 0 (br . tr)) |
17052 | 850 (?$(5"s(B 0) |
851 (?$(5"t(B 0) | |
852 (?$(5"u(B 0) | |
853 (?$(5"v(B 0) | |
854 (?$(5"w(B 0) | |
855 (?$(5"x(B 0) | |
856 (?$(5"y(B 0) | |
857 (?$(5"z(B 0) | |
858 (?$(5"{(B 0) | |
859 (?$(5"|(B 0) | |
860 (?$(5"}(B 0) | |
861 (?$(5"~(B 0) | |
862 (?$(5#!(B 0) | |
863 (?$(5#"(B 0) | |
864 (?$(5##(B 0) | |
865 (?$(5#$(B 0) | |
866 (?$(5#%(B 0) | |
867 (?$(5#&(B 0) | |
868 (?$(5#'(B 0) | |
869 (?$(5#((B 0) | |
870 (?$(5#)(B 0) | |
871 (?$(5#*(B 0) | |
872 (?$(5#+(B 0) | |
873 (?$(5#,(B 0) | |
874 (?$(5#-(B 0) | |
875 (?$(5#.(B 0) | |
876 (?$(5#/(B 0) | |
877 (?$(5#0(B 0) | |
878 (?$(5#1(B 0) | |
879 (?$(5#2(B 0) | |
880 (?$(5#3(B 0) | |
881 (?$(5#4(B 0) | |
882 (?$(5#5(B 0) | |
883 (?$(5#6(B 0) | |
884 (?$(5#7(B 0) | |
885 (?$(5#8(B 0) | |
886 (?$(5#9(B 0) | |
887 (?$(5#:(B 0) | |
888 (?$(5#;(B 0) | |
889 (?$(5#<(B 0) | |
890 (?$(5#=(B 0) | |
891 (?$(5#>(B 0) | |
892 (?$(5#?(B 0) | |
893 (?$(5#@(B 0) | |
894 (?$(5#A(B 0) | |
895 (?$(5#B(B 0) | |
896 (?$(5#C(B 0) | |
897 (?$(5#D(B 0) | |
898 (?$(5#E(B 0) | |
899 (?$(5#F(B 0) | |
900 (?$(5#G(B 0) | |
901 (?$(5#H(B 0) | |
902 (?$(5#I(B 0) | |
903 (?$(5#J(B 0) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
904 (?$(5#K(B 0 (br . tr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
905 (?$(5#L(B 0 (br . tr)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
906 (?$(5#M(B 0 (br . tr)) |
17052 | 907 (?$(5#N(B 0) |
908 (?$(5#O(B 0) | |
909 (?$(5#P(B 0) | |
910 (?$(5#Q(B 0) | |
911 (?$(5#R(B 0) | |
912 (?$(5#S(B 0) | |
913 (?$(5#T(B 0) | |
914 (?$(5#U(B 0) | |
915 (?$(5#V(B 0) | |
916 (?$(5#W(B 0) | |
917 (?$(5#X(B 0) | |
918 (?$(5#Y(B 0) | |
919 (?$(5#Z(B 0) | |
920 (?$(5#[(B 0) | |
921 (?$(5#\(B 0) | |
922 (?$(5#](B 0) | |
923 (?$(5#^(B 0) | |
924 (?$(5#_(B 0) | |
925 (?$(5#`(B 0) | |
926 (?$(5#a(B 0) | |
927 (?$(5#b(B 0) | |
928 (?$(5#c(B 0) | |
929 (?$(5#d(B 0) | |
930 (?$(5#e(B 0) | |
931 (?$(5#f(B 0) | |
932 (?$(5#g(B 0) | |
933 (?$(5#h(B 0) | |
934 (?$(5#i(B 0) | |
935 (?$(5#j(B 0) | |
936 (?$(5#k(B 0) | |
937 (?$(5#l(B 0) | |
938 (?$(5#m(B 0) | |
939 (?$(5#n(B 0) | |
940 (?$(5#o(B 0) | |
941 (?$(5#p(B 0) | |
942 (?$(5#q(B 0) | |
943 (?$(5#r(B 0) | |
944 (?$(5#s(B 0) | |
945 (?$(5#t(B 0) | |
946 (?$(5#u(B 0) | |
947 (?$(5#v(B 0) | |
948 (?$(5#w(B 0) | |
949 (?$(5#x(B 0) | |
950 (?$(5#y(B 0) | |
951 (?$(5#z(B 0) | |
952 (?$(5#{(B 0) | |
953 (?$(5#|(B 0) | |
954 (?$(5#}(B 0) | |
955 (?$(5#~(B 0) | |
956 (?$(5$!(B 0) | |
957 (?$(5$"(B 0) | |
958 (?$(5$#(B 0) | |
959 (?$(5$$(B 0) | |
960 (?$(5$%(B 0) | |
961 (?$(5$&(B 0) | |
962 (?$(5$'(B 0) | |
963 (?$(5$((B 0) | |
964 (?$(5$)(B 0) | |
965 (?$(5$*(B 0) | |
966 (?$(5$+(B 0) | |
967 (?$(5$,(B 0) | |
968 (?$(5$-(B 0) | |
969 (?$(5$.(B 0) | |
970 (?$(5$/(B 0) | |
971 (?$(5$0(B 0) | |
972 (?$(5$1(B 0) | |
973 (?$(5$2(B 0) | |
974 (?$(5$3(B 0) | |
975 (?$(5$4(B 0) | |
976 (?$(5$5(B 0) | |
977 (?$(5$6(B 0) | |
978 (?$(5$7(B 0) | |
979 (?$(5$8(B 0) | |
980 (?$(5$9(B 0) | |
981 (?$(5$:(B 0) | |
982 (?$(5$;(B 0) | |
983 (?$(5$<(B 0) | |
984 (?$(5$=(B 0) | |
985 (?$(5$>(B 0) | |
986 (?$(5$?(B 0) | |
987 (?$(5$@(B 0) | |
988 (?$(5$A(B 0) | |
989 (?$(5$B(B 0) | |
990 (?$(5$C(B 0) | |
991 (?$(5$D(B 0) | |
992 (?$(5$E(B 0) | |
993 (?$(5$F(B 0) | |
994 (?$(5$G(B 0) | |
995 (?$(5$H(B 0) | |
996 (?$(5$I(B 0) | |
997 (?$(5$J(B 0) | |
998 (?$(5$K(B 0) | |
999 (?$(5$L(B 0) | |
1000 (?$(5$M(B 0) | |
1001 (?$(5$N(B 0) | |
1002 (?$(5$O(B 0) | |
1003 (?$(5$P(B 0) | |
1004 (?$(5$Q(B 0) | |
1005 (?$(5$R(B 0) | |
1006 (?$(5$S(B 0) | |
1007 (?$(5$T(B 0) | |
1008 (?$(5$U(B 0) | |
1009 (?$(5$V(B 0) | |
1010 (?$(5$W(B 0) | |
1011 (?$(5$X(B 0) | |
1012 (?$(5$Y(B 0) | |
1013 (?$(5$Z(B 0) | |
1014 (?$(5$[(B 0) | |
1015 (?$(5$\(B 0) | |
1016 (?$(5$](B 0) | |
1017 (?$(5$^(B 0) | |
1018 (?$(5$_(B 0) | |
1019 (?$(5$`(B 0) | |
1020 (?$(5$a(B 0) | |
1021 (?$(5$b(B 0) | |
1022 (?$(5$c(B 0) | |
1023 (?$(5$d(B 0) | |
1024 (?$(5$e(B 0) | |
1025 (?$(5$f(B 0) | |
1026 (?$(5$g(B 0) | |
1027 (?$(5$h(B 0) | |
1028 (?$(5$i(B 0) | |
1029 (?$(5$j(B 0) | |
1030 (?$(5$k(B 0) | |
1031 (?$(5$l(B 0) | |
1032 (?$(5$m(B 0) | |
1033 (?$(5$n(B 0) | |
1034 (?$(5$o(B 0) | |
1035 (?$(5$p(B 0) | |
1036 (?$(5$q(B 0) | |
1037 (?$(5$r(B 0) | |
1038 (?$(5$s(B 0) | |
1039 (?$(5$t(B 0) | |
1040 (?$(5$u(B 0) | |
1041 (?$(5$v(B 0) | |
1042 (?$(5$w(B 0) | |
1043 (?$(5$x(B 0) | |
1044 (?$(5$y(B 0) | |
1045 (?$(5$z(B 0) | |
1046 (?$(5${(B 0) | |
1047 (?$(5$|(B 0) | |
1048 (?$(5$}(B 0) | |
1049 (?$(5$~(B 0) | |
1050 )) | |
1051 | |
1052 ;; Determine composition priority and rule of the array of Glyphs. | |
1053 ;; Sort the glyphs with their priority. | |
1054 | |
26894 | 1055 (defun devanagari-reorder-glyphs-for-composition (string start end) |
1056 (let ((pos start) | |
1057 (ordered-glyphs nil)) | |
1058 (while (< pos end) | |
1059 (let ((glyph (aref string pos))) | |
17052 | 1060 (setq pos (1+ pos)) |
1061 (setq ordered-glyphs | |
26894 | 1062 (append ordered-glyphs |
1063 (list (assq glyph devanagari-composition-rules)))))) | |
17052 | 1064 (sort ordered-glyphs '(lambda (x y) (< (car (cdr x)) (car (cdr y))))))) |
1065 | |
26894 | 1066 ! ;;(devanagari-compose-to-one-glyph "$(5"5!X![(B") => "4$(6!Xv#"5t%![0!X"5![1(B" |
17052 | 1067 |
1068 (defun devanagari-compose-to-one-glyph (devanagari-string) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1069 (let* ((o-glyph-list (devanagari-reorder-glyphs-for-composition |
26894 | 1070 devanagari-string 0 (length devanagari-string))) |
17052 | 1071 ;; List of glyphs to be composed. |
1072 (cmp-glyph-list (list (car (car o-glyph-list)))) | |
1073 (o-glyph-list (cdr o-glyph-list))) | |
1074 (while o-glyph-list | |
1075 (let* ((o-glyph (car o-glyph-list)) | |
1076 (glyph (if (< 2 (length o-glyph)) | |
1077 ;; default composition | |
1078 (list (car (cdr (cdr o-glyph))) (car o-glyph)) | |
1079 ;; composition with a specified rule | |
1080 (list '(mr . ml) (car o-glyph))))) | |
1081 (setq o-glyph-list (cdr o-glyph-list)) | |
1082 (setq cmp-glyph-list (append cmp-glyph-list glyph)))) | |
1083 ;; Before applying compose-chars, convert glyphs to | |
1084 ;; 1-column width if possible. | |
1085 (setq cmp-glyph-list (devanagari-wide-to-narrow cmp-glyph-list)) | |
1086 (if (= (length cmp-glyph-list) 1) (char-to-string (car cmp-glyph-list)) | |
1087 (apply 'compose-chars cmp-glyph-list)))) | |
1088 | |
26894 | 1089 (defun devanagari-composition-component (string &optional start end) |
1090 (or start (setq start 0)) | |
1091 (or end (setq end (length string))) | |
1092 (let* ((o-glyph-list (devanagari-reorder-glyphs-for-composition | |
1093 string start end)) | |
1094 ;; List of glyphs to be composed. | |
1095 (cmp-glyph-list (list (car (car o-glyph-list))))) | |
1096 (setq o-glyph-list (cdr o-glyph-list)) | |
1097 (while o-glyph-list | |
1098 (let* ((o-glyph (car o-glyph-list)) | |
1099 (glyph (if (< 2 (length o-glyph)) | |
1100 ;; default composition | |
1101 (list (car (cdr (cdr o-glyph))) (car o-glyph)) | |
1102 ;; composition with a specified rule | |
1103 (list '(mr . ml) (car o-glyph))))) | |
1104 (setq o-glyph-list (cdr o-glyph-list)) | |
1105 (setq cmp-glyph-list (append cmp-glyph-list glyph)))) | |
1106 ;; Convert glyphs to 1-column width if possible. | |
1107 (devanagari-wide-to-narrow cmp-glyph-list))) | |
1108 | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1109 ;; Utility function for Phase 2.5 |
26894 | 1110 |
1111 ;; Check whether GLYPH is a Devanagari vertical modifier or not. | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1112 ;; If it is a vertical modifier, whether it should be 1-column shape or not |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1113 ;; depends on previous non-vertical modifier. |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1114 (defun devanagari-vertical-modifier-p (glyph) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1115 (string-match (char-to-string glyph) |
21442 | 1116 "[$(5!"!]!^!_!`!a!b!c!h!i"p"q"r#K#L#M(B]")) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1117 |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1118 (defun devanagari-non-vertical-modifier-p (glyph) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1119 (string-match (char-to-string glyph) |
21442 | 1120 ; "[$(5!Z![!\!d!e!f!g(B]")) |
1121 "[$(5![(B]")) | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1122 |
21442 | 1123 (defun devanagari-wide-to-narrow-char (char) |
26894 | 1124 "Convert Devanagari character CHAR to the corresponding narrow character. |
1125 If there's no corresponding narrow character, return CHAR as is." | |
21442 | 1126 (let ((narrow (cdr (assq char devanagari-1-column-char)))) |
26894 | 1127 (or narrow char))) |
17052 | 1128 |
1129 ;; | |
26894 | 1130 ;; Phase 2.5 Convert appropriate character to 1-column shape. |
17052 | 1131 ;; |
1132 ;; This is temporary and should be removed out when Emacs supports | |
1133 ;; variable width characters. | |
1134 ;; | |
1135 ;; This will convert the composing glyphs (2 column glyphs) | |
1136 ;; to narrow (1 column) glyphs if they exist. | |
1137 ;; | |
1138 ;; devanagari-wide-to-narrow-old converts glyphs simply. | |
1139 ;; devanagari-wide-to-narrow takes care of upper/lower apply-glyphs | |
1140 ;; with 2 column base-glyph. | |
1141 ;; | |
1142 ;; Execution Examples | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1143 ;;(devanagari-wide-to-narrow '(?$(5!3(B (ml . ml) ?$(5!a(B)) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1144 ;;(devanagari-wide-to-narrow '(?$(5!F(B (ml . ml) ?$(5!a(B)) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1145 |
17052 | 1146 (defun devanagari-wide-to-narrow (src-list) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1147 (devanagari-wide-to-narrow-iter src-list t)) |
17052 | 1148 |
21442 | 1149 (defun devanagari-wide-to-narrow-iter (src-list 2-col-glyph) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1150 (let ((glyph (car src-list))) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1151 (cond ((null src-list) '()) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1152 ; not glyph code |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1153 ((not (numberp glyph)) |
26894 | 1154 (cons glyph |
1155 (devanagari-wide-to-narrow-iter (cdr src-list) 2-col-glyph))) | |
21442 | 1156 ; glyphs to be processed regardless of the value of "2-col-glyph" |
1157 ((devanagari-non-vertical-modifier-p glyph) | |
1158 (cons (devanagari-wide-to-narrow-char glyph) | |
1159 (devanagari-wide-to-narrow-iter (cdr src-list) 2-col-glyph))) | |
1160 ; glyphs which are depends on the value of "2-col-glyph" | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1161 ((devanagari-vertical-modifier-p glyph) |
21442 | 1162 (if 2-col-glyph |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1163 (cons glyph |
21442 | 1164 (devanagari-wide-to-narrow-iter (cdr src-list) t)) |
1165 (cons (devanagari-wide-to-narrow-char glyph) | |
26894 | 1166 (devanagari-wide-to-narrow-iter (cdr src-list) |
1167 2-col-glyph)))) | |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1168 ; normal glyph |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1169 (t |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1170 (if (cdr (assq glyph devanagari-1-column-char)) |
21442 | 1171 (cons (devanagari-wide-to-narrow-char glyph) |
17087
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1172 (devanagari-wide-to-narrow-iter (cdr src-list) nil)) |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1173 (cons glyph |
fb13faeea9aa
Fix handling of several characters.
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
1174 (devanagari-wide-to-narrow-iter (cdr src-list) t))))))) |
17052 | 1175 |
1176 | |
1177 ;; | |
1178 ;; Summary | |
1179 ;; | |
1180 | |
1181 ;; | |
26894 | 1182 ;; Decomposition of composite sequence. |
17052 | 1183 ;; |
1184 | |
1185 ;;;###autoload | |
1186 (defun devanagari-decompose-string (str) | |
26894 | 1187 "Decompose Devanagari string STR" |
1188 (decompose-string (copy-sequence str))) | |
17052 | 1189 |
1190 ;;;###autoload | |
1191 (defun devanagari-decompose-region (from to) | |
1192 (interactive "r") | |
26894 | 1193 (decompose-region from to)) |
17052 | 1194 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1195 ;;; |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1196 ;;; Composition |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1197 ;;; |
17052 | 1198 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1199 ;;;###autoload |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1200 (defun devanagari-compose-string (str &rest langs) |
26894 | 1201 (setq str (copy-sequence str)) |
1202 (let ((idx 0) | |
1203 rest match-b match-e) | |
1204 (while (string-match devanagari-composite-glyph-unit str idx) | |
1205 (let* ((match-b (match-beginning 0)) | |
1206 (match-e (match-end 0)) | |
1207 (cmps (devanagari-composition-component | |
1208 (apply | |
1209 'char-to-glyph-devanagari | |
1210 (cons (substring str match-b match-e) langs))))) | |
1211 (compose-string str match-b match-e cmps) | |
1212 (setq idx match-e)))) | |
1213 str) | |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1214 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1215 ;;;###autoload |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1216 (defun devanagari-compose-region (from to &rest langs) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1217 (interactive "r") |
26894 | 1218 (save-excursion |
1219 (save-restriction | |
1220 (narrow-to-region from to) | |
1221 (goto-char (point-min)) | |
1222 (while (re-search-forward devanagari-composite-glyph-unit nil t) | |
1223 (let* ((match-b (match-beginning 0)) (match-e (match-end 0)) | |
1224 (cmps (devanagari-composition-component | |
1225 (apply | |
1226 'char-to-glyph-devanagari | |
1227 (cons (buffer-substring match-b match-e) langs))))) | |
1228 (compose-region match-b match-e cmps)))))) | |
17052 | 1229 |
1230 ;; For pre-write and post-read conversion | |
1231 | |
1232 ;;;###autoload | |
1233 (defun devanagari-compose-from-is13194-region (from to) | |
1234 "Compose IS 13194 characters in the region to Devanagari characters." | |
1235 (interactive "r") | |
20111
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1236 (save-excursion |
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1237 (save-restriction |
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1238 (narrow-to-region from to) |
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1239 (indian-to-devanagari-region (point-min) (point-max)) |
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1240 (devanagari-compose-region (point-min) (point-max)) |
761a83f7cb4e
(devanagari-compose-from-is13194-region):
Kenichi Handa <handa@m17n.org>
parents:
18547
diff
changeset
|
1241 (- (point-max) (point-min))))) |
17052 | 1242 |
1243 ;;;###autoload | |
17773
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1244 (defun in-is13194-devanagari-post-read-conversion (len) |
26894 | 1245 (let ((pos (point))) |
1246 (devanagari-compose-from-is13194-region pos (+ pos len)))) | |
17773
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1247 |
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1248 ;;;###autoload |
17052 | 1249 (defun devanagari-decompose-to-is13194-region (from to) |
1250 "Decompose Devanagari characters in the region to IS 13194 characters." | |
1251 (interactive "r") | |
26894 | 1252 (save-excursion |
1253 (save-restriction | |
1254 (narrow-to-region from to) | |
1255 (devanagari-decompose-region (point-min) (point-max)) | |
1256 (devanagari-to-indian-region (point-min) (point-max))))) | |
17052 | 1257 |
17773
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1258 ;;;###autoload |
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1259 (defun in-is13194-devanagari-pre-write-conversion (from to) |
23525
7462da3c79cb
(in-is13194-devanagari-pre-write-conversion): Use with-temp-buffer.
Kenichi Handa <handa@m17n.org>
parents:
22987
diff
changeset
|
1260 (let ((old-buf (current-buffer))) |
23548
87736ae8e5ff
(in-is13194-devanagari-pre-write-conversion): Cancel previous
Kenichi Handa <handa@m17n.org>
parents:
23525
diff
changeset
|
1261 (set-buffer (generate-new-buffer " *temp*")) |
87736ae8e5ff
(in-is13194-devanagari-pre-write-conversion): Cancel previous
Kenichi Handa <handa@m17n.org>
parents:
23525
diff
changeset
|
1262 (if (stringp from) |
87736ae8e5ff
(in-is13194-devanagari-pre-write-conversion): Cancel previous
Kenichi Handa <handa@m17n.org>
parents:
23525
diff
changeset
|
1263 (insert from) |
87736ae8e5ff
(in-is13194-devanagari-pre-write-conversion): Cancel previous
Kenichi Handa <handa@m17n.org>
parents:
23525
diff
changeset
|
1264 (insert-buffer-substring old-buf from to)) |
87736ae8e5ff
(in-is13194-devanagari-pre-write-conversion): Cancel previous
Kenichi Handa <handa@m17n.org>
parents:
23525
diff
changeset
|
1265 (devanagari-decompose-to-is13194-region (point-min) (point-max)) |
17773
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1266 ;; Should return nil as annotations. |
f1ece95d00c2
(in-is13194-devanagari-post-read-conversion): New function.
Kenichi Handa <handa@m17n.org>
parents:
17314
diff
changeset
|
1267 nil)) |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1268 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1269 ;; For input/output of ITRANS |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1270 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1271 ;;;###autoload |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1272 (defun devanagari-encode-itrans-region (from to) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1273 (interactive "r") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1274 (save-restriction |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1275 (narrow-to-region from to) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1276 (devanagari-decompose-to-is13194-region (point-min) (point-max)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1277 (indian-encode-itrans-region (point-min) (point-max)))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1278 |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1279 ;;;###autoload |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1280 (defun devanagari-decode-itrans-region (from to) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1281 (interactive "r") |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1282 (save-restriction |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1283 (narrow-to-region from to) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1284 (indian-decode-itrans-region (point-min) (point-max)) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1285 (devanagari-compose-from-is13194-region (point-min) (point-max)))) |
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1286 |
17052 | 1287 ;; |
18309
bd8b521f5218
Provide XXX-util instead of
Kenichi Handa <handa@m17n.org>
parents:
18203
diff
changeset
|
1288 (provide 'devan-util) |
17052 | 1289 |
17300
01d528c5dd18
Handle more Devanagari characters correctly.
Kenichi Handa <handa@m17n.org>
parents:
17087
diff
changeset
|
1290 ;;; devan-util.el end here |