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