-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathfeature.fea
351 lines (298 loc) · 8.31 KB
/
feature.fea
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
# This file is designed in conjunction with the build.pe script to replace
# the lookup tables so that they aren't appended and get out of control.
# You can manually merge this with your .sfd file in Fontforge to be able
# to take advantage of the built-in tools for previewing ligatures.
#
# ZLM OpenType Feature Table Definitions
#
@consonant = [ py ty ky fy ly sy cy my xy \by dy gy vy ry zy jy ny yhy iy uy ];
@c_cvc1 = [ py.cvc.1 ty.cvc.1 ky.cvc.1 fy.cvc.1 ly.cvc.1 sy.cvc.1 cy.cvc.1 my.cvc.1 xy.cvc.1 \by.cvc.1 dy.cvc.1 gy.cvc.1 vy.cvc.1 ry.cvc.1 zy.cvc.1 jy.cvc.1 ny.cvc.1 yhy.cvc.1 iy.cvc.1 uy.cvc.1 ];
@c_cvc3 = [ py.cvc.3 ty.cvc.3 ky.cvc.3 fy.cvc.3 ly.cvc.3 sy.cvc.3 cy.cvc.3 my.cvc.3 xy.cvc.3 \by.cvc.3 dy.cvc.3 gy.cvc.3 vy.cvc.3 ry.cvc.3 zy.cvc.3 jy.cvc.3 ny.cvc.3 yhy.cvc.3 iy.cvc.3 uy.cvc.3 ];
@c_ccv1 = [ py.ccv.1 ty.ccv.1 ky.ccv.1 fy.ccv.1 ly.ccv.1 sy.ccv.1 cy.ccv.1 my.ccv.1 xy.ccv.1 \by.ccv.1 dy.ccv.1 gy.ccv.1 vy.ccv.1 ry.ccv.1 zy.ccv.1 jy.ccv.1 ny.ccv.1 yhy.ccv.1 iy.ccv.1 uy.ccv.1 ];
@c_ccv2 = [ py.ccv.2 ty.ccv.2 ky.ccv.2 fy.ccv.2 ly.ccv.2 sy.ccv.2 cy.ccv.2 my.ccv.2 xy.ccv.2 \by.ccv.2 dy.ccv.2 gy.ccv.2 vy.ccv.2 ry.ccv.2 zy.ccv.2 jy.ccv.2 ny.ccv.2 yhy.ccv.2 iy.ccv.2 uy.ccv.2 ];
@singlevowel = [ abu ebu ibu obu ubu ybu ];
@vowel = [ abu ebu ibu obu ubu ybu aibu eibu oibu aubu ];
@vowel_vert = [ abu ebu ibu obu ubu ybu aibu eibu oibu aubu abu.vert ebu.vert ibu.vert obu.vert ubu.vert ybu.vert aibu.vert eibu.vert oibu.vert aubu.vert ];
@v_cv = [ abu.cv ebu.cv ibu.cv obu.cv ubu.cv ybu.cv aibu.cv eibu.cv oibu.cv aubu.cv ];
@v_cvc = [ abu.cvc ebu.cvc ibu.cvc obu.cvc ubu.cvc ybu.cvc aibu.cvc eibu.cvc oibu.cvc aubu.cvc ];
@v_ccv = [ abu.ccv ebu.ccv ibu.ccv obu.ccv ubu.ccv ybu.ccv aibu.ccv eibu.ccv oibu.ccv aubu.ccv ];
languagesystem DFLT dflt;
languagesystem latn dflt;
# sub diphthongs
lookup semivowels {
lookupflag 0;
sub ibu' @singlevowel by iy;
sub ubu' @singlevowel by uy;
} semivowels;
lookup diphthongs {
lookupflag 0;
sub abu ibu by aibu;
sub ebu ibu by eibu;
sub obu ibu by oibu;
sub abu ubu by aubu;
} diphthongs;
lookup v {
lookupflag 0;
sub abu by abu.iso;
sub ebu by ebu.iso;
sub ibu by ibu.iso;
sub obu by obu.iso;
sub ubu by ubu.iso;
sub ybu by ybu.iso;
sub aibu by aibu.iso;
sub eibu by eibu.iso;
sub oibu by oibu.iso;
sub aubu by aubu.iso;
} v;
lookup ccv_c2 {
lookupflag 0;
ignore sub @consonant @vowel_vert @consonant @consonant';
sub py ly' @vowel_vert by ly.ccv.2;
sub py ry' @vowel_vert by ry.ccv.2;
sub fy ly' @vowel_vert by ly.ccv.2;
sub fy ry' @vowel_vert by ry.ccv.2;
sub \by ly' @vowel_vert by ly.ccv.2;
sub \by ry' @vowel_vert by ry.ccv.2;
sub vy ly' @vowel_vert by ly.ccv.2;
sub vy ry' @vowel_vert by ry.ccv.2;
sub cy py' @vowel_vert by py.ccv.2;
sub cy fy' @vowel_vert by fy.ccv.2;
sub cy ty' @vowel_vert by ty.ccv.2;
sub cy ky' @vowel_vert by ky.ccv.2;
sub cy my' @vowel_vert by my.ccv.2;
sub cy ny' @vowel_vert by ny.ccv.2;
sub cy ly' @vowel_vert by ly.ccv.2;
sub cy ry' @vowel_vert by ry.ccv.2;
sub jy \by' @vowel_vert by \by.ccv.2;
sub jy vy' @vowel_vert by vy.ccv.2;
sub jy dy' @vowel_vert by dy.ccv.2;
sub jy gy' @vowel_vert by gy.ccv.2;
sub jy my' @vowel_vert by my.ccv.2;
sub sy py' @vowel_vert by py.ccv.2;
sub sy fy' @vowel_vert by fy.ccv.2;
sub sy ty' @vowel_vert by ty.ccv.2;
sub sy ky' @vowel_vert by ky.ccv.2;
sub sy my' @vowel_vert by my.ccv.2;
sub sy ny' @vowel_vert by ny.ccv.2;
sub sy ly' @vowel_vert by ly.ccv.2;
sub sy ry' @vowel_vert by ry.ccv.2;
sub zy \by' @vowel_vert by \by.ccv.2;
sub zy vy' @vowel_vert by vy.ccv.2;
sub zy dy' @vowel_vert by dy.ccv.2;
sub zy gy' @vowel_vert by gy.ccv.2;
sub zy my' @vowel_vert by my.ccv.2;
sub ty cy' @vowel_vert by cy.ccv.2;
sub ty ry' @vowel_vert by ry.ccv.2;
sub ty sy' @vowel_vert by sy.ccv.2;
sub ky ly' @vowel_vert by ly.ccv.2;
sub ky ry' @vowel_vert by ry.ccv.2;
sub dy jy' @vowel_vert by jy.ccv.2;
sub dy ry' @vowel_vert by ry.ccv.2;
sub dy zy' @vowel_vert by zy.ccv.2;
sub gy ly' @vowel_vert by ly.ccv.2;
sub gy ry' @vowel_vert by ry.ccv.2;
sub my ly' @vowel_vert by ly.ccv.2;
sub my ry' @vowel_vert by ry.ccv.2;
sub xy ly' @vowel_vert by ly.ccv.2;
sub xy ry' @vowel_vert by ry.ccv.2;
} ccv_c2;
lookup ccv_c1 {
lookupflag 0;
sub @consonant' @c_ccv2 by @c_ccv1;
} ccv_c1;
lookup cvc_c1 {
lookupflag 0;
ignore sub @consonant' @vowel @consonant @vowel;
sub @consonant' @vowel @consonant by @c_cvc1;
} cvc_c1;
lookup cvc_v {
lookupflag 0;
sub @c_cvc1 @vowel' @consonant by @v_cvc;
} cvc_v;
lookup cvc_c3 {
lookupflag 0;
sub @c_cvc1 @v_cvc @consonant' by @c_cvc3;
} cvc_c3;
lookup v_vert {
lookupflag 0;
sub abu by abu.vert;
sub ebu by ebu.vert;
sub ibu by ibu.vert;
sub obu by obu.vert;
sub ubu by ubu.vert;
sub ybu by ybu.vert;
sub aibu by aibu.vert;
sub eibu by eibu.vert;
sub oibu by oibu.vert;
sub aubu by aubu.vert;
} v_vert;
lookup cv_v {
lookupflag 0;
sub @consonant @vowel' by @v_cv;
} cv_v;
lookup denpabuCV {
lookupflag 0;
sub denpabu @consonant' @v_cv by @c_ccv2;
} denpabuCV;
lookup denpabuC {
lookupflag 0;
sub denpabu' @c_ccv2 by denpabu.ccv.1;
} denpabuC;
lookup ccv_v {
lookupflag 0;
sub @c_ccv2 @vowel' by @v_ccv;
sub @c_ccv2 @v_cv' by @v_ccv;
} ccv_v;
lookup cvd_c {
lookupflag 0;
sub @consonant' @v_cv denpabu by @c_cvc1;
} cvd_c;
lookup cvd_v {
lookupflag 0;
sub @c_cvc1 @v_cv' denpabu by @v_cvc;
} cvd_v;
lookup cvd_d {
lookupflag 0;
sub @c_cvc1 @v_cvc denpabu' by denpabu.cvc.3;
} cvd_d;
lookup dvc_d {
lookupflag 0;
ignore sub denpabu' @vowel @consonant @v_cv;
sub denpabu' @vowel @consonant by denpabu.cvc.1;
sub slakabu' @vowel @consonant by denpabu.cvc.1;
} dvc_d;
lookup dvc_v {
lookupflag 0;
ignore sub @vowel' @consonant @v_cv;
sub @vowel' @consonant by @v_cvc;
} dvc_v;
lookup dvc_c {
lookupflag 0;
sub @v_cvc @consonant' by @c_cvc3;
} dvc_c;
lookup Vdenpabu {
lookupflag 0;
sub denpabu abu by abu;
sub denpabu ebu by ebu;
sub denpabu ibu by ibu;
sub denpabu obu by obu;
sub denpabu ubu by ubu;
sub denpabu ybu by ybu;
sub denpabu aibu by aibu;
sub denpabu eibu by eibu;
sub denpabu oibu by oibu;
sub denpabu aubu by aubu;
sub denpabu iy by denpabu_iy;
sub denpabu uy by denpabu_uy;
} Vdenpabu;
lookup sv {
lookupflag 0;
sub slakabu abu by abu.iso;
sub slakabu ebu by ebu.iso;
sub slakabu ibu by ibu.iso;
sub slakabu obu by obu.iso;
sub slakabu ubu by ubu.iso;
sub slakabu ybu by ybu.iso;
sub slakabu aibu by aibu.iso;
sub slakabu eibu by eibu.iso;
sub slakabu oibu by oibu.iso;
sub slakabu aubu by aubu.iso;
} sv;
feature ss01 {
script DFLT;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup v;
script latn;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup v;
} ss01;
feature vert {
script DFLT;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup ccv_c1;
lookup ccv_c2;
lookup cvc_c1;
lookup cvc_v;
lookup cvc_c3;
lookup v_vert;
lookup denpabuCV;
lookup denpabuC;
lookup cvd_c;
lookup cvd_v;
lookup cvd_d;
lookup dvc_d;
lookup dvc_v;
lookup dvc_c;
lookup Vdenpabu;
lookup sv;
script latn;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup ccv_c1;
lookup ccv_c2;
lookup cvc_c1;
lookup cvc_v;
lookup cvc_c3;
lookup v_vert;
lookup denpabuCV;
lookup denpabuC;
lookup cvd_c;
lookup cvd_v;
lookup cvd_d;
lookup dvc_d;
lookup dvc_v;
lookup dvc_c;
lookup Vdenpabu;
lookup sv;
} vert;
feature liga {
script DFLT;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup ccv_c1;
lookup ccv_c2;
lookup cvc_c1;
lookup cvc_v;
lookup cvc_c3;
lookup cv_v;
lookup denpabuCV;
lookup denpabuC;
lookup ccv_v;
lookup cvd_c;
lookup cvd_v;
lookup cvd_d;
lookup dvc_d;
lookup dvc_v;
lookup dvc_c;
lookup Vdenpabu;
lookup sv;
script latn;
language dflt;
lookup semivowels;
lookup diphthongs;
lookup ccv_c1;
lookup ccv_c2;
lookup cvc_c1;
lookup cvc_v;
lookup cvc_c3;
lookup cv_v;
lookup denpabuCV;
lookup denpabuC;
lookup ccv_v;
lookup cvd_c;
lookup cvd_v;
lookup cvd_d;
lookup dvc_d;
lookup dvc_v;
lookup dvc_c;
lookup Vdenpabu;
lookup sv;
} liga;