154 |
;; Problem:: |
;; Problem:: |
155 |
;; Can we generalize this methods to other Indian scripts? |
;; Can we generalize this methods to other Indian scripts? |
156 |
|
|
157 |
;;; (defvar dev-char-glyph |
(defvar dev-char-glyph |
158 |
;;; '(("$,15E(B" . "$,4 K(B") |
'(("$,15E(B" . "$,4 K(B") |
159 |
;;; ("$,15F(B" . "$,4 K")(B") |
("$,15F(B" . "$,4 K")(B") |
160 |
;;; ("$,15~(B" . "$,4")(B") |
("$,15~(B" . "$,4")(B") |
161 |
;;; ("$,15G(B" . "$,4 \(B") |
("$,15G(B" . "$,4 \(B") |
162 |
;;; ("$,15(B" . "$,4"*(B") |
("$,15(B" . "$,4"*(B") |
163 |
;;; ("$,155A(B" . "$,4"*(B\$,4"&(B") |
("$,155A(B" . "$,4"*(B\$,4"&(B") |
164 |
;;; ("$,15H(B" . "$,4 \"'(B") |
("$,15H(B" . "$,4 \"'(B") |
165 |
;;; ("$,15H5A(B" . "$,4 \"'"&(B") |
("$,15H5A(B" . "$,4 \"'"&(B") |
166 |
;;; ("$,16 (B" . "$,4"2(B") |
("$,16 (B" . "$,4"2(B") |
167 |
;;; ("$,16 5A(B" . "$,4"2"&(B") |
("$,16 5A(B" . "$,4"2"&(B") |
168 |
;;; ("$,15I(B" . "$,4 ](B") |
("$,15I(B" . "$,4 ](B") |
169 |
;;; ("$,16!(B" . "$,4"6(B") |
("$,16!(B" . "$,4"6(B") |
170 |
;;; ("$,15J(B" . "$,4 ^"P(B") |
("$,15J(B" . "$,4 ^"P(B") |
171 |
;;; ("$,16"(B" . "$,4":(B") |
("$,16"(B" . "$,4":(B") |
172 |
;;; ("$,15K(B" . "$,4 `"Q(B") |
("$,15K(B" . "$,4 `"Q(B") |
173 |
;;; ("$,16#(B" . "$,4">(B") |
("$,16#(B" . "$,4">(B") |
174 |
;;; ;;("$,15L(B" . nil) ; not implemented. |
;;("$,15L(B" . nil) ; not implemented. |
175 |
;;; ("$,16$(B" . "$,4"?(B") |
("$,16$(B" . "$,4"?(B") |
176 |
;;; ("$,15M(B" . "$,4 b"L(B") |
("$,15M(B" . "$,4 b"L(B") |
177 |
;;; ("$,15M5A(B" . "$,4 b"$(B") |
("$,15M5A(B" . "$,4 b"$(B") |
178 |
;;; ("$,15M5B(B" . "$,4 b"$(B") |
("$,15M5B(B" . "$,4 b"$(B") |
179 |
;;; ("$,16%(B" . "\$,4"L(B") |
("$,16%(B" . "\$,4"L(B") |
180 |
;;; ("$,15N(B" . "$,4 b"@(B") |
("$,15N(B" . "$,4 b"@(B") |
181 |
;;; ("$,15N5A(B" . "$,4 b"@"&(B") |
("$,15N5A(B" . "$,4 b"@"&(B") |
182 |
;;; ("$,16&(B" . "\$,4"@(B") |
("$,16&(B" . "\$,4"@(B") |
183 |
;;; ("$,16&5A(B" . "\$,4"@(B\$,4"&(B") |
("$,16&5A(B" . "\$,4"@(B\$,4"&(B") |
184 |
;;; ("$,15O(B" . "$,4 b(B") |
("$,15O(B" . "$,4 b(B") |
185 |
;;; ("$,16'(B" . "\$,4"D(B") |
("$,16'(B" . "\$,4"D(B") |
186 |
;;; ("$,16'5A(B" . "\$,4"D(B\$,4"&(B") |
("$,16'5A(B" . "\$,4"D(B\$,4"&(B") |
187 |
;;; ("$,15P(B" . "$,4 b"D(B") |
("$,15P(B" . "$,4 b"D(B") |
188 |
;;; ("$,15P5A(B" . "$,4 b"D"&(B") |
("$,15P5A(B" . "$,4 b"D"&(B") |
189 |
;;; ("$,16((B" . "\$,4"H(B") |
("$,16((B" . "\$,4"H(B") |
190 |
;;; ("$,16(5A(B" . "\$,4"H(B\$,4"&(B") |
("$,16(5A(B" . "\$,4"H(B\$,4"&(B") |
191 |
;;; ("$,15Q(B" . "$,4 K")"L(B") ;; special rule for reodering. |
("$,15Q(B" . "$,4 K")"L(B") ;; special rule for reodering. |
192 |
;;; ("$,15Q5A(B" . "$,4 K")"$(B") |
("$,15Q5A(B" . "$,4 K")"$(B") |
193 |
;;; ("$,15Q5B(B" . "$,4 K")"$(B") |
("$,15Q5B(B" . "$,4 K")"$(B") |
194 |
;;; ("$,16)(B" . "\$,4")"L(B") |
("$,16)(B" . "\$,4")"L(B") |
195 |
;;; ("$,16)5A(B" . "\$,4")"$(B") |
("$,16)5A(B" . "\$,4")"$(B") |
196 |
;;; ("$,16)5B(B" . "\$,4")"$(B") |
("$,16)5B(B" . "\$,4")"$(B") |
197 |
;;; ("$,15R(B" . "$,4 K")"@(B") |
("$,15R(B" . "$,4 K")"@(B") |
198 |
;;; ("$,15R5A(B" . "$,4 K")"@"&(B") |
("$,15R5A(B" . "$,4 K")"@"&(B") |
199 |
;;; ("$,16*(B" . "\$,4")"@(B") |
("$,16*(B" . "\$,4")"@(B") |
200 |
;;; ("$,16*5A(B" . "\$,4")"@"&(B") |
("$,16*5A(B" . "\$,4")"@"&(B") |
201 |
;;; ("$,15S(B" . "$,4 K")"D(B") |
("$,15S(B" . "$,4 K")"D(B") |
202 |
;;; ("$,15S5A(B" . "$,4 K")"D"&(B") |
("$,15S5A(B" . "$,4 K")"D"&(B") |
203 |
;;; ("$,16+(B" . "\$,4")"D(B") |
("$,16+(B" . "\$,4")"D(B") |
204 |
;;; ("$,16+5A(B" . "\$,4")"D"&(B") |
("$,16+5A(B" . "\$,4")"D"&(B") |
205 |
;;; ("$,15T(B" . "$,4 K")"H(B") |
("$,15T(B" . "$,4 K")"H(B") |
206 |
;;; ("$,15T5A(B" . "$,4 K")"H"&(B") |
("$,15T5A(B" . "$,4 K")"H"&(B") |
207 |
;;; ("$,16,(B" . "\$,4")"H(B") |
("$,16,(B" . "\$,4")"H(B") |
208 |
;;; ("$,16,5A(B" . "\$,4")"H"&(B") |
("$,16,5A(B" . "\$,4")"H"&(B") |
209 |
;;; ("$,16@(B" . "$,4 a"Q(B") |
("$,16@(B" . "$,4 a"Q(B") |
210 |
;;; ;;("$,16B(B" . nil) |
;;("$,16B(B" . nil) |
211 |
;;; ;;("$,16A(B" . nil) |
;;("$,16A(B" . nil) |
212 |
;;; ;;("$,16C(B" . nil) |
;;("$,16C(B" . nil) |
213 |
|
|
214 |
;;; ;; GRUTTALS |
;; GRUTTALS |
215 |
;;; ("$,15U(B" . "$,4 e"R(B") |
("$,15U(B" . "$,4 e"R(B") |
216 |
;;; ("$,15U6-(B" . "$,4 c(B") |
("$,15U6-(B" . "$,4 c(B") |
217 |
;;; ("$,15U6-5p(B" . "$,4 g"R(B") |
("$,15U6-5p(B" . "$,4 g"R(B") |
218 |
;;; ("$,15U6-5d(B" . "$,4 h"R(B") |
("$,15U6-5d(B" . "$,4 h"R(B") |
219 |
;;; ("$,15U6-5w(B" . "$,4 i")(B") |
("$,15U6-5w(B" . "$,4 i")(B") |
220 |
;;; ("$,15U6-5w6-(B" . "$,4 i(B") |
("$,15U6-5w6-(B" . "$,4 i(B") |
221 |
|
|
222 |
;;; ("$,15V(B" . "$,4 j")(B") |
("$,15V(B" . "$,4 j")(B") |
223 |
;;; ("$,15V6-(B" . "$,4 j(B") |
("$,15V6-(B" . "$,4 j(B") |
224 |
;;; ("$,15V6-5p(B" . "$,4 l")(B") |
("$,15V6-5p(B" . "$,4 l")(B") |
225 |
;;; ("$,15V6-5p6-(B" . "$,4 l(B") |
("$,15V6-5p6-(B" . "$,4 l(B") |
226 |
|
|
227 |
;;; ("$,15W(B" . "$,4 m")(B") |
("$,15W(B" . "$,4 m")(B") |
228 |
;;; ("$,15W6-(B" . "$,4 m(B") |
("$,15W6-(B" . "$,4 m(B") |
229 |
;;; ("$,15W6-5p(B" . "$,4 o")(B") |
("$,15W6-5p(B" . "$,4 o")(B") |
230 |
;;; ("$,15W6-5p6-(B" . "$,4 o(B") |
("$,15W6-5p6-(B" . "$,4 o(B") |
231 |
|
|
232 |
;;; ("$,15X(B" . "$,4 p")(B") |
("$,15X(B" . "$,4 p")(B") |
233 |
;;; ("$,15X6-(B" . "$,4 p(B") |
("$,15X6-(B" . "$,4 p(B") |
234 |
;;; ("$,15X6-5p(B" . "$,4 q")(B") |
("$,15X6-5p(B" . "$,4 q")(B") |
235 |
;;; ("$,15X6-5p6-(B" . "$,4 q(B") |
("$,15X6-5p6-(B" . "$,4 q(B") |
236 |
|
|
237 |
;;; ("$,15Y(B" . "$,4 r"S(B") |
("$,15Y(B" . "$,4 r"S(B") |
238 |
;;; ;; PALATALS |
;; PALATALS |
239 |
;;; ("$,15Z(B" . "$,4 s")(B") |
("$,15Z(B" . "$,4 s")(B") |
240 |
;;; ("$,15Z6-(B" . "$,4 s(B") |
("$,15Z6-(B" . "$,4 s(B") |
241 |
;;; ("$,15Z6-5p(B" . "$,4 t")(B") |
("$,15Z6-5p(B" . "$,4 t")(B") |
242 |
;;; ("$,15Z6-5p6-(B" . "$,4 t(B") |
("$,15Z6-5p6-(B" . "$,4 t(B") |
243 |
|
|
244 |
;;; ("$,15[(B" . "$,4 u"T(B") |
("$,15[(B" . "$,4 u"T(B") |
245 |
|
|
246 |
;;; ("$,15\(B" . "$,4 v")(B") |
("$,15\(B" . "$,4 v")(B") |
247 |
;;; ("$,15\6-(B" . "$,4 v(B") |
("$,15\6-(B" . "$,4 v(B") |
248 |
;;; ("$,15\6-5p(B" . "$,4 x")(B") |
("$,15\6-5p(B" . "$,4 x")(B") |
249 |
;;; ("$,15\6-5p6-(B" . "$,4 x(B") |
("$,15\6-5p6-(B" . "$,4 x(B") |
250 |
;;; ("$,15\6-5^(B" . "$,4 y")(B") |
("$,15\6-5^(B" . "$,4 y")(B") |
251 |
;;; ("$,15\6-5^6-(B" . "$,4 y(B") |
("$,15\6-5^6-(B" . "$,4 y(B") |
252 |
|
|
253 |
;;; ("$,15](B" . "$,4 z")(B") |
("$,15](B" . "$,4 z")(B") |
254 |
;;; ("$,15]6-(B" . "$,4 z(B") |
("$,15]6-(B" . "$,4 z(B") |
255 |
;;; ("$,15]6-5p(B" . "$,4 {")(B") |
("$,15]6-5p(B" . "$,4 {")(B") |
256 |
;;; ("$,15]6-5p6-(B" . "$,4 {(B") |
("$,15]6-5p6-(B" . "$,4 {(B") |
257 |
|
|
258 |
;;; ("$,15^(B" . "$,4 |")(B") |
("$,15^(B" . "$,4 |")(B") |
259 |
;;; ("$,15^6-(B" . "$,4 |(B") |
("$,15^6-(B" . "$,4 |(B") |
260 |
;;; ;; CEREBRALS |
;; CEREBRALS |
261 |
;;; ("$,15_(B" . "$,4 }"U(B") |
("$,15_(B" . "$,4 }"U(B") |
262 |
;;; ("$,15_6-5_(B" . "$,4 ~"U(B") |
("$,15_6-5_(B" . "$,4 ~"U(B") |
263 |
;;; ("$,15_6-5`(B" . "$,4 "U(B") |
("$,15_6-5`(B" . "$,4 "U(B") |
264 |
|
|
265 |
;;; ("$,15`(B" . "$,4! "V(B") |
("$,15`(B" . "$,4! "V(B") |
266 |
;;; ("$,15`6-5`(B" . "$,4!!"V(B") |
("$,15`6-5`(B" . "$,4!!"V(B") |
267 |
|
|
268 |
;;; ("$,15a(B" . "$,4!""W(B") |
("$,15a(B" . "$,4!""W(B") |
269 |
;;; ("$,15a6-5a(B" . "$,4!$"W(B") |
("$,15a6-5a(B" . "$,4!$"W(B") |
270 |
;;; ("$,15a6-5b(B" . "$,4!%"W(B") |
("$,15a6-5b(B" . "$,4!%"W(B") |
271 |
|
|
272 |
;;; ("$,15b(B" . "$,4!&"X(B") |
("$,15b(B" . "$,4!&"X(B") |
273 |
|
|
274 |
;;; ("$,15c(B" . "$,4!(")(B") |
("$,15c(B" . "$,4!(")(B") |
275 |
;;; ("$,15c6-(B" . "$,4!((B") |
("$,15c6-(B" . "$,4!((B") |
276 |
;;; ;; DENTALS |
;; DENTALS |
277 |
;;; ("$,15d(B" . "$,4!)")(B") |
("$,15d(B" . "$,4!)")(B") |
278 |
;;; ("$,15d6-(B" . "$,4!)(B") |
("$,15d6-(B" . "$,4!)(B") |
279 |
;;; ("$,15d6-5p(B" . "$,4!*")(B") |
("$,15d6-5p(B" . "$,4!*")(B") |
280 |
;;; ("$,15d6-5p6-(B" . "$,4!*(B") |
("$,15d6-5p6-(B" . "$,4!*(B") |
281 |
;;; ("$,15d6-5d(B" . "$,4!+")(B") |
("$,15d6-5d(B" . "$,4!+")(B") |
282 |
;;; ("$,15d6-5d6-(B" . "$,4!+(B") |
("$,15d6-5d6-(B" . "$,4!+(B") |
283 |
|
|
284 |
;;; ("$,15e(B" . "$,4!,")(B") |
("$,15e(B" . "$,4!,")(B") |
285 |
;;; ("$,15e6-(B" . "$,4!,(B") |
("$,15e6-(B" . "$,4!,(B") |
286 |
;;; ("$,15e6-5p(B" . "$,4!-")(B") |
("$,15e6-5p(B" . "$,4!-")(B") |
287 |
;;; ("$,15e6-5p6-(B" . "$,4!-(B") |
("$,15e6-5p6-(B" . "$,4!-(B") |
288 |
|
|
289 |
;;; ("$,15f(B" . "$,4!."Y(B") |
("$,15f(B" . "$,4!."Y(B") |
290 |
;;; ("$,15f6#(B" . "$,4!/"Y(B") |
("$,15f6#(B" . "$,4!/"Y(B") |
291 |
;;; ("$,15f6-5p(B" . "$,4!0"Y(B") |
("$,15f6-5p(B" . "$,4!0"Y(B") |
292 |
;;; ("$,15f6-5f(B" . "$,4!1"Y(B") |
("$,15f6-5f(B" . "$,4!1"Y(B") |
293 |
;;; ("$,15f6-5g(B" . "$,4!2"Y(B") |
("$,15f6-5g(B" . "$,4!2"Y(B") |
294 |
;;; ("$,15f6-5n(B" . "$,4!3(B") |
("$,15f6-5n(B" . "$,4!3(B") |
295 |
;;; ("$,15f6-5o(B" . "$,4!4(B") |
("$,15f6-5o(B" . "$,4!4(B") |
296 |
;;; ("$,15f6-5u(B" . "$,4!5"Y(B") |
("$,15f6-5u(B" . "$,4!5"Y(B") |
297 |
|
|
298 |
;;; ("$,15g(B" . "$,4!6")(B") |
("$,15g(B" . "$,4!6")(B") |
299 |
;;; ("$,15g6-(B" . "$,4!6(B") |
("$,15g6-(B" . "$,4!6(B") |
300 |
;;; ("$,15g6-5p(B" . "$,4!7")(B") |
("$,15g6-5p(B" . "$,4!7")(B") |
301 |
;;; ("$,15g6-5p6-(B" . "$,4!7(B") |
("$,15g6-5p6-(B" . "$,4!7(B") |
302 |
|
|
303 |
;;; ("$,15h(B" . "$,4!8")(B") |
("$,15h(B" . "$,4!8")(B") |
304 |
;;; ("$,15h6-(B" . "$,4!8(B") |
("$,15h6-(B" . "$,4!8(B") |
305 |
;;; ("$,15h6-5p(B" . "$,4!9")(B") |
("$,15h6-5p(B" . "$,4!9")(B") |
306 |
;;; ("$,15h6-5p6-(B" . "$,4!9")(B") |
("$,15h6-5p6-(B" . "$,4!9")(B") |
307 |
;;; ("$,15h6-5h(B" . "$,4!:")(B") |
("$,15h6-5h(B" . "$,4!:")(B") |
308 |
;;; ("$,15h6-5h6-(B" . "$,4!:(B") |
("$,15h6-5h6-(B" . "$,4!:(B") |
309 |
|
|
310 |
;;; ("$,15i(B" . "$,4!8"#")(B") |
("$,15i(B" . "$,4!8"#")(B") |
311 |
;;; ;; LABIALS |
;; LABIALS |
312 |
;;; ("$,15j(B" . "$,4!;")(B") |
("$,15j(B" . "$,4!;")(B") |
313 |
;;; ("$,15j6-(B" . "$,4!;(B") |
("$,15j6-(B" . "$,4!;(B") |
314 |
;;; ("$,15j6-5p(B" . "$,4!<")(B") |
("$,15j6-5p(B" . "$,4!<")(B") |
315 |
;;; ("$,15j6-5p6-(B" . "$,4!<(B") |
("$,15j6-5p6-(B" . "$,4!<(B") |
316 |
|
|
317 |
;;; ("$,15k(B" . "$,4!a"[(B") |
("$,15k(B" . "$,4!a"[(B") |
318 |
;;; ("$,15k6-(B" . "$,4!=(B") |
("$,15k6-(B" . "$,4!=(B") |
319 |
;;; ("$,15k6-5p(B" . "$,4!c"[(B") |
("$,15k6-5p(B" . "$,4!c"[(B") |
320 |
|
|
321 |
;;; ("$,15l(B" . "$,4!d")(B") |
("$,15l(B" . "$,4!d")(B") |
322 |
;;; ("$,15l6-(B" . "$,4!d(B") |
("$,15l6-(B" . "$,4!d(B") |
323 |
;;; ("$,15l6-5p(B" . "$,4!e")(B") |
("$,15l6-5p(B" . "$,4!e")(B") |
324 |
;;; ("$,15l6-5p6-(B" . "$,4!e(B") |
("$,15l6-5p6-(B" . "$,4!e(B") |
325 |
|
|
326 |
;;; ("$,15m(B" . "$,4!f")(B") |
("$,15m(B" . "$,4!f")(B") |
327 |
;;; ("$,15m6-(B" . "$,4!f(B") |
("$,15m6-(B" . "$,4!f(B") |
328 |
;;; ("$,15m6-5p(B" . "$,4!g")(B") |
("$,15m6-5p(B" . "$,4!g")(B") |
329 |
;;; ("$,15m6-5p6-(B" . "$,4!g(B") |
("$,15m6-5p6-(B" . "$,4!g(B") |
330 |
|
|
331 |
;;; ("$,15n(B" . "$,4!h")(B") |
("$,15n(B" . "$,4!h")(B") |
332 |
;;; ("$,15n6-(B" . "$,4!h(B") |
("$,15n6-(B" . "$,4!h(B") |
333 |
;;; ("$,15n6-5p(B" . "$,4!i")(B") |
("$,15n6-5p(B" . "$,4!i")(B") |
334 |
;;; ("$,15n6-5p6-(B" . "$,4!i(B") |
("$,15n6-5p6-(B" . "$,4!i(B") |
335 |
;;; ;; SEMIVOWELS |
;; SEMIVOWELS |
336 |
;;; ("$,15o(B" . "$,4!j")(B") |
("$,15o(B" . "$,4!j")(B") |
337 |
;;; ("$,15o6-(B" . "$,4!j(B") |
("$,15o6-(B" . "$,4!j(B") |
338 |
;;; ("$,15o6-5p(B" . "$,4!k")(B") |
("$,15o6-5p(B" . "$,4!k")(B") |
339 |
;;; ("$,15o6-5p6-(B" . "$,4!k(B") |
("$,15o6-5p6-(B" . "$,4!k(B") |
340 |
;;; ("$,16-5o(B" . "$,4!l(B") ;; when every ohter lig. fails. |
("$,16-5o(B" . "$,4!l(B") ;; when every ohter lig. fails. |
341 |
|
|
342 |
;;; ("$,15p(B" . "$,4!n"W(B") |
("$,15p(B" . "$,4!n"W(B") |
343 |
;;; ;; ("$,15p6-(B" . "\$,4"'(B") ;; special case. only the topmost pos. |
;; ("$,15p6-(B" . "\$,4"'(B") ;; special case. only the topmost pos. |
344 |
;;; ("$,15q(B" . "$,4!n"#"W(B") |
("$,15q(B" . "$,4!n"#"W(B") |
345 |
;;; ("$,15q6-(B" . "$,4!m(B") ;; IS 13194 speical rule. |
("$,15q6-(B" . "$,4!m(B") ;; IS 13194 speical rule. |
346 |
;;; ("$,15p6!(B" . "$,4!o"[(B") |
("$,15p6!(B" . "$,4!o"[(B") |
347 |
;;; ("$,15p6"(B" . "$,4!p"\(B") |
("$,15p6"(B" . "$,4!p"\(B") |
348 |
|
|
349 |
;;; ("$,15r(B" . "$,4!q")(B") |
("$,15r(B" . "$,4!q")(B") |
350 |
;;; ("$,15r6-(B" . "$,4!q(B") |
("$,15r6-(B" . "$,4!q(B") |
351 |
;;; ("$,15s(B" . "$,4!s(B") |
("$,15s(B" . "$,4!s(B") |
352 |
;;; ("$,15s6-(B" . "$,4!r(B") |
("$,15s6-(B" . "$,4!r(B") |
353 |
;;; ("$,15t(B" . "$,4!s"#(B") |
("$,15t(B" . "$,4!s"#(B") |
354 |
;;; ("$,15t6-(B" . "$,4!r"#(B") |
("$,15t6-(B" . "$,4!r"#(B") |
355 |
|
|
356 |
;;; ("$,15u(B" . "$,4!t")(B") |
("$,15u(B" . "$,4!t")(B") |
357 |
;;; ("$,15u6-(B" . "$,4!t(B") |
("$,15u6-(B" . "$,4!t(B") |
358 |
;;; ("$,15u6-5p(B" . "$,4!u")(B") |
("$,15u6-5p(B" . "$,4!u")(B") |
359 |
;;; ("$,15u6-5p6-(B" . "$,4!u(B") |
("$,15u6-5p6-(B" . "$,4!u(B") |
360 |
;;; ;; SIBILANTS |
;; SIBILANTS |
361 |
;;; ("$,15v(B" . "$,4!v")(B") |
("$,15v(B" . "$,4!v")(B") |
362 |
;;; ("$,15v6-(B" . "$,4!v(B") |
("$,15v6-(B" . "$,4!v(B") |
363 |
;;; ("$,15v6-5u(B" . "$,4!w")(B") |
("$,15v6-5u(B" . "$,4!w")(B") |
364 |
;;; ("$,15v6-5u6-(B" . "$,4!w(B") |
("$,15v6-5u6-(B" . "$,4!w(B") |
365 |
;;; ("$,15v6-5p(B" . "$,4!x")(B") |
("$,15v6-5p(B" . "$,4!x")(B") |
366 |
;;; ("$,15v6-5p6-(B" . "$,4!x(B") |
("$,15v6-5p6-(B" . "$,4!x(B") |
367 |
|
|
368 |
;;; ("$,15w(B" . "$,4!y")(B") |
("$,15w(B" . "$,4!y")(B") |
369 |
;;; ("$,15w6-(B" . "$,4!y(B") |
("$,15w6-(B" . "$,4!y(B") |
370 |
;;; ("$,15x(B" . "$,4!z")(B") |
("$,15x(B" . "$,4!z")(B") |
371 |
;;; ("$,15x6-(B" . "$,4!z(B") |
("$,15x6-(B" . "$,4!z(B") |
372 |
;;; ("$,15x6-5p(B" . "$,4!{")(B") |
("$,15x6-5p(B" . "$,4!{")(B") |
373 |
;;; ("$,15x6-5p6-(B" . "$,4!{(B") |
("$,15x6-5p6-(B" . "$,4!{(B") |
374 |
|
|
375 |
;;; ("$,15y(B" . "$,4!}(B") |
("$,15y(B" . "$,4!}(B") |
376 |
;;; ("$,15y6-(B" . "$,4!|(B") |
("$,15y6-(B" . "$,4!|(B") |
377 |
;;; ("$,15y6#(B" . "$,4!~(B") |
("$,15y6#(B" . "$,4!~(B") |
378 |
;;; ("$,15y6-5p(B" . "$,4!(B") |
("$,15y6-5p(B" . "$,4!(B") |
379 |
;;; ("$,15y6-5n(B" . "$,4" (B") |
("$,15y6-5n(B" . "$,4" (B") |
380 |
;;; ("$,15y6-5o(B" . "$,4"!(B") |
("$,15y6-5o(B" . "$,4"!(B") |
381 |
;;; ;; NUKTAS |
;; NUKTAS |
382 |
;;; ("$,168(B" . "$,4 f"R"S(B") |
("$,168(B" . "$,4 f"R"S(B") |
383 |
;;; ("$,1686-(B" . "$,4 d(B") |
("$,1686-(B" . "$,4 d(B") |
384 |
;;; ("$,169(B" . "$,4 k")(B") |
("$,169(B" . "$,4 k")(B") |
385 |
;;; ("$,1696-(B" . "$,4 k(B") |
("$,1696-(B" . "$,4 k(B") |
386 |
;;; ("$,16:(B" . "$,4 n")(B") |
("$,16:(B" . "$,4 n")(B") |
387 |
;;; ("$,16:6-(B" . "$,4 n(B") |
("$,16:6-(B" . "$,4 n(B") |
388 |
;;; ("$,16;(B" . "$,4 w")(B") |
("$,16;(B" . "$,4 w")(B") |
389 |
;;; ("$,16;6-(B" . "$,4 w(B") |
("$,16;6-(B" . "$,4 w(B") |
390 |
;;; ("$,16<(B" . "$,4!#"W(B") |
("$,16<(B" . "$,4!#"W(B") |
391 |
;;; ("$,16=(B" . "$,4!'"X(B") |
("$,16=(B" . "$,4!'"X(B") |
392 |
;;; ("$,16>(B" . "$,4!b"[(B") |
("$,16>(B" . "$,4!b"[(B") |
393 |
;;; ("$,16>6-(B" . "$,4!>(B") |
("$,16>6-(B" . "$,4!>(B") |
394 |
;;; ("$,16?(B" . "$,4!j"#")(B") |
("$,16?(B" . "$,4!j"#")(B") |
395 |
;;; ;; misc modifiers. |
;; misc modifiers. |
396 |
;;; ("$,15A(B" . "\$,4"$(B") |
("$,15A(B" . "\$,4"$(B") |
397 |
;;; ("$,15B(B" . "\$,4"&(B") |
("$,15B(B" . "\$,4"&(B") |
398 |
;;; ("$,15C(B" . "$,4 F(B") |
("$,15C(B" . "$,4 F(B") |
399 |
;;; ("$,15|(B" . "$,4"#(B") |
("$,15|(B" . "$,4"#(B") |
400 |
;;; ("$,15}(B" . "$,4 E(B") |
("$,15}(B" . "$,4 E(B") |
401 |
;;; ("$,16-(B" . "$,4""(B") |
("$,16-(B" . "$,4""(B") |
402 |
;;; ("$,16-5p(B" . "$,4"%(B") ;; following "r" |
("$,16-5p(B" . "$,4"%(B") ;; following "r" |
403 |
;;; ;; ("$,160(B" . "$,4 D(B") |
;; ("$,160(B" . "$,4 D(B") |
404 |
;;; ;; ("$,16D(B" . "$,4 J(B") |
;; ("$,16D(B" . "$,4 J(B") |
405 |
;;; ;; ("$,16F(B" . "") |
;; ("$,16F(B" . "") |
406 |
;;; ;; ("$,16G(B" . "") |
;; ("$,16G(B" . "") |
407 |
;;; ;; ("$,16H(B" . "") |
;; ("$,16H(B" . "") |
408 |
;;; ;; ("$,16I(B" . "") |
;; ("$,16I(B" . "") |
409 |
;;; ;; ("$,16J(B" . "") |
;; ("$,16J(B" . "") |
410 |
;;; ;; ("$,16K(B" . "") |
;; ("$,16K(B" . "") |
411 |
;;; ;; ("$,16L(B" . "") |
;; ("$,16L(B" . "") |
412 |
;;; ;; ("$,16M(B" . "") |
;; ("$,16M(B" . "") |
413 |
;;; ;; ("$,16N(B" . "") |
;; ("$,16N(B" . "") |
414 |
;;; ;; ("$,16O(B" . "") |
;; ("$,16O(B" . "") |
415 |
;;; ) |
) |
416 |
;;; "Devanagari characters to glyphs conversion table. |
"Devanagari characters to glyphs conversion table. |
417 |
;;; Default value contains only the basic rules. You may add your own |
Default value contains only the basic rules. You may add your own |
418 |
;;; preferred rule from the sanskrit fonts." ) |
preferred rule from the sanskrit fonts." ) |
419 |
|
|
420 |
(defvar dev-char-glyph-hash |
(defvar dev-char-glyph-hash |
421 |
(let* ((hash (makehash 'equal))) |
(let* ((hash (makehash 'equal))) |
430 |
;; it is supposed that glyphs are ordered in |
;; it is supposed that glyphs are ordered in |
431 |
;; [consonant/nukta] - [matra/halant] - [preceding-r] - [anuswar]. |
;; [consonant/nukta] - [matra/halant] - [preceding-r] - [anuswar]. |
432 |
|
|
433 |
;;; (defvar dev-glyph-glyph |
(defvar dev-glyph-glyph |
434 |
;;; '(("\$,4"'(B\$,4"&(B" . "\$,4"((B") |
'(("\$,4"'(B\$,4"&(B" . "\$,4"((B") |
435 |
;;; ("\$,4"'(B\$,4"$(B" . "\$,4"((B") |
("\$,4"'(B\$,4"$(B" . "\$,4"((B") |
436 |
;;; ("$,4"*(B\$,4"&(B" . "$,4"+(B") |
("$,4"*(B\$,4"&(B" . "$,4"+(B") |
437 |
;;; ("$,4"*(B\$,4"'(B" . "$,4",(B") |
("$,4"*(B\$,4"'(B" . "$,4",(B") |
438 |
;;; ("$,4"*(B\$,4"'(B\$,4"&(B" . "$,4"-(B") |
("$,4"*(B\$,4"'(B\$,4"&(B" . "$,4"-(B") |
439 |
;;; ("$,4"2(B\$,4"&(B" . "$,4"3(B") |
("$,4"2(B\$,4"&(B" . "$,4"3(B") |
440 |
;;; ("$,4"2(B\$,4"'(B" . "$,4"4(B") |
("$,4"2(B\$,4"'(B" . "$,4"4(B") |
441 |
;;; ("$,4"2(B\$,4"'(B\$,4"&(B" . "$,4"5(B") |
("$,4"2(B\$,4"'(B\$,4"&(B" . "$,4"5(B") |
442 |
;;; ("$,4"#(B\$,4"6(B" . "$,4"7(B") |
("$,4"#(B\$,4"6(B" . "$,4"7(B") |
443 |
;;; ("$,4"%(B\$,4"6(B" . "$,4"8(B") |
("$,4"%(B\$,4"6(B" . "$,4"8(B") |
444 |
;;; ;;("$,4"6(B" . "$,4"9(B") |
;;("$,4"6(B" . "$,4"9(B") |
445 |
;;; ("$,4"#(B\$,4":(B" . "$,4";(B") |
("$,4"#(B\$,4":(B" . "$,4";(B") |
446 |
;;; ("$,4"%(B\$,4":(B" . "$,4"<(B") |
("$,4"%(B\$,4":(B" . "$,4"<(B") |
447 |
;;; ;;("$,4":(B" . "$,4"=(B") |
;;("$,4":(B" . "$,4"=(B") |
448 |
;;; ("\$,4"@(B\$,4"&(B" . "\$,4"A(B") |
("\$,4"@(B\$,4"&(B" . "\$,4"A(B") |
449 |
;;; ("\$,4"@(B\$,4"'(B" . "\$,4"B(B") |
("\$,4"@(B\$,4"'(B" . "\$,4"B(B") |
450 |
;;; ("\$,4"@(B\$,4"'(B\$,4"&(B" . "\$,4"C(B") |
("\$,4"@(B\$,4"'(B\$,4"&(B" . "\$,4"C(B") |
451 |
;;; ("\$,4"D(B\$,4"&(B" . "\$,4"E(B") |
("\$,4"D(B\$,4"&(B" . "\$,4"E(B") |
452 |
;;; ("\$,4"D(B\$,4"'(B" . "\$,4"F(B") |
("\$,4"D(B\$,4"'(B" . "\$,4"F(B") |
453 |
;;; ("\$,4"D(B\$,4"'(B\$,4"&(B" . "\$,4"G(B") |
("\$,4"D(B\$,4"'(B\$,4"&(B" . "\$,4"G(B") |
454 |
;;; ("\$,4"H(B\$,4"&(B" . "\$,4"I(B") |
("\$,4"H(B\$,4"&(B" . "\$,4"I(B") |
455 |
;;; ("\$,4"H(B\$,4"'(B" . "\$,4"J(B") |
("\$,4"H(B\$,4"'(B" . "\$,4"J(B") |
456 |
;;; ("\$,4"H(B\$,4"'(B\$,4"&(B" . "\$,4"K(B") |
("\$,4"H(B\$,4"'(B\$,4"&(B" . "\$,4"K(B") |
457 |
;;; ("\$,4"L(B\$,4"&(B" . "\$,4"M(B") |
("\$,4"L(B\$,4"&(B" . "\$,4"M(B") |
458 |
;;; ("\$,4"L(B\$,4"'(B" . "\$,4"N(B") |
("\$,4"L(B\$,4"'(B" . "\$,4"N(B") |
459 |
;;; ("\$,4"L(B\$,4"'(B\$,4"&(B" . "\$,4"O(B") |
("\$,4"L(B\$,4"'(B\$,4"&(B" . "\$,4"O(B") |
460 |
;;; )) |
)) |
461 |
(defvar dev-glyph-glyph-hash |
(defvar dev-glyph-glyph-hash |
462 |
(let* ((hash (makehash 'equal))) |
(let* ((hash (makehash 'equal))) |
463 |
(mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) |
(mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) |
468 |
|
|
469 |
|
|
470 |
;; yet another glyph-to-glyph conversions. |
;; yet another glyph-to-glyph conversions. |
471 |
;;; (defvar dev-glyph-glyph-2 |
(defvar dev-glyph-glyph-2 |
472 |
;;; '(("$,4"*(B" . "$,4".(B") |
'(("$,4"*(B" . "$,4".(B") |
473 |
;;; ("$,4"+(B" . "$,4"/(B") |
("$,4"+(B" . "$,4"/(B") |
474 |
;;; ("$,4",(B" . "$,4"0(B") |
("$,4",(B" . "$,4"0(B") |
475 |
;;; ("$,4"-(B" . "$,4"1(B"))) |
("$,4"-(B" . "$,4"1(B"))) |
476 |
(defvar dev-glyph-glyph-2-hash |
(defvar dev-glyph-glyph-2-hash |
477 |
(let* ((hash (makehash 'equal))) |
(let* ((hash (makehash 'equal))) |
478 |
(mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) |
(mapc (function (lambda (x) (puthash (car x) (cdr x) hash))) |
551 |
(devanagari-compose-syllable-region (point-min) (point-max)) |
(devanagari-compose-syllable-region (point-min) (point-max)) |
552 |
(buffer-string))) |
(buffer-string))) |
553 |
|
|
554 |
;;; (defun devanagari-compose-syllable-region (from to) |
(defun devanagari-compose-syllable-region (from to) |
555 |
;;; "Compose devanagari syllable in region FROM to TO." |
"Compose devanagari syllable in region FROM to TO." |
556 |
;;; (let ((glyph-str nil) (cons-num 0) glyph-str-list |
(let ((glyph-str nil) (cons-num 0) glyph-str-list |
557 |
;;; (last-halant nil) (preceding-r nil) (last-modifier nil) |
(last-halant nil) (preceding-r nil) (last-modifier nil) |
558 |
;;; (last-char (char-before to)) match-str |
(last-char (char-before to)) match-str |
559 |
;;; glyph-block split-pos) |
glyph-block split-pos) |
560 |
;;; (save-excursion |
(save-excursion |
561 |
;;; (save-restriction |
(save-restriction |
562 |
;;; ;;; *** char-to-glyph conversion *** |
;;; *** char-to-glyph conversion *** |
563 |
;;; ;; Special rule 1. -- Last halant must be preserved. |
;; Special rule 1. -- Last halant must be preserved. |
564 |
;;; (if (eq last-char ?$,16-(B) |
(if (eq last-char ?$,16-(B) |
565 |
;;; (progn |
(progn |
566 |
;;; (setq last-halant t) |
(setq last-halant t) |
567 |
;;; (narrow-to-region from (1- to))) |
(narrow-to-region from (1- to))) |
568 |
;;; (narrow-to-region from to) |
(narrow-to-region from to) |
569 |
;;; ;; note if the last char is modifier. |
;; note if the last char is modifier. |
570 |
;;; (if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B)) |
(if (or (eq last-char ?$,15A(B) (eq last-char ?$,15B(B)) |
571 |
;;; (setq last-modifier t))) |
(setq last-modifier t))) |
572 |
;;; (goto-char (point-min)) |
(goto-char (point-min)) |
573 |
;;; ;; Special rule 2. -- preceding "r halant" must be modifier. |
;; Special rule 2. -- preceding "r halant" must be modifier. |
574 |
;;; (when (looking-at "$,15p6-(B.") |
(when (looking-at "$,15p6-(B.") |
575 |
;;; (setq preceding-r t) |
(setq preceding-r t) |
576 |
;;; (goto-char (+ 2 (point)))) |
(goto-char (+ 2 (point)))) |
577 |
;;; ;; translate the rest characters into glyphs |
;; translate the rest characters into glyphs |
578 |
;;; (while (re-search-forward dev-char-glyph-regexp nil t) |
(while (re-search-forward dev-char-glyph-regexp nil t) |
579 |
;;; (setq match-str (match-string 0)) |
(setq match-str (match-string 0)) |
580 |
;;; (setq glyph-str |
(setq glyph-str |
581 |
;;; (concat glyph-str |
(concat glyph-str |
582 |
;;; (gethash match-str dev-char-glyph-hash))) |
(gethash match-str dev-char-glyph-hash))) |
583 |
;;; ;; count the number of consonant-glyhs. |
;; count the number of consonant-glyhs. |
584 |
;;; (if (string-match devanagari-consonant match-str) |
(if (string-match devanagari-consonant match-str) |
585 |
;;; (setq cons-num (1+ cons-num)))) |
(setq cons-num (1+ cons-num)))) |
586 |
;;; ;; preceding-r must be attached before the anuswar if exists. |
;; preceding-r must be attached before the anuswar if exists. |
587 |
;;; (if preceding-r |
(if preceding-r |
588 |
;;; (if last-modifier |
(if last-modifier |
589 |
;;; (setq glyph-str (concat (substring glyph-str 0 -1) |
(setq glyph-str (concat (substring glyph-str 0 -1) |
590 |
;;; "$,4"'(B" (substring glyph-str -1))) |
"$,4"'(B" (substring glyph-str -1))) |
591 |
;;; (setq glyph-str (concat glyph-str "$,4"'(B")))) |
(setq glyph-str (concat glyph-str "$,4"'(B")))) |
592 |
;;; (if last-halant (setq glyph-str (concat glyph-str "$,4""(B"))) |
(if last-halant (setq glyph-str (concat glyph-str "$,4""(B"))) |
593 |
;;; ;;; *** glyph-to-glyph conversion *** |
;;; *** glyph-to-glyph conversion *** |
594 |
;;; (when (string-match dev-glyph-glyph-regexp glyph-str) |
(when (string-match dev-glyph-glyph-regexp glyph-str) |
595 |
;;; (setq glyph-str |
(setq glyph-str |
596 |
;;; (replace-match (gethash (match-string 0 glyph-str) |
(replace-match (gethash (match-string 0 glyph-str) |
597 |
;;; dev-glyph-glyph-hash) |
dev-glyph-glyph-hash) |
598 |
;;; nil t glyph-str)) |
nil t glyph-str)) |
599 |
;;; (if (and (> cons-num 1) |
(if (and (> cons-num 1) |
600 |
;;; (string-match dev-glyph-glyph-2-regexp glyph-str)) |
(string-match dev-glyph-glyph-2-regexp glyph-str)) |
601 |
;;; (setq glyph-str |
(setq glyph-str |
602 |
;;; (replace-match (gethash (match-string 0 glyph-str) |
(replace-match (gethash (match-string 0 glyph-str) |
603 |
;;; dev-glyph-glyph-2-hash) |
dev-glyph-glyph-2-hash) |
604 |
;;; nil t glyph-str)))) |
nil t glyph-str)))) |
605 |
;;; ;;; *** glyph reordering *** |
;;; *** glyph reordering *** |
606 |
;;; (while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str)) |
(while (setq split-pos (string-match "$,4""(B\\|.$" glyph-str)) |
607 |
;;; (setq glyph-block (substring glyph-str 0 (1+ split-pos))) |
(setq glyph-block (substring glyph-str 0 (1+ split-pos))) |
608 |
;;; (setq glyph-str (substring glyph-str (1+ split-pos))) |
(setq glyph-str (substring glyph-str (1+ split-pos))) |
609 |
;;; (setq |
(setq |
610 |
;;; glyph-block |
glyph-block |
611 |
;;; (if (string-match dev-glyph-right-modifier-regexp glyph-block) |
(if (string-match dev-glyph-right-modifier-regexp glyph-block) |
612 |
;;; (sort (string-to-list glyph-block) |
(sort (string-to-list glyph-block) |
613 |
;;; (function (lambda (x y) |
(function (lambda (x y) |
614 |
;;; (< (get-char-code-property x 'composition-order) |
(< (get-char-code-property x 'composition-order) |
615 |
;;; (get-char-code-property y 'composition-order))))) |
(get-char-code-property y 'composition-order))))) |
616 |
;;; (sort (string-to-list glyph-block) |
(sort (string-to-list glyph-block) |
617 |
;;; (function (lambda (x y) |
(function (lambda (x y) |
618 |
;;; (let ((xo (get-char-code-property x 'composition-order)) |
(let ((xo (get-char-code-property x 'composition-order)) |
619 |
;;; (yo (get-char-code-property y 'composition-order))) |
(yo (get-char-code-property y 'composition-order))) |
620 |
;;; (if (= xo 2) nil (if (= yo 2) t (< xo yo))))))))) |
(if (= xo 2) nil (if (= yo 2) t (< xo yo))))))))) |
621 |
;;; (setq glyph-str-list (nconc glyph-str-list glyph-block))) |
(setq glyph-str-list (nconc glyph-str-list glyph-block))) |
622 |
;;; ;; concatenate and attach reference-points. |
;; concatenate and attach reference-points. |
623 |
;;; (setq glyph-str |
(setq glyph-str |
624 |
;;; (cdr |
(cdr |
625 |
;;; (apply |
(apply |
626 |
;;; 'nconc |
'nconc |
627 |
;;; (mapcar |
(mapcar |
628 |
;;; (function (lambda (x) |
(function (lambda (x) |
629 |
;;; (list |
(list |
630 |
;;; (or (get-char-code-property x 'reference-point) |
(or (get-char-code-property x 'reference-point) |
631 |
;;; '(5 . 3) ;; default reference point. |
'(5 . 3) ;; default reference point. |
632 |
;;; ) |
) |
633 |
;;; x))) |
x))) |
634 |
;;; glyph-str-list)))))) |
glyph-str-list)))))) |
635 |
;;; (compose-region from to glyph-str))) |
(compose-region from to glyph-str))) |
636 |
|
|
637 |
(provide 'devan-util) |
(provide 'devan-util) |