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