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