Add input-method and descrition elements.
[m17n/m17n-db.git] / DEVA-CDAC.flt
1 ;; DEVA-CDAC.flt -- Font Layout Table for Devanagari (C-DAC font)
2 ;; Copyright (C) 2003, 2004
3 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
4 ;;   Registration Number H15PRO112
5
6 ;; This file is part of the m17n database; a sub-part of the m17n
7 ;; library.
8
9 ;; The m17n library is free software; you can redistribute it and/or
10 ;; modify it under the terms of the GNU Lesser General Public License
11 ;; as published by the Free Software Foundation; either version 2.1 of
12 ;; the License, or (at your option) any later version.
13
14 ;; The m17n library is distributed in the hope that it will be useful,
15 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17 ;; Lesser General Public License for more details.
18
19 ;; You should have received a copy of the GNU Lesser General Public
20 ;; License along with the m17n library; if not, write to the Free
21 ;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
22 ;; 02111-1307, USA.
23
24 ;;; <li> DEVA-CDAC.flt
25 ;;;
26 ;;; For the font DVYG0ntt.ttf (developed by C-DAC, encoding is ISFOC)
27 ;;; to draw Devanagari script.  The font is available at:
28 ;;; <ul>
29 ;;; <li>        infopage: http://www.iiit.net/ltrc/iscii/FAQ.htm#SEC2.1
30 ;;; <li> download: http://www.iiit.net/ltrc/iscii/iscii_plugin_linux.tar.gz
31 ;;; </ul>
32
33 (category
34  ;; A: ANUSVARA or CANDRABINDU
35  ;; C: CONSONANT (except for R)
36  ;; R: LETTER RA
37  ;; V: VOWEL INDEPENDENT
38  ;; N: NUKTA
39  ;; H: HALANT
40  ;; M: MATRA (VOWEL DEPENDENT, except for I)
41  ;; I: VOWEL SIGN I
42  ;; S: STRESS or TONE
43  ;; E: ELSE
44  (0x0900                ?E)
45  (0x0901 0x0902         ?A)             ; CANDRABINDU and ANUSVARA
46  (0x0903                ?E)             ; SIGN VISARGA
47  (0x0905 0x0914         ?V)             ; A .. AU
48  (0x0915 0x0939         ?C)             ; KA .. HA
49  (0x0930                ?R)             ; RA
50  (0x093C                ?N)             ; NUKTA
51  (0x093D                ?E)             ; AVAGRAHA
52  (0x093E 0x094C         ?M)             ; VOWEL SIGN AA .. AU
53  (0x093F                ?I)             ; VOWEL SIGN I
54  (0x094D                ?H)             ; SIGN VIRAMA (HARANT)
55  (0x0950                ?E)             ; OM
56  (0x0951 0x954          ?S)             ; UDATTA .. ACUTE
57  (0x0958 0x095E         ?C)             ; LETTER QA .. YYA
58  (0x0960 0x0961         ?V)             ; LETTER VOCALIC RR and LL
59  (0x0962 0x0963         ?M)             ; VOWEL SIGN VOCALIC L and LL
60  (0x0964 0x0970         ?E)             ; DANDA .. ABBREVIATION SIGN
61  )
62
63 (generator
64  (0
65   (cond
66    ("VA?S?"
67     < | vowel * | >)
68    ("([RC]H)*[RC](H|[IM]?A?S?)?"
69     < |
70     (cond
71      ("RH.*" ;; with preceding RA HARANT
72       (cond
73        ("(RH)([^I]*)(I)(A?S?)"          ; with I
74         (3 vowel-sign-I)
75         (2 consonant *)
76         (1 preceding-r)
77         (4 post-modifier))
78        ("(RH)([^M]*)(M)(A?S?)"          ; with M
79         (2 consonant *)
80         (3 matra)
81         (1 preceding-r)
82         (4 post-modifier))
83        ("(RH)(.*)(H)$"                  ; with last HARANT
84         (2 consonant *)
85         (1 preceding-r)
86         (3 harant))
87        ("(RH)([^AS]*)(.*)"              ; otherwise
88         (2 consonant *)
89         (1 preceding-r)
90         (3 post-modifier))))
91      ;; without preceding RA HARANT
92      ("([^I]*)(I)(A?S?)"                ; with I
93       (2 vowel-sign-I)
94       (1 consonant *)
95       (3 post-modifier))
96      ("([^M]*)(M)(A?S?)"                ; with M
97       (1 consonant *)
98       (2 matra)
99       (3 post-modifier))
100      ("(.*)(H)$"                        ; with last HARANT
101       (1 consonant *)
102       (2 harant))
103      ("([^AS]*)(.*)"                    ; otherwise
104       (1 consonant *)
105       (3 post-modifier))
106      (".*"
107       consonant *))
108     | > )
109    ("."
110     independent))
111   *)
112
113  (vowel
114   (cond
115    ((0x0905)                            0x2B)
116    ((0x0906)                            0x2B 0xC9)
117    ((0x0907)                            0x3C)
118    ((0x0908 0x0901)                     0x3C 0xC7 0xC6)
119    ((0x0908)                            0x3C 0xC7)
120    ((0x0909)                            0x3D)
121    ((0x090A)                            0x3E 0xF0)
122    ((0x090B)                            0x40 0xF1)
123    ((0x090D 0x0901)                     0x42 0xC4)
124    ((0x090D 0x0902)                     0x42 0xC4)
125    ((0x090D)                            0x42 0xEC)
126    ((0x090E 0x0901)                     0x42 0xE0 0xC6)
127    ((0x090E)                            0x42 0xE0)
128    ((0x090F)                            0x42)
129    ((0x0910 0x0901)                     0x42 0xE4 0xC6)
130    ((0x0910)                            0x42 0xE4)
131    ((0x0911 0x0901)                     0x2B 0xC9 0xC4)
132    ((0x0911 0x0902)                     0x2B 0xC9 0xC4)
133    ((0x0911)                            0x2B 0xC9 0xEC)
134    ((0x0912 0x0901)                     0x2B 0xC9 0xE0 0xC6)
135    ((0x0912)                            0x2B 0xC9 0xE0)
136    ((0x0913 0x0901)                     0x2B 0xC9 0xE4 0xC6)
137    ((0x0913)                            0x2B 0xC9 0xE4)
138    ((0x0914 0x0901)                     0x2B 0xC9 0xE8 0xC6)
139    ((0x0914)                            0x2B 0xC9 0xE8)
140    ((0x0960)                            0x41 0xF1)))
141
142  (vowel-sign-I
143   ((0x093F)                             0xCA))
144
145  (preceding-r
146   ((0x0930 0x094D)                      0xC7))
147
148  (post-modifier
149   (cond
150    ((0x0901)                            0xC4)
151    ((0x0902)                            0xC6)
152    ((0x0951)                            0x27)
153    ((0x0952)                            bc.tc 0x2D)))
154
155  (harant
156   ((0x094D)                             0xC2))
157
158  (consonant
159   (cond
160    ((0x0915 0x094D 0x0924)              0x48 0xF2)
161    ((0x0915 0x094D 0x0930)              0x47 0xF2)
162    ((0x0915 0x094D 0x0937 0x094D)       0x49)
163    ((0x0915 0x094D 0x0937)              0x49 0xC9)
164    ((0x0915 0x094D)                     0x43)
165    ((0x0915)                            0x45 0xF2)
166    ((0x0916 0x094D 0x0930 0x094D)       0x4C)
167    ((0x0916 0x094D 0x0930)              0x4C 0xC9)
168    ((0x0916 0x094D)                     0x4A)
169    ((0x0916)                            0x4A 0xC9)
170    ((0x0917 0x094D 0x0930 0x094D)       0x4F)
171    ((0x0917 0x094D 0x0930)              0x4F 0xC9)
172    ((0x0917 0x094D)                     0x4D)
173    ((0x0917)                            0x4D 0xC9)
174    ((0x0918 0x094D 0x0930 0x094D)       0x51)
175    ((0x0918 0x094D 0x0930)              0x51 0xC9)
176    ((0x0918 0x094D)                     0x50)
177    ((0x0918)                            0x50 0xC9)
178    ((0x0919)                            0x52 0xF3)
179    ((0x091A 0x094D 0x0930 0x094D)       0x54)
180    ((0x091A 0x094D 0x0930)              0x54 0xC9)
181    ((0x091A 0x094D)                     0x53)
182    ((0x091A)                            0x53 0xC9)
183    ((0x091B)                            0x55 0xF4)
184    ((0x091C 0x094D 0x091E 0x094D)       0x59)
185    ((0x091C 0x094D 0x091E)              0x59 0xC9)
186    ((0x091C 0x094D 0x0930 0x094D)       0x58)
187    ((0x091C 0x094D 0x0930)              0x58 0xC9)
188    ((0x091C 0x094D)                     0x56)
189    ((0x091C)                            0x56 0xC9)
190    ((0x091D 0x094D 0x0930 0x094D)       0x5B)
191    ((0x091D 0x094D 0x0930)              0x5B 0xC9)
192    ((0x091D 0x094D)                     0x5A)
193    ((0x091D)                            0x5A 0xC9)
194    ((0x091E 0x094D)                     0x5C)
195    ((0x091E)                            0x5C 0xC9)
196    ((0x091F 0x094D 0x091F)              0x5E 0xF5)
197    ((0x091F 0x094D 0x0920)              0x5F 0xF5)
198    ((0x091F)                            0x5D 0xF5)
199    ((0x0920 0x094D 0x0920)              0x61 0xF6)
200    ((0x0920)                            0x60 0xF6)
201    ((0x0921 0x094D 0x0921)              0x64 0xF7)
202    ((0x0921 0x094D 0x0922)              0x65 0xF7)
203    ((0x0921)                            0x62 0xF7)
204    ((0x0922)                            0x66 0xF8)
205    ((0x0923 0x094D)                     0x68)
206    ((0x0923)                            0x68 0xC9)
207    ((0x0924 0x094D 0x0924 0x094D)       0x6B)
208    ((0x0924 0x094D 0x0924)              0x6B 0xC9)
209    ((0x0924 0x094D 0x0930 0x094D)       0x6A)
210    ((0x0924 0x094D 0x0930)              0x6A 0xC9)
211    ((0x0924 0x094D)                     0x69)
212    ((0x0924)                            0x69 0xC9)
213    ((0x0925 0x094D 0x0930 0x094D)       0x6D)
214    ((0x0925 0x094D 0x0930)              0x6D 0xC9)
215    ((0x0925 0x094D)                     0x6C)
216    ((0x0925)                            0x6C 0xC9)
217    ((0x0926 0x0943)                     0x6F 0xF9)
218    ((0x0926 0x094D 0x0926)              0x71 0xF9)
219    ((0x0926 0x094D 0x0927)              0x72 0xF9)
220    ((0x0926 0x094D 0x092E)              0x73)
221    ((0x0926 0x094D 0x092F)              0x74)
222    ((0x0926 0x094D 0x0930)              0x70 0xF9)
223    ((0x0926 0x094D 0x0935)              0x75 0xF9)
224    ((0x0926)                            0x6E 0xF9)
225    ((0x0927 0x094D 0x0930 0x094D)       0x77)
226    ((0x0927 0x094D 0x0930)              0x77 0xC9)
227    ((0x0927 0x094D)                     0x76)
228    ((0x0927)                            0x76 0xC9)
229    ((0x0928 0x094D 0x0928 0x094D)       0x7A)
230    ((0x0928 0x094D 0x0928)              0x7A 0xC9)
231    ((0x0928 0x094D 0x0930 0x094D)       0x79 0xC9)
232    ((0x0928 0x094D 0x0930)              0x79 0xC9)
233    ((0x0928 0x094D)                     0x78)
234    ((0x0928)                            0x78 0xC9)
235    ((0x0929)                            0x78 0xC3 0xC9)
236    ((0x092A 0x094D 0x0930 0x094D)       0x7C)
237    ((0x092A 0x094D 0x0930)              0x7C 0xC9)
238    ((0x092A 0x094D)                     0x7B)
239    ((0x092A)                            0x7B 0xC9)
240    ((0x092B 0x094D 0x0930)              0xA3 0xFB)
241    ((0x092B 0x094D)                     0x7D)
242    ((0x092B)                            0xA1 0xFB)
243    ((0x092C 0x094D 0x0930 0x094D)       0xA5)
244    ((0x092C 0x094D 0x0930)              0xA5 0xC9)
245    ((0x092C 0x094D)                     0xA4)
246    ((0x092C)                            0xA4 0xC9)
247    ((0x092D 0x094D 0x0930 0x094D)       0xA7)
248    ((0x092D 0x094D 0x0930)              0xA7 0xC9)
249    ((0x092D 0x094D)                     0xA6)
250    ((0x092D)                            0xA6 0xC9)
251    ((0x092E 0x094D 0x0930 0x094D)       0xA9)
252    ((0x092E 0x094D 0x0930)              0xA9 0xC9)
253    ((0x092E 0x094D)                     0xA8)
254    ((0x092E)                            0xA8 0xC9)
255    ((0x092F 0x094D 0x0930 0x094D)       0xAB)
256    ((0x092F 0x094D 0x0930)              0xAB 0xC9)
257    ((0x092F 0x094D)                     0xAA)
258    ((0x092F)                            0xAA 0xC9)
259    ((0x0930 0x0941)                     0xAF 0xFB)
260    ((0x0930 0x0942)                     0xB0 0xFC)
261    ((0x0930)                            0xAE 0xF7)
262    ((0x0931 0x094D)                     0xAD)
263    ((0x0931)                            0xAE 0xC3 0xF7)
264    ((0x0932 0x094D)                     0xB1)
265    ((0x0932)                            0xB1 0xC9)
266    ((0x0933 0x094D)                     0xB2)
267    ((0x0933)                            0xB3)
268    ((0x0934 0x094D)                     0xB2 0xC3)
269    ((0x0934)                            0xB3 0xC3)
270    ((0x0935 0x094D 0x0930 0x094D)       0xB5)
271    ((0x0935 0x094D 0x0930)              0xB5 0xC9)
272    ((0x0935 0x094D)                     0xB4)
273    ((0x0935)                            0xB4 0xC9)
274    ((0x0936 0x094D 0x0930 0x094D)       0xB8)
275    ((0x0936 0x094D 0x0930)              0xB8 0xC9)
276    ((0x0936 0x094D 0x0935 0x094D)       0xB7)
277    ((0x0936 0x094D 0x0935)              0xB7 0xC9)
278    ((0x0936 0x094D)                     0xB6)
279    ((0x0936)                            0xB6 0xC9)
280    ((0x0937 0x094D)                     0xB9)
281    ((0x0937)                            0xB9 0xC9)
282    ((0x0938 0x094D 0x0930 0x094D)       0xBB)
283    ((0x0938 0x094D 0x0930)              0xBB 0xC9)
284    ((0x0938 0x094D)                     0xBA)
285    ((0x0938)                            0xBA 0xC9)
286    ((0x0939 0x0943)                     0xBE)
287    ((0x0939 0x094D 0x092E)              0xC0)
288    ((0x0939 0x094D 0x092F)              0xC1)
289    ((0x0939 0x094D 0x0930)              0xBF)
290    ((0x0939 0x094D)                     0xBC)
291    ((0x0939)                            0xBD)
292    ((0x094D 0x092F)                     0xAC)
293    ((0x094D 0x0930)                     0xC5)
294    ((0x0958 0x094D)                     0x44)
295    ((0x0958)                            0x46 0xF2 0xF3)
296    ((0x0959 0x094D)                     0x4B)
297    ((0x0959)                            0x4B 0xC9)
298    ((0x095A 0x094D)                     0x4E)
299    ((0x095A)                            0x4E 0xC9)
300    ((0x095B 0x094D)                     0x57)
301    ((0x095B)                            0x57 0xC9)
302    ((0x095C)                            0x63 0xF7)
303    ((0x095D)                            0x67 0xF8)
304    ((0x095E 0x094D)                     0x7E)
305    ((0x095E)                            0xA2 0xFB)
306    ((0x095F)                            0xAA 0xC3 0xC9)
307    ((0x094D)                            0xC2)))
308
309  (matra
310   (cond
311    ((0x093E)                            0xC9)
312    ((0x093F 0x0901)                     0xCA 0xC6)
313    ((0x093F)                            0xCA)
314    ((0x0940 0x0901)                     0xD2 0xC6)
315    ((0x0940)                            0xD2)
316    ((0x0941)                            0xD6)
317    ((0x0942)                            0xDA)
318    ((0x0943)                            0xDE)
319    ((0x0944)                            0xDF)
320    ((0x0945)                            0xEC)
321    ((0x0946 0x0901)                     0xE0 0xC6)
322    ((0x0946)                            0xE0)
323    ((0x0947 0x0901)                     0xE4 0xC6)
324    ((0x0947)                            0xE4)
325    ((0x0948 0x0901)                     0xE8 0xC6)
326    ((0x0948)                            0xE8)
327    ((0x0949 0x0901)                     0xC9 0xC4)
328    ((0x0949 0x0902)                     0xC9 0xC4)
329    ((0x0949)                            0xC9 0xEC)
330    ((0x094A 0x0901)                     0xC9 0xE0 0xC6)
331    ((0x094A)                            0xC9 0xE0)
332    ((0x094B 0x0901)                     0xC9 0xE4 0xC6)
333    ((0x094B)                            0xC9 0xE4)
334    ((0x094C 0x0901)                     0xC9 0xE8 0xC6)
335    ((0x094C)                            0xC9 0xE8)))
336
337  (independent
338   (cond
339    ((0x0900)                            0x23 0xC7) ; fake!!
340    ((0x0903)                            0x26)
341    ((0x093C)                            0xC3)
342    ((0x093D)                            0x25)
343    ((0x0950)                            0x24) ;new
344    ((0x0951)                            0x27) ;new
345    ((0x0964)                            0x2A)
346    ((0x0965)                            0x2A 0x2A)
347    ((0x0966)                            0x30)
348    ((0x0967)                            0x31)
349    ((0x0968)                            0x32)
350    ((0x0969)                            0x33)
351    ((0x096A)                            0x34)
352    ((0x096B)                            0x35)
353    ((0x096C)                            0x36)
354    ((0x096D)                            0x37)
355    ((0x096E)                            0x38)
356    ((0x096F)                            0x39)
357    ((0x094D)                            0x23 Bc>10Bl 0xC2)
358    ((0x093F)                            0xCA Bc>10Bl 0x23)
359    ((0x0940)                            0x23 0xD2)
360    )))
361
362 (category
363  ;; C: CONSONANTS
364  ;; I: VOWEL SIGN I
365  ;; R: RIGHT MODIFIER
366  ;; S: SPACING
367  ;; E: ELSE
368  ;;
369  (0x00 0xFF     ?E)
370  (0x3C 0xC1     ?C)
371  (0xC9          ?R)
372  (0xCA 0xD1     ?I)
373  (0xD2 0xD5     ?R)
374  (0xF0 0xFE     ?S))
375
376 (generator
377  (0
378   (cond
379    (" ([^ ]*) "
380     (1
381      (cond
382       ("(I[^C]*)(CC[^R]*)(R.*)"
383        (1 rule-i-wide = *)
384        (2 rule-else = *))
385       ("(I[^C]*)(CC[^S]*)(S)(.*)"
386        (1 rule-i-wide = *)
387        (2 = *)
388        (4 rule-else = *)
389        (3 = *))
390       ("([^R]*)(R).*"
391        (0 rule-else = *))
392       ("([^S]*)(S)(.*)"
393        (1 rule-else = *)
394        (3 rule-else = *)
395        (2 = *))
396       (".*" = *))))
397    ("[^ ]*"
398     = *))
399   *)
400
401  (rule-i-wide
402   (cond
403    ((0xCA 0xC6) 0xCF)
404    ((0xCA 0xC7 0xC6)    0xD1)
405    ((0xCA 0xC7) 0xD0)
406    ((0xCA)      0xCE)))
407
408  (rule-else
409   (cond
410    ((0xC3 0xD6) 0xD7)
411    ((0xC3 0xDA) 0xDB)
412    ((0xC5 0xD6) 0xD8)
413    ((0xC5 0xDA) 0xDC)
414    ((0xC7 0xC4) 0xC8)
415    ((0xC7 0xC6) 0xC8)
416    ((0xCA 0xC6) 0xCB)
417    ((0xCA 0xC7 0xC6)    0xCD)
418    ((0xCA 0xC7) 0xCC)
419    ((0xD2 0xC6) 0xD3)
420    ((0xD2 0xC7 0xC6)    0xD5)
421    ((0xD2 0xC7) 0xD4)
422    ((0xE0 0xC6) 0xE1)
423    ((0xE0 0xC7 0xC6)    0xE3)
424    ((0xE0 0xC7) 0xE2)
425    ((0xE4 0xC6) 0xE5)
426    ((0xE4 0xC7 0xC6)    0xE7)
427    ((0xE4 0xC7) 0xE6)
428    ((0xE8 0xC6) 0xE9)
429    ((0xE8 0xC7 0xC6)    0xEB)
430    ((0xE8 0xC7) 0xEA)
431    ((0xEC 0xC6) 0xED)
432    ((0xEC 0xC7 0xC6)    0xEF)
433    ((0xEC 0xC7) 0xEE))))
434
435 ;; Local Variables:
436 ;; mode: lisp
437 ;; End: