Big change for supporting backspace well.
[m17n/m17n-db.git] / SYRC-OTF.flt
1 ;; SYRC-OTF.flt -- Font Layout Table for Syriac OpenType font
2 ;; Copyright (C) 2004
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., 59 Temple Place, Suite 330, Boston, MA
22 ;; 02111-1307, USA.
23
24 ;;; <li> SYRC-OTF.flt
25 ;;;
26 ;;; For Syriac OpenType fonts to draw the Syriac script.
27
28
29 ;; Step 1: Initial, medial, or final.
30
31 (category
32  ;; D: Dual-joining
33  ;; R: Right-joining
34  ;; U: Non-joining
35  ;; T: Transparent
36  ;; A: ALAPH
37  ;; r: DALATH, RISH, DOTLESS DALATH RISH
38
39  (0x0700 0x071F ?U)
40  (0x0710        ?A)
41  (0x0711        ?T)
42  (0x0712 0x072E ?D)
43  (0x0715 0x0716 ?r)
44  (0x0717 0x0719 ?R)
45  (0x071E        ?R)
46  (0x0728        ?R)
47  (0x072A        ?r)
48  (0x072C        ?R)
49  (0x072F        ?R)
50  (0x0730 0x074A ?T)
51  (0x074D        ?R)
52  (0x074E 0x074F ?D)
53
54  (0x0303        ?T)
55  (0x0330        ?T)
56  (0x0304        ?T)
57  (0x0331        ?T)
58  (0x0307        ?T)
59  (0x0323        ?T)
60  (0x0308        ?T)
61  (0x030A        ?T)
62  (0x0325        ?T)
63  (0x0324        ?T)
64  (0x032D        ?T)
65  (0x032E        ?T)
66
67  (0x064B 0x0655 ?T)
68  (0x0670        ?T)
69
70  (0x200C        ?U)
71  (0x200D        ?D)
72  )
73
74 (generator
75  (0
76   (cond
77    ("(r)(T*)(.*)"
78     (1 otf:syrc=isol)
79     (2 = *)
80     (3 dalath-rish))
81
82    ("(D)(T*)([DRAr].*)"
83     (1 otf:syrc=init)
84     (2 = *)
85     (3 join))
86
87    ("(T+)(.*)"
88     (1 = *)
89     (2 disjoin))
90
91    ("(.)(T*)(.*)"
92     (1 otf:syrc=isol)
93     (2 = *)
94     (3 disjoin))))
95
96  (join
97   (cond
98    ("(r)(T*)(.*)"
99     (1 otf:syrc=fina)
100     (2 = *)
101     (3 dalath-rish))
102
103    ("(D)(T*)([DRrA].*)"
104     (1 otf:syrc=medi)
105     (2 = *)
106     (3 join))
107
108    ("(.)(T*)(.*)"
109     (1 otf:syrc=fina)
110     (2 = *)
111     (3 disjoin))))
112
113  (disjoin
114   (cond
115    ("(D)(T*)([DRAr].*)"
116     (1 otf:syrc=init)
117     (2 = *)
118     (3 join))
119
120    ("(r)(T*)(.*)"
121     (1 otf:syrc=isol)
122     (2 = *)
123     (3 dalath-rish))
124
125    ("(A)(T*)([DRAr].*)"
126     (1 otf:syrc=med2)
127     (2 = *)
128     (3 disjoin))
129
130    ("(A)(T*)(.*)"
131     (1 otf:syrc=fin2)
132     (2 = *)
133     (3 disjoin))
134
135    ("(.)(T*)(.*)"
136     (1 otf:syrc=isol)
137     (2 = *)
138     (3 disjoin))))
139
140  (dalath-rish
141   (cond
142    ("(D)(T*)([DRAr].*)"
143     (1 otf:syrc=init)
144     (2 = *)
145     (3 join))
146
147    ("(r)(T*)(.*)"
148     (1 otf:syrc=isol)
149     (2 = *)
150     (3 dalath-rish))
151
152    ("(A)(T*)([DRAr].*)"
153     (1 otf:syrc=med2)
154     (2 = *)
155     (3 disjoin))
156
157    ("(A)(T*)(.*)"
158     (1 otf:syrc=fin3)
159     (2 = *)
160     (3 disjoin))
161
162    ("(.)(T*)(.*)"
163     (1 otf:syrc=isol)
164     (2 = *)
165     (3 disjoin)))))
166
167 ;; Step 2: Other GSUB features (ligatures, etc.)
168
169 (generator
170  (0
171   otf:syrc=rlig,calt,liga,dlig))
172
173 ;; Step 3: GPOS features.
174
175 (generator
176  (0
177   otf:syrc=))
178
179 ;; Local Variables:
180 ;; mode: lisp
181 ;; End: