forked from adobe-fonts/source-code-pro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
family.fea
734 lines (599 loc) · 31.9 KB
/
family.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
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
@LETTERS_MAJUSCULE_LATIN_BASIC = [A B C D E F G H I J K L M N O P Q R S T U V W X Y Z];
@LETTERS_MAJUSCULE_LATIN_ACCENTED = [AEacute AEmacron Aacute Abreve Abreveacute Abrevedotbelow Abrevegrave Abrevehoi Abrevetilde Acaron Acircumflex Acircumflexacute Acircumflexdotbelow Acircumflexgrave Acircumflexhoi Acircumflextilde Adieresis Adotbelow Agrave Ahoi Amacron Aogonek Aring Aringacute Atilde Blinebelow Cacute Ccaron Ccedilla Ccircumflex Cdotaccent Dcaron Ddotbelow Dlinebelow Eacute Ebreve Ecaron Ecircumflex Ecircumflexacute Ecircumflexdotbelow Ecircumflexgrave Ecircumflexhoi Ecircumflextilde Edieresis Edotaccent Edotbelow Egrave Ehoi Emacron Emacronacute Eogonek Etilde Gacute Gbreve Gcaron Gcircumflex Gcommaaccent Gdotaccent Gmacron Gtilde Hbar Hbrevebelow Hcircumflex Hdotbelow Iacute Ibreve Icaron Icircumflex Idieresis Idotbelow Igrave Ihoi Imacron Iogonek Itilde Jcircumflex Kcommaaccent Kdotbelow Klinebelow Lacute Lcaron Lcommaaccent Ldotbelow Ldotbelowmacron Llinebelow Macute Mdotaccent Mdotbelow Nacute Ncaron Ncommaaccent Ndotaccent Ndotbelow Ngrave Nlinebelow Ntilde Oacute Obreve Ocaron Ocircumflex Ocircumflexacute Ocircumflexdotbelow Ocircumflexgrave Ocircumflexhoi Ocircumflextilde Odieresis Odotbelow Ograve Ohoi Ohorn Ohornacute Ohorndotbelow Ohorngrave Ohornhoi Ohorntilde Ohungarumlaut Omacron Omacronacute Oogonek Otilde Oslashacute Racute Rcaron Rcommaaccent Rdotaccent Rdotbelow Rdotbelowmacron Rlinebelow Sacute Scaron Scedilla Scircumflex Scommaaccent Sdotaccent Sdotbelow Tcaron Tcedilla Tcommaaccent Tdotbelow Tlinebelow Uacute Ubreve Ucaron Ucircumflex Udieresis Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Udotbelow Ugrave Uhoi Uhorn Uhornacute Uhorndotbelow Uhorngrave Uhornhoi Uhorntilde Uhungarumlaut Umacron Uogonek Uring Utilde Wacute Wcircumflex Wdieresis Wgrave Yacute Ycircumflex Ydieresis Ydotaccent Ydotbelow Ygrave Yhoi Ytilde Zacute Zcaron Zdotaccent Zdotbelow Zlinebelow Ldot];
@LETTERS_MAJUSCULE_LATIN_ADDL = [AE Bstroke Dcroat Ghook Lslash Oslash OE Tbar Eth Thorn Schwa Eng IJ];
@LETTERS_MAJUSCULE_LATIN_ALL = [@LETTERS_MAJUSCULE_LATIN_BASIC @LETTERS_MAJUSCULE_LATIN_ACCENTED @LETTERS_MAJUSCULE_LATIN_ADDL Idotaccent];
@LETTERS_MINISCULE_LATIN_BASIC = [a b c d e f g h i j k l m n o p q r s t u v w x y z];
@LETTERS_MINISCULE_LATIN_ACCENTED = [aeacute aemacron aacute abreve abreveacute abrevedotbelow abrevegrave abrevehoi abrevetilde acaron acircumflex acircumflexacute acircumflexdotbelow acircumflexgrave acircumflexhoi acircumflextilde adieresis adotbelow agrave ahoi amacron aogonek aring aringacute atilde blinebelow cacute ccaron ccedilla ccircumflex cdotaccent dcaron ddotbelow dlinebelow eacute ebreve ecaron ecircumflex ecircumflexacute ecircumflexdotbelow ecircumflexgrave ecircumflexhoi ecircumflextilde edieresis edotaccent edotbelow egrave ehoi emacron emacronacute eogonek etilde gacute gbreve gcaron gcircumflex gcommaaccent gdotaccent gmacron gtilde hbar hbrevebelow hcircumflex hdotbelow iacute ibreve icaron icircumflex idieresis idotbelow igrave ihoi imacron iogonek itilde jcircumflex kcommaaccent kdotbelow klinebelow lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow macute mdotaccent mdotbelow nacute ncaron ncommaaccent ndotaccent ndotbelow ngrave nlinebelow ntilde oacute obreve ocaron ocircumflex ocircumflexacute ocircumflexdotbelow ocircumflexgrave ocircumflexhoi ocircumflextilde odieresis odotbelow ograve ohoi ohorn ohornacute ohorndotbelow ohorngrave ohornhoi ohorntilde ohungarumlaut omacron omacronacute oogonek otilde oslashacute racute rcaron rcommaaccent rdotaccent rdotbelow rdotbelowmacron rlinebelow sacute scaron scedilla scircumflex scommaaccent sdotaccent sdotbelow tcaron tcedilla tcommaaccent tdotbelow tlinebelow uacute ubreve ucaron ucircumflex udieresis udieresisacute udieresiscaron udieresisgrave udieresismacron udotbelow ugrave uhoi uhorn uhornacute uhorndotbelow uhorngrave uhornhoi uhorntilde uhungarumlaut umacron uogonek uring utilde wacute wcircumflex wdieresis wgrave yacute ycircumflex ydieresis ydotaccent ydotbelow ygrave yhoi ytilde zacute zcaron zdotaccent zdotbelow zlinebelow ldot];
@LETTERS_MINISCULE_LATIN_ADDL = [ae bstroke dcroat ghook lslash oslash oe tbar eth thorn schwa eng ij longs];
@LETTERS_MINISCULE_LATIN_SUPERIOR = [a.sups b.sups c.sups d.sups e.sups f.sups g.sups h.sups i.sups j.sups k.sups l.sups m.sups n.sups o.sups p.sups q.sups r.sups s.sups t.sups u.sups v.sups w.sups x.sups y.sups z.sups];
@LETTERS_MINISCULE_LATIN_ASCENDERS = [b d f h i j k l t bstroke dcroat lslash tbar eth thorn ij longs bhook dtail dhook ghook hhook henghook istroke jcrossedtail lmiddletilde lbelt lretroflex lezh philatin rlonglegturned esh dotlessjstrokehook tretroflex yturned dezh ts tesh glottalstop glottalstopreversed glottalstopstroke glottalstopstrokereversed clickalveolar clickbilabial];
@LETTERS_MINISCULE_LATIN_DESCENDERS = [g j p q y thorn eng ij dtail dotlessjstroke ghook gscript gammalatin hturned henghook jcrossedtail kturned lretroflex lezh mlonglegturned mhook nhookleft nretroflex philatin rhookturned rtail shook esh dotlessjstrokehook tretroflex zretroflex ezh dezh tesh clickalveolar];
@LETTERS_MAJUSCULE_GREEK_BASIC = [Alpha Beta Gamma Delta Epsilon Zeta Eta Theta Iota Kappa Lambda Mu Nu Xi Omicron Pi Rho Sigma Tau Upsilon Phi Chi Psi Omega];
@LETTERS_MAJUSCULE_GREEK_TONOS = [Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos];
@LETTERS_MAJUSCULE_GREEK_DIERESIS = [Iotadieresis Upsilondieresis];
@LETTERS_MAJUSCULE_GREEK_ALL = [@LETTERS_MAJUSCULE_GREEK_BASIC @LETTERS_MAJUSCULE_GREEK_TONOS @LETTERS_MAJUSCULE_GREEK_DIERESIS];
@LETTERS_MINISCULE_GREEK_BASIC = [alpha beta gamma delta epsilon zeta eta theta iota kappa lambda mu nu xi omicron pi rho sigma tau upsilon phi chi psi omega];
@LETTERS_MINISCULE_GREEK_TONOS = [alphatonos epsilontonos etatonos iotatonos omicrontonos upsilontonos omegatonos];
@LETTERS_MINISCULE_GREEK_DIERESIS = [iotadieresis upsilondieresis];
@LETTERS_MINISCULE_GREEK_DIERESISTONOS = [iotadieresistonos upsilondieresistonos];
@LETTERS_MINISCULE_GREEK_ALL = [@LETTERS_MINISCULE_GREEK_BASIC @LETTERS_MINISCULE_GREEK_TONOS @LETTERS_MINISCULE_GREEK_DIERESIS @LETTERS_MINISCULE_GREEK_DIERESISTONOS];
@LETTERS_MAJUSCULE_CYRILLIC_BASIC = [Acyr Be Ve Ghe De Ie Zhe Ze Icyr Ka El Em En Ocyr Pe Er Es Te Ucyr Ef Ha Tse Che Sha Shcha Hard Yeru Soft Ecyr Yu Ya Ieukran Dze Iukran Je Lje Nje Tshe Dzhe Yat Fita Izhitsa Gheup Ghestroke Zhedescender Zedescender Kadescender Kabashkir Endescender Esdescender Ustraight Ustraightstroke Hadescender Chedescender Shha Palochka Aie Schwacyr Obarcyr];
@LETTERS_MAJUSCULE_CYRILLIC_ACCENTED = [Ishort Iegrave Io Dje Gje Yi Kje Igravecyr Ushort Zhebreve Abrevecyr Iebreve Imacroncyr Odieresiscyr Umacroncyr Uacutedblcyr];
@LETTERS_MAJUSCULE_CYRILLIC_ALL = [@LETTERS_MAJUSCULE_CYRILLIC_BASIC @LETTERS_MAJUSCULE_CYRILLIC_ACCENTED];
@LETTERS_MINISCULE_CYRILLIC_BASIC = [acyr be ve ghe de ie zhe ze icyr ka el em en ocyr pe er es te ucyr ef ha tse che sha shcha hard yeru soft ecyr yu ya ieukran dze iukran je lje nje tshe dzhe yat fita izhitsa gheup ghestroke zhedescender zedescender kadescender kabashkir endescender esdescender ustraight ustraightstroke hadescender chedescender shha palochka aie schwacyr obarcyr];
@LETTERS_MINISCULE_CYRILLIC_ACCENTED = [ishort iegrave io dje gje yi kje igravecyr ushort zhebreve abrevecyr iebreve imacroncyr odieresiscyr umacroncyr uacutedblcyr];
@LETTERS_MINISCULE_CYRILLIC_ALL = [@LETTERS_MINISCULE_CYRILLIC_BASIC @LETTERS_MINISCULE_CYRILLIC_ACCENTED];
@LETTERS_MAJUSCULE_ALL = [@LETTERS_MAJUSCULE_LATIN_ALL @LETTERS_MAJUSCULE_GREEK_ALL @LETTERS_MAJUSCULE_CYRILLIC_ALL];
@MARKS_ABOVE_CMB = [gravecmb acutecmb circumflexcmb tildecmb macroncmb overlinecmb brevecmb brevecmb.cyr dotaccentcmb dieresiscmb hoicmb ringcmb hungarumlautcmb caroncmb dblgravecmb breveinvertedcmb perispomenicmb
dieresisacutecmb dieresisgravecmb dieresismacroncmb dieresiscaroncmb circumflexacutecmb circumflexgravecmb circumflexhoicmb circumflextildecmb breveacutecmb brevegravecmb brevehoicmb brevetildecmb circumflexbrevecmb macronacutecmb];
@MARKS_BELOW_CMB = [cedillacmb ogonekcmb];
@MARKS_CMB_ALL = [@MARKS_ABOVE_CMB @MARKS_BELOW_CMB];
@MARKS_ABOVE_CMB_CASE = [gravecmb.cap acutecmb.cap circumflexcmb.cap tildecmb.cap macroncmb.cap overlinecmb.cap brevecmb.cap brevecmb.cyrcap dotaccentcmb.cap dieresiscmb.cap hoicmb.cap ringcmb.cap hungarumlautcmb.cap caroncmb.cap dblgravecmb.cap breveinvertedcmb.cap perispomenicmb
dieresisacutecmb.cap dieresisgravecmb.cap dieresismacroncmb.cap dieresiscaroncmb.cap circumflexacutecmb.cap circumflexgravecmb.cap circumflexhoicmb.cap circumflextildecmb.cap breveacutecmb.cap brevegravecmb.cap brevehoicmb.cap brevetildecmb.cap circumflexbrevecmb.cap macronacutecmb.cap];
@MARKS_BELOW_CMB_CASE = [cedillacmb.cap ogonekcmb.cap];
@MARKS_CMB_ALL_CASE = [@MARKS_ABOVE_CMB_CASE @MARKS_BELOW_CMB_CASE];
@FIGURES_LINING = [zero one two three four five six seven eight nine];
@FIGURES_OLDSTYLE = [zero.onum one.onum two.onum three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum];
@FIGURES_CASE = [zero.cap one.cap two.cap three.cap four.cap five.cap six.cap seven.cap eight.cap nine.cap];
@FIGURES_NUMERATOR = [zero.numr one.numr two.numr three.numr four.numr five.numr six.numr seven.numr eight.numr nine.numr];
@FIGURES_DENOMINATOR = [zero.dnom one.dnom two.dnom three.dnom four.dnom five.dnom six.dnom seven.dnom eight.dnom nine.dnom];
@FIGURES_SUPERIOR = [zero.sups one.sups two.sups three.sups four.sups five.sups six.sups seven.sups eight.sups nine.sups];
@FIGURES_INFERIOR = [zero.subs one.subs two.subs three.subs four.subs five.subs six.subs seven.subs eight.subs nine.subs];
@PUNCTUATION_FOR_SMALL_FIGURE_STYLES = [parenleft parenright period comma];
@PUNCTUATION_NUMERATOR = [parenleft.numr parenright.numr period.numr comma.numr];
@PUNCTUATION_DENOMINATOR = [parenleft.dnom parenright.dnom period.dnom comma.dnom];
@PUNCTUATION_SUPERIOR = [parenleft.sups parenright.sups period.sups comma.sups];
@PUNCTUATION_INFERIOR = [parenleft.subs parenright.subs period.subs comma.subs];
@A_LC = [a agrave aacute acircumflex atilde adieresis amacron abreve aring aringacute acaron adotbelow ahoi acircumflexacute acircumflexgrave acircumflexhoi acircumflextilde acircumflexdotbelow abreveacute abrevegrave abrevehoi abrevetilde abrevedotbelow aogonek a.sups ordfeminine acyr abrevecyr];
@A_LC_ALT = [a.a agrave.a aacute.a acircumflex.a atilde.a adieresis.a amacron.a abreve.a aring.a aringacute.a acaron.a adotbelow.a ahoi.a acircumflexacute.a acircumflexgrave.a acircumflexhoi.a acircumflextilde.a acircumflexdotbelow.a abreveacute.a abrevegrave.a abrevehoi.a abrevetilde.a abrevedotbelow.a aogonek.a a.supa ordfeminine.a acyr.a abrevecyr.a];
@G_LC = [g gacute gcircumflex gbreve gdotaccent gcommaaccent gcaron gmacron gtilde g.sups];
@G_LC_ALT = [g.a gacute.a gcircumflex.a gbreve.a gdotaccent.a gcommaaccent.a gcaron.a gmacron.a gtilde.a g.supa];
@I_LC = [i dotlessi igrave iacute icircumflex itilde idieresis imacron icaron iogonek ihoi idotbelow ibreve istroke iogonek.d istroke.d iukran i.sups];
@I_LC_ALT = [i.a dotlessi.a igrave.a iacute.a icircumflex.a itilde.a idieresis.a imacron.a icaron.a iogonek.a ihoi.a idotbelow.a ibreve.a istroke.a iogonek.da istroke.da iukran.a i.supa];
@L_LC = [l lacute lcaron lcommaaccent ldotbelow ldotbelowmacron llinebelow lslash ldot lcat lmiddletilde lbelt];
@L_LC_ALT = [l.a lacute.a lcaron.a lcommaaccent.a ldotbelow.a ldotbelowmacron.a llinebelow.a lslash.a ldot.a lcat.a lmiddletilde.a lbelt.a];
#--------------------------------------
languagesystem DFLT dflt; # Default
languagesystem latn dflt; # Latin default
languagesystem latn NSM; # Northern Sami
languagesystem latn SKS; # Skolt Sami
languagesystem latn ATH; # Athapaskan
languagesystem grek dflt; # Greek default
languagesystem cyrl dflt; # Cyrillic default
languagesystem cyrl SRB; # Serbian
#--------------------------------------
lookup A_LC_ALT {
sub @A_LC by @A_LC_ALT;
} A_LC_ALT;
lookup G_LC_ALT {
sub @G_LC by @G_LC_ALT;
} G_LC_ALT;
lookup I_LC_ALT { # includes i & l alternates
sub @I_LC by @I_LC_ALT;
sub @L_LC by @L_LC_ALT;
} I_LC_ALT;
lookup ENG_UC_SAMI { # preferred Eng shape for Sami languages
sub Eng by Eng.a;
} ENG_UC_SAMI;
lookup BETA_LC_ALT {
sub beta by beta.a;
} BETA_LC_ALT;
lookup THETA_LC_ALT {
sub theta by theta.a;
} THETA_LC_ALT;
lookup PHI_LC_ALT {
sub phi by phi.a;
} PHI_LC_ALT;
lookup BREVE_CYR { #preferred breve shape for Cyrillic script
sub [brevecmb brevecmb.cap] by [brevecmb.cyr brevecmb.cyrcap]; # combining marks
} BREVE_CYR;
lookup BE_LC_SRB {
sub be by be.srb;
} BE_LC_SRB;
lookup ZERO_SLASH {
sub [zero zero.onum zero.cap] by [zero.0 zero.0o zero.0c];
} ZERO_SLASH;
lookup HYPHEN_ALT {
sub [hyphen sfthyphen hyphentwo] by [hyphen.a sfthyphen.a hyphentwo.a];
} HYPHEN_ALT;
lookup ASTERISK_ALT {
sub asterisk by asterisk.a;
} ASTERISK_ALT;
lookup DOLLAR_ALT {
sub dollar by dollar.a;
} DOLLAR_ALT;
lookup ONE_ALT {
sub one by one.a;
} ONE_ALT;
#--------------------------------------
#feature aalt { # Access All Alternates
# feature locl;
# feature numr;
# feature dnom;
# feature ordn;
# feature sups;
# feature subs;
# feature sinf;
# feature onum;
# feature zero;
# feature case;
# feature ss01;
# feature ss02;
# feature ss03;
# feature ss04;
# feature ss05;
# feature ss06;
# feature ss07;
# feature salt;
#} aalt;
#--------------------------------------
feature locl { # Localized Forms
script latn;
language NSM exclude_dflt;
lookup ENG_UC_SAMI;
language SKS exclude_dflt;
lookup ENG_UC_SAMI;
script grek;
sub [acutecmb gravecmb commaturnedabovecmb commaabovecmb] by [tonoscmb variacmb aspercmb leniscmb]; # combining marks
script cyrl;
lookup BREVE_CYR;
language SRB include_dflt;
lookup BE_LC_SRB;
} locl;
#--------------------------------------
lookup DECOMPOSITION {
sub Ecircumflex by E circumflexcmb;
sub ecircumflex by e circumflexcmb;
sub Emacron by E macroncmb;
sub emacron by e macroncmb;
sub Ocircumflex by O circumflexcmb;
sub ocircumflex by o circumflexcmb;
sub Omacron by O macroncmb;
sub omacron by o macroncmb;
sub Yi by I dieresiscmb;
sub yi by dotlessi dieresiscmb;
} DECOMPOSITION;
lookup ASC_RAISE_CMB {
pos breveinverteddoublecmb <0 80 0 -80>;
} ASC_RAISE_CMB;
lookup DSC_LOWER_CMB {
pos macrondoublebelowcmb <0 -140 0 140>;
} DSC_LOWER_CMB;
feature ccmp { # Glyph Composition / Decomposition
lookup GLYPH_DECOMPOSITION_CONTEXTUAL_2 {
#decomposes accented forms when followed by comining accent
sub [Ecircumflex ecircumflex Ocircumflex ocircumflex]' lookup DECOMPOSITION brevecmb; # Jarai language
sub [Emacron emacron Omacron omacron]' lookup DECOMPOSITION acutecmb; # Greek transliteration
sub [Yi yi]' lookup DECOMPOSITION acutecmb; # Cyrillic stressed notation
} GLYPH_DECOMPOSITION_CONTEXTUAL_2;
lookup GLYPH_COMPOSITION_CONTEXTUAL {
#substitutes dotless forms of i & j when followed by combining accents above: (Navajo language support)
sub i' ogonekcmb' @MARKS_ABOVE_CMB by iogonek.d;
sub i.a' ogonekcmb' @MARKS_ABOVE_CMB by iogonek.da;
sub [i j iogonek iogonek.a istroke jcrossedtail]' @MARKS_ABOVE_CMB by [dotlessi dotlessj iogonek.d iogonek.da istroke.d jcrossedtail.d];
} GLYPH_COMPOSITION_CONTEXTUAL;
lookup ASC_RAISE_CMB_CONTEXTUAL {
# raises breveinverteddoublecmb when preceded or followed by ascending glyphs
pos @LETTERS_MINISCULE_LATIN_ASCENDERS breveinverteddoublecmb' lookup ASC_RAISE_CMB;
pos breveinverteddoublecmb' lookup ASC_RAISE_CMB @LETTERS_MINISCULE_LATIN_ASCENDERS;
} ASC_RAISE_CMB_CONTEXTUAL;
lookup DSC_LOWER_CMB_CONTEXTUAL {
# raises breveinverteddoublecmb when preceded or followed by ascending glyphs
pos @LETTERS_MINISCULE_LATIN_DESCENDERS macrondoublebelowcmb' lookup DSC_LOWER_CMB;
pos macrondoublebelowcmb' lookup DSC_LOWER_CMB @LETTERS_MINISCULE_LATIN_DESCENDERS;
} DSC_LOWER_CMB_CONTEXTUAL;
lookup MARKS_COMPOSITION {
sub dieresiscmb acutecmb by dieresisacutecmb;
sub dieresiscmb tonoscmb by dieresistonoscmb;
sub dieresiscmb gravecmb by dieresisgravecmb;
sub dieresiscmb variacmb by dialytikagravecmb;
sub dieresiscmb [tildecmb perispomenicmb] by dieresistildecmb;
sub dieresiscmb macroncmb by dieresismacroncmb;
sub dieresiscmb caroncmb by dieresiscaroncmb;
sub circumflexcmb acutecmb by circumflexacutecmb;
sub circumflexcmb gravecmb by circumflexgravecmb;
sub circumflexcmb hoicmb by circumflexhoicmb;
sub circumflexcmb tildecmb by circumflextildecmb;
sub circumflexcmb brevecmb by circumflexbrevecmb;
sub brevecmb acutecmb by breveacutecmb;
sub brevecmb gravecmb by brevegravecmb;
sub brevecmb hoicmb by brevehoicmb;
sub brevecmb [tildecmb perispomenicmb] by brevetildecmb;
sub aspercmb [tonoscmb acutecmb] by asperacutecmb;
sub aspercmb [variacmb gravecmb] by aspergravecmb;
sub aspercmb [tildecmb perispomenicmb] by aspertildecmb;
sub leniscmb [tonoscmb acutecmb] by lenisacutecmb;
sub leniscmb [variacmb gravecmb] by lenisgravecmb;
sub leniscmb [tildecmb perispomenicmb] by lenistildecmb;
} MARKS_COMPOSITION;
lookup GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL {
sub l periodcentered l by lcat;
sub L periodcentered L by Lcat;
sub d caroncmb by dcaron;
sub l caroncmb by lcaron;
sub t caroncmb by tcaron;
sub g tildecmb by gtilde;
sub G tildecmb by Gtilde;
sub a ogonekcmb by aogonek;
sub A ogonekcmb by Aogonek;
sub e ogonekcmb by eogonek;
sub E ogonekcmb by Eogonek;
sub i ogonekcmb by iogonek;
sub I ogonekcmb by Iogonek;
sub o ogonekcmb by oogonek;
sub O ogonekcmb by Oogonek;
sub u ogonekcmb by uogonek;
sub U ogonekcmb by Uogonek;
sub g cedillacmb by gcommaaccent; # The decomposition defined by Unicode is: 0067+0327
sub g.a cedillacmb by gcommaaccent.a;
sub ij acutecmb by ijacute;
sub IJ acutecmb by IJacute;
} GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL;
lookup MAJUCSULE_ACCENTS_CMB_CONTEXT { # substitutes combining marks for miniscules with forms for majuscules
sub @LETTERS_MAJUSCULE_ALL @MARKS_CMB_ALL' by @MARKS_CMB_ALL_CASE;
sub @MARKS_CMB_ALL_CASE @MARKS_CMB_ALL' by @MARKS_CMB_ALL_CASE;
} MAJUCSULE_ACCENTS_CMB_CONTEXT;
} ccmp;
#--------------------------------------
feature cv01 { # Character Variant 1 (alternate lowercase a)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "simple a"; # English US
name 3 1 0x0809 "simple a"; # English GB
name 1 0 0 "simple a"; # Mac English
name 3 1 0x0408 "\03B1\03C0\03BB\03CC a"; # Greek
name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 \0430"; # Russian
};
};
lookup A_LC_ALT;
} cv01;
#--------------------------------------
feature cv02 { # Character Variant 2 (alternate lowercase g)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "simple g"; # English US
name 3 1 0x0809 "simple g"; # English GB
name 1 0 0 "simple g"; # Mac English
name 3 1 0x0408 "\03B1\03C0\03BB\03CC g"; # Greek
name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 g"; # Russian
};
};
lookup G_LC_ALT;
} cv02;
#--------------------------------------
feature cv04 { # Character Variant 4 (alternate lowercase i)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "serifed i & l"; # English US
name 3 1 0x0809 "serifed i & l"; # English GB
name 1 0 0 "serifed i & l"; # Mac English
name 3 1 0x0408 "i & l \03BC\03B5 \03B1\03BA\03C1\03B5\03BC\03CC\03BD\03B5\03C2"; # Greek
name 3 1 0x0419 "\0456 \0438 \04CF \0441 \0437\0430\0441\0435\0447\043A\0430\043C\0438"; # Russian
};
};
lookup I_LC_ALT;
} cv04;
#--------------------------------------
feature cv06 { # Character Variant 6 (Sami uppercase Eng)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "Sami \014A"; # English US
name 3 1 0x0809 "Sami \014A"; # English GB
name 1 0 0 "Sami Eng"; # Mac English
name 3 1 0x0408 "\03A3\03AC\03BC\03B7 \014A"; # Greek
name 3 1 0x0419 "\0441\0430\0430\043C\0441\043A\0438\0439 \014A"; # Russian
};
};
lookup ENG_UC_SAMI;
} cv06;
#--------------------------------------
feature cv07 { # Character Variant 7 (cursive beta)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "cursive \03B2"; # English US
name 3 1 0x0809 "cursive \03B2"; # English GB
name 1 0 0 "cursive beta"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B2"; # Greek
name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B2"; # Russian
};
};
lookup BETA_LC_ALT;
} cv07;
#--------------------------------------
feature cv08 { # Character Variant 8 (cursive theta)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "cursive \03B8"; # English US
name 3 1 0x0809 "cursive \03B8"; # English GB
name 1 0 0 "cursive theta"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B8"; # Greek
name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B8"; # Russian
};
};
lookup THETA_LC_ALT;
} cv08;
#--------------------------------------
feature cv09 { # Character Variant 9 (cursive phi)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "cursive \03C6"; # English US
name 3 1 0x0809 "cursive \03C6"; # English GB
name 1 0 0 "cursive phi"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03C6"; # Greek
name 3 1 0x0419 "\0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03C6"; # Russian
};
};
lookup PHI_LC_ALT;
} cv09;
#--------------------------------------
feature cv10 { # Character Variant 10 (Serbian be)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "Serbian \03C6"; # English US
name 3 1 0x0809 "Serbian \03C6"; # English GB
name 1 0 0 "Serbian be"; # Mac English
name 3 1 0x0408 "\03A3\03AD\03C1\03B2\03B9\03BA\03BF \0431"; # Greek
name 3 1 0x0419 "\0441\0435\0440\0431\0441\043A\0438\0439 \0431"; # Russian
};
};
lookup BE_LC_SRB;
} cv10;
#--------------------------------------
feature cv11 { # Character Variant 11 (Cyrillic breve)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "Cyrillic breve [\02D8]"; # English US
name 3 1 0x0809 "Cyrillic breve [\02D8]"; # English GB
name 1 0 0 "Cyrillic breve"; # Mac English
name 3 1 0x0408 "\03BA\03C5\03C1\03B9\03BB\03BB\03B9\03BA\03CC \03B2\03C1\03B1\03C7\03CD [\02D8]"; # Greek
name 3 1 0x0419 "\043A\0438\0440\0438\043B\043B\0438\0447\0435\0441\043A\0430\044F \043A\0440\0430\0442\043A\0430 [\02D8]"; # Russian
};
};
lookup BREVE_CYR;
} cv11;
#--------------------------------------
feature cv12 { # Character Variant 12 (slashed zero)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "slashed zero [0]"; # English US
name 3 1 0x0809 "slashed zero [0]"; # English GB
name 1 0 0 "slashed zero [0]"; # Mac English
name 3 1 0x0408 "\03BC\03B7\03B4\03AD\03BD \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [0]"; # Greek
name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \043D\043E\043B\044C [0]"; # Russian
};
};
lookup ZERO_SLASH;
} cv12;
#--------------------------------------
feature cv14 { # Character Variant 14 (typographic hyphen)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "typographic hyphen [-]"; # English US
name 3 1 0x0809 "typographic hyphen [-]"; # English GB
name 1 0 0 "typographic hyphen [-]"; # Mac English
name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03AE \03C0\03B1\03CD\03BB\03B1 [-]"; # Greek
name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0438\0439 \0434\0435\0444\0438\0441 [-]"; # Russian
};
};
lookup HYPHEN_ALT;
} cv14;
#--------------------------------------
feature cv15 { # Character Variant 15 (typographic asterisk)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "typographic asterisk [*]"; # English US
name 3 1 0x0809 "typographic asterisk [*]"; # English GB
name 1 0 0 "typographic asterisk [*]"; # Mac English
name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03BF\03C2 \03B1\03C3\03C4\03B5\03C1\03AF\03C3\03BA\03BF\03C2 [*]"; # Greek
name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0430\044F \0437\0432\0435\0437\0434\043E\0447\043A\0430 [*]"; # Russian
};
};
lookup ASTERISK_ALT;
} cv15;
#--------------------------------------
feature cv16 { # Character Variant 16 (barred dollar sign)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "slashed dollar sign [$]"; # English US
name 3 1 0x0809 "slashed dollar sign [$]"; # English GB
name 1 0 0 "slashed dollar sign [$]"; # Mac English
name 3 1 0x0408 "\03C3\03CD\03BC\03B2\03BF\03BB\03BF \03C4\03BF\03C5 \03B4\03BF\03BB\03B1\03C1\03AF\03BF\03C5 \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [$]"; # Greek
name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \0437\043D\0430\043A \0434\043E\043B\043B\0430\0440\0430 [$]"; # Russian
};
};
lookup DOLLAR_ALT;
} cv16;
#--------------------------------------
feature cv17 { # Character Variant 17 (alternate numeral one)
cvParameters {
FeatUILabelNameID {
name 3 1 0x0409 "alternate numeral one [1]"; # English US
name 3 1 0x0809 "alternate numeral one [1]"; # English GB
name 1 0 0 "alternate numeral one [1]"; # Mac English
# name 3 1 0x0408 "XXX"; # Greek
# name 3 1 0x0419 "XXX"; # Russian
};
};
lookup ONE_ALT;
} cv17;
#--------------------------------------
feature numr { # Numerators
lookup NUMR {
sub @FIGURES_LINING by @FIGURES_NUMERATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_NUMERATOR;
sub one.a by one.numr;
} NUMR;
} numr;
#--------------------------------------
feature dnom { # Denominators
sub @FIGURES_LINING by @FIGURES_DENOMINATOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_DENOMINATOR;
sub one.a by one.dnom;
} dnom;
#--------------------------------------
feature frac { # Fractions
@SPACE_DEFAULT = [space nbspace];
@SPACE_FRAC = [space.frac nbspace.frac];
@SLASH = [slash.frac fraction divisionslash];
lookup NUMR;
sub slash by slash.frac;
sub @FIGURES_NUMERATOR @SPACE_DEFAULT' by @SPACE_FRAC;
lookup ADJUST_WIDTHS_FRAC {
pos @SLASH <-300 0 -600 0>;
} ADJUST_WIDTHS_FRAC;
sub [fraction divisionslash slash.frac @FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR] [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
sub @FIGURES_DENOMINATOR @SPACE_FRAC [@FIGURES_NUMERATOR @PUNCTUATION_NUMERATOR]' by [@FIGURES_DENOMINATOR @PUNCTUATION_DENOMINATOR];
} frac;
#--------------------------------------
feature ordn {
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [egrave eacute schwa] by [egrave.sups eacute.sups schwa.sups];
} SUPERIOR_LETTERS_MINISCULE;
} ordn;
#--------------------------------------
feature sups { # Superscript
lookup SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
sub one.a by one.sups;
} SUPERIOR_NUMERALS_SORTS;
lookup SUPERIOR_SORTS {
sub [colon hyphen endash emdash] by [colon.sups hyphen.sups endash.sups emdash.sups];
} SUPERIOR_SORTS;
} sups;
#--------------------------------------
feature subs { # Subscript
lookup INFERIOR {
sub @FIGURES_LINING by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
sub one.a by one.subs;
} INFERIOR;
} subs;
#--------------------------------------
feature sinf { # Scientific Inferiors
lookup INFERIOR;
} sinf;
#--------------------------------------
feature onum { # Oldstyle (Text) Figures
sub @FIGURES_LINING by @FIGURES_OLDSTYLE;
sub one.a by one.ao;
} onum;
#--------------------------------------
feature case { # Case-Sensitive Forms
sub @MARKS_CMB_ALL by @MARKS_CMB_ALL_CASE;
sub @FIGURES_LINING by @FIGURES_CASE;
sub @FIGURES_OLDSTYLE by @FIGURES_CASE;
sub one.a by one.ac;
sub ijacute by IJacute;
sub at by at.case;
sub anoteleia by anoteleia.cap;
} case;
#--------------------------------------
feature ss01 { # Stylistic Set 1 (typographic alternates)
featureNames {
name 3 1 0x0409 "typographic alternates [-,*]"; # English US
name 3 1 0x0809 "typographic alternates [-,*]"; # English GB
name 1 0 0 "typographic alternates [-,*]"; # Mac English
name 3 1 0x0408 "\03C4\03C5\03C0\03BF\03B3\03C1\03B1\03C6\03B9\03BA\03AC \03B5\03BD\03B1\03BB\03BB\03B1\03BA\03C4\03B9\03BA\03AC [-,*]"; # Greek
name 3 1 0x0419 "\0442\0438\043F\043E\0433\0440\0430\0444\0441\043A\0438\0435 \0437\0430\043C\0435\0441\0442\0438\0442\0435\043B\0438 [-,*]"; # Russian
};
lookup HYPHEN_ALT;
lookup ASTERISK_ALT;
} ss01;
#--------------------------------------
feature ss02 { # Stylistic Set 2 (alternate a, cursive beta)
featureNames {
name 3 1 0x0409 "simple a, cursive \03B2"; # English US
name 3 1 0x0809 "simple a, cursive \03B2"; # English GB
name 1 0 0 "simple a, cursive beta"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B2, \03B1\03C0\03BB\03CC a"; # Greek
name 3 1 0x0419 "\043F\0440\043E\0441\0442\043E\0439 \0430, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B2"; # Russian
};
lookup A_LC_ALT;
lookup BETA_LC_ALT;
} ss02;
#--------------------------------------
feature ss03 { # Stylistic Set 3 (alternate g, cursive theta, Serbian be)
featureNames {
name 3 1 0x0409 "simple g, cursive \03B8, Serbian \0431"; # English US
name 3 1 0x0809 "simple g, cursive \03B8, Serbian \0431"; # English GB
name 1 0 0 "simple g, cursive theta, Serbian be"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03B8, \03B1\03C0\03BB\03CC g, \03A3\03AD\03C1\03B2\03B9\03BA\03BF \0431"; # Greek
name 3 1 0x0419 "\0441\0435\0440\0431\0441\043A\0438\0439 \0431, \043F\0440\043E\0441\0442\043E\0439 g, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03B8"; # Russian
};
lookup G_LC_ALT;
lookup THETA_LC_ALT;
lookup BE_LC_SRB;
} ss03;
#--------------------------------------
feature ss04 { # Stylistic Set 4 (alternate i)
featureNames {
name 3 1 0x0409 "serifed i & l"; # English US
name 3 1 0x0809 "serifed i & l"; # English GB
name 1 0 0 "serifed i & l"; # Mac English
name 3 1 0x0408 "i & l \03BC\03B5 \03B1\03BA\03C1\03B5\03BC\03CC\03BD\03B5\03C2"; # Greek
name 3 1 0x0419 "\0456 \0438 \04CF \0441 \0437\0430\0441\0435\0447\043A\0430\043C\0438"; # Russian
};
lookup I_LC_ALT;
} ss04;
#--------------------------------------
feature ss05 { # Stylistic Set 5 (alternate Sami uppercase Eng, cursive phi)
featureNames {
name 3 1 0x0409 "Sami \014A, cursive \03C6"; # English US
name 3 1 0x0809 "Sami \014A, cursive \03C6"; # English GB
name 1 0 0 "Sami Eng, cursive phi"; # Mac English
name 3 1 0x0408 "\03C1\03AD\03C9\03BD \03C6, \03A3\03AC\03BC\03B7 \014A"; # Greek
name 3 1 0x0419 "\0441\0430\0430\043C\0441\043A\0438\0439 \014A, \0441\043A\043E\0440\043E\043F\0438\0441\043D\044B\0439 \03C6"; # Russian
};
lookup ENG_UC_SAMI;
lookup PHI_LC_ALT;
} ss05;
#--------------------------------------
feature ss06 { # Stylistic Set 6 (alternate dollar sign)
featureNames {
name 3 1 0x0409 "slashed dollar sign [$]"; # English US
name 3 1 0x0809 "slashed dollar sign [$]"; # English GB
name 1 0 0 "slashed dollar sign [$]"; # Mac English
name 3 1 0x0408 "\03C3\03CD\03BC\03B2\03BF\03BB\03BF \03C4\03BF\03C5 \03B4\03BF\03BB\03B1\03C1\03AF\03BF\03C5 \03BC\03B5 \03BA\03AC\03B8\03B5\03C4\03BF [$]"; # Greek
name 3 1 0x0419 "\0437\0430\0447\0435\0440\043A\043D\0443\0442\044B\0439 \0437\043D\0430\043A \0434\043E\043B\043B\0430\0440\0430 [$]"; # Russian
};
lookup DOLLAR_ALT;
} ss06;
#--------------------------------------
feature ss07 { # Stylistic Set 7 (alternate numeral one)
featureNames {
name 3 1 0x0409 "alternate numeral one [1]"; # English US
name 3 1 0x0809 "alternate numeral one [1]"; # English GB
name 1 0 0 "alternate numeral one [1]"; # Mac English
# name 3 1 0x0408 "XXX"; # Greek
# name 3 1 0x0419 "XXX"; # Russian
};
lookup ONE_ALT_FULL {
sub [one one.onum one.cap] by [one.a one.ao one.ac];
} ONE_ALT_FULL;
} ss07;
#--------------------------------------
feature zero {
lookup ZERO_SLASH;
} zero;
#--------------------------------------
feature salt { # Stylistic Alternates
lookup A_LC_ALT;
lookup G_LC_ALT;
lookup I_LC_ALT;
lookup ENG_UC_SAMI;
lookup BETA_LC_ALT;
lookup THETA_LC_ALT;
lookup PHI_LC_ALT; #!!!
lookup ZERO_SLASH;
lookup HYPHEN_ALT;
lookup ASTERISK_ALT;
lookup DOLLAR_ALT;
lookup ONE_ALT_FULL;
} salt;
#-------------------------------------------
feature size {
parameters 10.0 0; # design size, subfamily
} size;