Include syllable final HJ to otf part.
[m17n/m17n-db.git] / FLT / TAML-OTF.flt
1 ;; TAML-OTF.flt -- Font Layout Table for Tamil OpenType fonts
2 ;; Copyright (C) 2004, 2006, 2007  AIST (H15PRO112)
3 ;; See the end for copying conditions.
4
5 (font layouter taml-otf nil
6       (font (nil nil unicode-bmp :otf=taml=akhn)))
7
8 ;;; <li> TAML-OTF.flt
9 ;;;
10 ;;; For Tamil OpenType fonts to draw the Tamil script.
11
12 (category
13  ;; C: consonant
14  ;; H: HALANT
15  ;; m: vowel sign (pre)
16  ;; u: vowel sign (above)
17  ;; b: vowel sign (below)
18  ;; p: vowel sign (post)
19  ;; X: generic
20  (0x0B80 0x0BFF ?X)                     ; generic
21  (0x0B95 0x0BB9 ?C)                     ; LETTER KA .. HA
22  (0x0BBE 0x0BBF ?p)                     ; VOWEL SIGN AA .. I
23  (0x0BC0        ?u)                     ; VOWEL SIGN II
24  (0x0BC1 0x0BC2 ?b)                     ; VOWEL SIGN U .. UU
25  (0x0BC6 0x0BC8 ?m)                     ; VOWEL SIGN E .. AI
26  (0x0BCD        ?H)                     ; SIGN VIRAMA
27  (0x0BD7        ?p)                     ; AU LENGTH MARK
28  (0x0964 0x0965 ?X)                     ; DANDA .. DOUBLE DANDA
29  (0x200C        ?N)                     ; ZWNJ
30  )
31
32 ;; Preprocessing.
33 (generator
34  (0
35   (cond
36    ;; Decompose two-part vowel signs.
37    ((0x0BCA)
38     0x0BC6 0x0BBE)
39    ((0x0BCB)
40     0x0BC7 0x0BBE)
41    ((0x0BCC)
42     0x0BC6 0x0BD7)
43    ;; A variation of AU.
44    ((0x0B92 0x0BD7)
45     0x0B94)
46    ;; TAMu and TSCu fonts generate the SRI ligature with 'akhn'.
47    ;; (lohit and latha do it with 'half' + 'abvs'.)
48    ((0x0BB8 0x0BCD 0x0BB0 0x0BC0)
49     otf:taml=akhn+)
50    ("." =))
51   *))
52
53 ;; Syllable identification.
54 (generator
55  (0
56   (cond
57    ;; A syllable with vowel signs.
58    ("((CH)*C)(mp?|b|u|p)"
59     < | (1 otf:taml=akhn,half+) (3 = *) | >)
60
61    ;; No vowel signs.
62    ("((CH)*C)(HN?)?"
63     < | (1 otf:taml=akhn,half+) (3 =) | >)
64
65    ("." =))
66   *))
67
68 ;; Move Matra before the base consonant.
69 (generator
70  (0
71   (cond
72    (" ([^ m]*)([^ m])(m)(p)? "
73     | (1 = *) (3 =) (2 =) (4 =) |)
74    ("." =))
75   *))
76
77 ;; Apply other OTF features.
78 (generator
79  (0
80   (cond
81    (" ([^ ]+) "
82     (1 otf:taml=pres,abvs,blws,psts,haln+abvm,blwm,dist))
83    ("."
84     [ = ]))
85   *))
86
87 ;; Copyright (C) 2004, 2006, 2007
88 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
89 ;;   Registration Number H15PRO112
90
91 ;; This file is part of the m17n database; a sub-part of the m17n
92 ;; library.
93
94 ;; The m17n library is free software; you can redistribute it and/or
95 ;; modify it under the terms of the GNU Lesser General Public License
96 ;; as published by the Free Software Foundation; either version 2.1 of
97 ;; the License, or (at your option) any later version.
98
99 ;; The m17n library is distributed in the hope that it will be useful,
100 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
101 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
102 ;; Lesser General Public License for more details.
103
104 ;; You should have received a copy of the GNU Lesser General Public
105 ;; License along with the m17n library; if not, write to the Free
106 ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
107 ;; Boston, MA 02110-1301, USA.
108
109 ;; Local Variables:
110 ;; mode: emacs-lisp
111 ;; End: