*** empty log message ***
[m17n/m17n-db.git] / FLT / MLYM-RACHANA.flt
1 ;; MLYM-RACHANA.flt -- Font Layout Table for Malayalam Rachana font
2 ;; Copyright (C) 2005, 2007  AIST (H15PRO112)
3 ;; See the end for copying conditions.
4
5 (font layouter mlym-rachana nil
6       (font (nil rachana unicode-bmp)))
7
8 ;;; <li> MLYM-RACHANA.flt
9 ;;;
10 ;;; For the Rachana Malayalam fonts to draw the traditional Malayalam
11 ;;; script.  This fonts handles virtually all ligatures with the AKHN
12 ;;; feature without character reordering.
13
14 ;; The first stage is to extract a syllable and re-order characters.
15 (category
16  ;; C: consonant
17  ;; H: HALANT
18  ;; m: MATRA (Mpre)
19  ;; p: MATRA (Mpost)
20  ;; t: MATRA (two-part: Mpre+Mpost)
21  ;; A: vowel modifier (post) (ANUSVARA and VISARGA)
22  ;; V: independent vowel
23  ;; E: else (all other independnt characters)
24  (0x0D00 0x0D7F ?E)                     ; else
25  (0x0D02 0x0D03 ?A)                     ; ANUSVARA & VISARGA
26  (0x0D05 0x0D14 ?V)                     ; independent vowel
27  (0x0D15 0x0D39 ?C)                     ; consonant
28  (0x0D3E 0x0D43 ?p)                     ; dependent vowel (Mpost)
29  (0x0D46 0x0D48 ?m)                     ; dependent vowel (Mpre)
30  (0x0D4A 0x0D4C ?t)                     ; dependent vowel (two-part)
31  (0x0D4D        ?H)                     ; VIRAMA (HALANT)
32  (0x0D57        ?p)                     ; dependent vowel (Mpost)
33  (0x0D60        ?V)                     ; VOCALIC RR
34  (0x0D61        ?V)                     ; VOCALIC LL
35  (0x0D7F        ?x)                     ; Internal use
36  (0x200C        ?N)                     ; ZERO WIDTH NON-JOINER
37  (0x200D        ?J)                     ; ZERO WIDTH JOINER
38  )
39
40 ;; Step 0.  Syllable identification.
41 (generator
42  (0
43   (cond
44    ;; Halant + ZWNJ -- forced explicit halant.
45    ("((CH)*C)HN"
46     < | (1 otf:mlym=akhn,psts,haln) 0x0D4D | >)
47
48    ;; Halant + ZWJ -- forced cillaksaram.
49    ("(CH)*(CH)J"
50     < | (1 otf:mlym=akhn,psts,haln) (2 otf:mlym=haln) | >)
51
52    ;; Pre-consonant vowel is temporarily moved to the leftmost
53    ;; position to permit consonant ligature.
54    ("((CH)*C)(m)(A?)"
55     < | (3 =) (1 otf:mlym=akhn,psts,haln) 0x0D7F (4 =) | >)
56
57    ;; Two-part vowel sign.
58    ("((CH)*C)(t)(A?)"
59     < | (3 pre) (1 otf:mlym=akhn,psts,haln) 0x0D7F (3 post) (4 =) | >)
60
61    ;; Post-consonant vowel sign and/or vowel modifier.
62    ("((CH)*C(pA?|A))"
63     < | (1 otf:mlym=akhn,psts,haln) | >)
64
65    ;; No vowel sign.
66    ("((CH)*C(H?))"
67     < | (1 otf:mlym=akhn,psts,haln) | >)
68
69    ;; A syllable starting with an independent vowel.
70    ("(VA?)"
71     < | (1 = *) | >)
72
73    ;; Other dedependent character.
74    ("[Apmt]" [ = ])
75
76    ;; Other independent character.
77    ("." =))
78   *)
79
80  ;; Former part of two-part vowel sign.
81  (pre
82   (cond
83    ((0x0D4A) 0x0D46)
84    ((0x0D4B) 0x0D47)
85    ((0x0D4C) 0x0D46)))
86
87  ;; Latter part of two-part vowel sign.
88  (post
89   (cond
90    ((0x0D4A) 0x0D3E)
91    ((0x0D4B) 0x0D3E)
92    ((0x0D4C) 0x0D57))))
93
94 ;; Step 1.  Move Mpre to the left of base consonant(-cluster).
95 (generator
96  (0
97   (cond
98    (" (m)([^x]*)([^x])x([^ ]*) "
99     (2 = *) (1 =) (3 =) (4 = *))
100    ("."
101     =))
102   *))
103
104 ;; Step 2. Finalise.
105 (generator
106  (0
107   (cond
108    (" ([^ ]*) " (1 otf:mlym=+))
109    ("." =))
110   *))
111
112 ;; Copyright (C) 2005, 2007
113 ;;   National Institute of Advanced Industrial Science and Technology (AIST)
114 ;;   Registration Number H15PRO112
115
116 ;; This file is part of the m17n database; a sub-part of the m17n
117 ;; library.
118
119 ;; The m17n library is free software; you can redistribute it and/or
120 ;; modify it under the terms of the GNU Lesser General Public License
121 ;; as published by the Free Software Foundation; either version 2.1 of
122 ;; the License, or (at your option) any later version.
123
124 ;; The m17n library is distributed in the hope that it will be useful,
125 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
126 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
127 ;; Lesser General Public License for more details.
128
129 ;; You should have received a copy of the GNU Lesser General Public
130 ;; License along with the m17n library; if not, write to the Free
131 ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
132 ;; Boston, MA 02110-1301, USA.
133
134 ;; Local Variables:
135 ;; mode: emacs-lisp
136 ;; End: