forked from adobe-fonts/source-sans
-
Notifications
You must be signed in to change notification settings - Fork 5
/
familyGSUB.fea
1922 lines (1704 loc) · 98.2 KB
/
familyGSUB.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
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# inlcuded by /SourceSans3/features.fea
@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_ABOVE = [ Aacute Abreve Abreveacute Abrevegrave Abrevehoi Abrevetilde Acaron Adblgrave Adot Acircumflex Acircumflexacute Acircumflexgrave Acircumflexhoi Acircumflextilde Adieresis Agrave Ahoi Amacron Aogonekacute Aring Aringacute Atilde AEacute AEmacron Bdotaccent Cacute Ccaron Ccircumflex Cdotaccent Dcaron Ddotaccent Eacute Ebreve Ecaron Edblgrave Ecircumflex Ecircumflexacute Ecircumflexgrave Ecircumflexhoi Ecircumflextilde Edieresis Edotaccent Egrave Ehoi Emacron Emacronacute Eogonekacute Etilde Fdotaccent Gacute Gbreve Gcaron Gcircumflex Gdotaccent Gmacron Gtilde Hcircumflex Hdieresis Hdot Hcaron Iacute Ibreve Icaron Idblgrave Icircumflex Idieresis Igrave Ihoi Imacron Iogonekacute Itilde Jcircumflex Jcaron Lacute Lcaron Macute Mdotaccent Nacute Ncaron Ndotaccent Ngrave Ntilde Oacute Obreve Ocaron Odblgrave Ocircumflex Ocircumflexacute Ocircumflexgrave Ocircumflexhoi Ocircumflextilde Odieresis Ograve Ohoi Ohornacute Ohorngrave Ohornhoi Ohorntilde Ohungarumlaut Omacron Omacronacute Oogonekacute Otilde Pdotaccent Racute Rcaron Rdotaccent Sacute Scaron Scarondot Scircumflex Sdotaccent Tcaron Tdotaccent Uacute Ubreve Ucaron Ucircumflex Udieresis Udieresisacute Udieresiscaron Udieresisgrave Udieresismacron Ugrave Uhoi Uhornacute Uhorngrave Uhornhoi Uhorntilde Uhungarumlaut Umacron Uogonekacute Uring Utilde Wacute Wcircumflex Wdieresis Wgrave Yacute Ycircumflex Ydieresis Ydotaccent Ygrave Yhoi Ytilde Zacute Zcaron Zdotaccent Zcircumflex Ezhcaron ];
@LETTERS_MAJUSCULE_LATIN_ACCENTED_BELOW = [ Adotbelow Blinebelow Ccedilla Ddotbelow Dlinebelow Dcedilla Edotbelow Gcommaaccent Hbrevebelow Hdotbelow Hcedilla Hlinebelow Idotbelow Kcommaaccent Kdotbelow Klinebelow Lcommaaccent Ldotbelow Llinebelow Mdotbelow Ncommaaccent Ndotbelow Nlinebelow Odotbelow Ohorndotbelow Rcommaaccent Rdotbelow Rlinebelow Scedilla Scommaaccent Sdotbelow Tcedilla Tcommaaccent Tdotbelow Tlinebelow Tdieresis Udotbelow Uhorndotbelow Udieresisbelow Vdotbelow Ydotbelow Zdotbelow Zlinebelow ];
@LETTERS_MAJUSCULE_LATIN_ACCENTED_BOTH = [ Abrevedotbelow Acircumflexdotbelow Ecircumflexdotbelow Ldotbelowmacron Ocircumflexdotbelow Rdotbelowmacron ];
@LETTERS_MAJUSCULE_LATIN_ACCENTED_ALL = [ @LETTERS_MAJUSCULE_LATIN_ACCENTED_ABOVE @LETTERS_MAJUSCULE_LATIN_ACCENTED_BELOW @LETTERS_MAJUSCULE_LATIN_ACCENTED_BOTH ];
@LETTERS_MAJUSCULE_LATIN_ADDL = [ Aogonek AE Astroke Bstroke Bhook Cstroke Dcroat Dhook Eogonek Eturned Eopen Eopenogonek Ghook Gstroke Hbar Istroke Iogonek Jstroke Lslash Lbar Lbardbl Lmiddletilde Lbelt Ldot Lgeminada Oslash Oslashacute Ohorn Oogonek OE Vturned Oopen OO OU Tbar Tstroke Uhorn Uogonek Ubar Eth Thorn Wynn Yogh Ezh Schwa Eng Nlong IJ IJacute Dinsular Finsular Ginsular Ginsularturned Lturned Rinsular Rrotunda Sinsular Tinsular Ettironian That Gammalatin Iotalatin Lambda.latin Upsilonlatin Chilatin Lambdabar Glottalstop AlefEgypt AinEgypt ];
@LETTERS_MAJUSCULE_LATIN_ALTERNATES = [ Aogonek.d Eogonek.d ];
@LETTERS_MAJUSCULE_LATIN_ALL = [ @LETTERS_MAJUSCULE_LATIN_BASIC @LETTERS_MAJUSCULE_LATIN_ACCENTED_ALL @LETTERS_MAJUSCULE_LATIN_ADDL @LETTERS_MAJUSCULE_LATIN_ALTERNATES Idotaccent ];
@LETTERS_MAJUSCULE_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_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_ABOVE = [ aacute abreve abreveacute abrevegrave abrevehoi abrevetilde acaron adblgrave adot acircumflex acircumflexacute acircumflexgrave acircumflexhoi acircumflextilde adieresis agrave ahoi amacron aogonekacute aring aringacute atilde aeacute aemacron bdotaccent cacute ccaron ccircumflex cdotaccent dcaron ddotaccent eacute ebreve ecaron edblgrave ecircumflex ecircumflexacute ecircumflexgrave ecircumflexhoi ecircumflextilde edieresis edotaccent egrave ehoi emacron emacronacute eogonekacute etilde fdotaccent gacute gbreve gcaron gcircumflex gdotaccent gmacron gtilde hcircumflex hdieresis hdot hcaron iacute ibreve icaron idblgrave icircumflex idieresis igrave ihoi imacron iogonekacute itilde jcircumflex jcaron lacute lcaron macute mdotaccent nacute ncaron ndotaccent ngrave ntilde oacute obreve ocaron odblgrave ocircumflex ocircumflexacute ocircumflexgrave ocircumflexhoi ocircumflextilde odieresis ograve ohoi ohornacute ohorngrave ohornhoi ohorntilde ohungarumlaut omacron omacronacute oogonekacute otilde pdotaccent racute rcaron rdotaccent sacute scaron scarondot scircumflex sdotaccent tcaron tdotaccent uacute ubreve ucaron ucircumflex udieresis udieresisacute udieresiscaron udieresisgrave udieresismacron ugrave uhoi uhornacute uhorngrave uhornhoi uhorntilde uhungarumlaut umacron uogonekacute uring utilde wacute wcircumflex wdieresis wgrave yacute ycircumflex ydieresis ydotaccent ygrave yhoi ytilde zacute zcaron zdotaccent zcircumflex ezhcaron ];
@LETTERS_MINISCULE_LATIN_ACCENTED_BELOW = [ adotbelow blinebelow ccedilla ddotbelow dlinebelow dcedilla edotbelow gcommaaccent hbrevebelow hdotbelow hcedilla hlinebelow idotbelow kcommaaccent kdotbelow klinebelow lcommaaccent ldotbelow llinebelow mdotbelow ncommaaccent ndotbelow nlinebelow odotbelow ohorndotbelow rcommaaccent rdotbelow rlinebelow scedilla scommaaccent sdotbelow tcedilla tcommaaccent tdotbelow tlinebelow tdieresis udotbelow uhorndotbelow udieresisbelow vdotbelow ydotbelow zdotbelow zlinebelow ];
@LETTERS_MINISCULE_LATIN_ACCENTED_BOTH = [ abrevedotbelow acircumflexdotbelow ecircumflexdotbelow ldotbelowmacron ocircumflexdotbelow rdotbelowmacron ];
@LETTERS_MINISCULE_LATIN_ACCENTED_ALL = [ @LETTERS_MINISCULE_LATIN_ACCENTED_ABOVE @LETTERS_MINISCULE_LATIN_ACCENTED_BELOW @LETTERS_MINISCULE_LATIN_ACCENTED_BOTH ];
@LETTERS_MINISCULE_LATIN_ADDL = [ aogonek ae astroke bstroke bhook cstroke dcroat dhook eogonek eturned eopen eopenogonek ghook gstroke hbar istroke iogonek jstroke lslash lbar lbardbl lmiddletilde lbelt ldot lgeminada oslash oslashacute ohorn oogonek oe vturned oopen oo ou tbar tstroke uhorn uogonek ubar eth thorn wynn yogh ezh schwa eng nlong ij ijacute dinsular finsular ginsular ginsularturned lturned rinsular rrotunda sinsular tinsular ettironian that gammalatin iotalatin lambda.latin upsilonlatin chilatin lambdabar glottalstoplatin alefEgypt ainEgypt ];
@LETTERS_MINISCULE_LATIN_ALTERNATES = [ aogonek.d eogonek.d ];
@LETTERS_MINISCULE_LATIN_ALL = [ @LETTERS_MINISCULE_LATIN_BASIC @LETTERS_MINISCULE_LATIN_ACCENTED_ALL @LETTERS_MINISCULE_LATIN_ADDL @LETTERS_MINISCULE_LATIN_ALTERNATES ];
@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 k l t eth thorn bstroke bhook dcroat hbar lslash longs tbar dtail dhook hhook henghook lmiddletilde lbelt lretroflex lezh philatin rlonglegturned esh dotlessjstrokehook tretroflex yturned dzed dezh dzcurl ts tesh tccurl dzretroflex tshook glottalstop glottalstopreversed glottalstopstroke glottalstopstrokereversed clickalveolar clickretroflex clickbilabial l.a lslash.a ];
@LETTERS_LATIN_ALL = [ @LETTERS_MAJUSCULE_LATIN_ALL @LETTERS_MINISCULE_LATIN_ALL ];
@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 Sho Kai ];
@LETTERS_MAJUSCULE_GREEK_TONOS = [ Alphatonos Epsilontonos Etatonos Iotatonos Omicrontonos Upsilontonos Omegatonos ];
@LETTERS_MAJUSCULE_GREEK_DIERESIS = [ Iotadieresis Upsilondieresis ];
@LETTERS_MAJUSCULE_GREEK_POLY = [ Alphalenis Alphaasper Alphagrave Alphaacute Alphalenisgrave Alphaaspergrave Alphalenisacute Alphaasperacute Alphalenistilde Alphaaspertilde Alphabreve Alphamacron Epsilonlenis Epsilonasper Epsilongrave Epsilonacute Epsilonlenisgrave Epsilonaspergrave Epsilonlenisacute Epsilonasperacute Etalenis Etaasper Etagrave Etaacute Etalenisgrave Etaaspergrave Etalenisacute Etaasperacute Etalenistilde Etaaspertilde Iotalenis Iotaasper Iotagrave Iotaacute Iotalenisgrave Iotaaspergrave Iotalenisacute Iotaasperacute Iotalenistilde Iotaaspertilde Iotabreve Iotamacron Omicronlenis Omicronasper Omicrongrave Omicronacute Omicronlenisgrave Omicronaspergrave Omicronlenisacute Omicronasperacute Rhoasper Upsilonasper Upsilongrave Upsilonacute Upsilonaspergrave Upsilonasperacute Upsilonaspertilde Upsilonbreve Upsilonmacron Omegalenis Omegaasper Omegagrave Omegaacute Omegalenisgrave Omegaaspergrave Omegalenisacute Omegaasperacute Omegalenistilde Omegaaspertilde Alphaiotasub Alphaiotasublenis Alphaiotasubasper Alphaiotasublenisgrave Alphaiotasubaspergrave Alphaiotasublenisacute Alphaiotasubasperacute Alphaiotasublenistilde Alphaiotasubaspertilde Etaiotasub Etaiotasublenis Etaiotasubasper Etaiotasublenisgrave Etaiotasubaspergrave Etaiotasublenisacute Etaiotasubasperacute Etaiotasublenistilde Etaiotasubaspertilde Omegaiotasub Omegaiotasublenis Omegaiotasubasper Omegaiotasublenisgrave Omegaiotasubaspergrave Omegaiotasublenisacute Omegaiotasubasperacute Omegaiotasublenistilde Omegaiotasubaspertilde ];
@LETTERS_MAJUSCULE_GREEK_ALL = [ @LETTERS_MAJUSCULE_GREEK_BASIC @LETTERS_MAJUSCULE_GREEK_TONOS @LETTERS_MAJUSCULE_GREEK_DIERESIS @LETTERS_MAJUSCULE_GREEK_POLY ];
@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 sho kai ];
@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_POLY = [ alphalenis alphaasper alphagrave alphaacute alphalenisgrave alphaaspergrave alphalenisacute alphaasperacute alphalenistilde alphaaspertilde alphabreve alphamacron alphatilde epsilonlenis epsilonasper epsilongrave epsilonacute epsilonlenisgrave epsilonaspergrave epsilonlenisacute epsilonasperacute etalenis etaasper etagrave etaacute etalenisgrave etaaspergrave etalenisacute etaasperacute etalenistilde etaaspertilde etatilde iotalenis iotaasper iotagrave iotaacute iotalenisgrave iotaaspergrave iotalenisacute iotaasperacute iotalenistilde iotaaspertilde iotabreve iotamacron iotatilde iotadieresisgrave iotadieresisacute iotadieresistilde omicronlenis omicronasper omicrongrave omicronacute omicronlenisgrave omicronaspergrave omicronlenisacute omicronasperacute rholenis rhoasper upsilonlenis upsilonasper upsilongrave upsilonacute upsilonlenisgrave upsilonaspergrave upsilonlenisacute upsilonasperacute upsilonlenistilde upsilonaspertilde upsilontilde upsilonbreve upsilonmacron upsilondieresisgrave upsilondieresisacute upsilondieresistilde omegalenis omegaasper omegagrave omegaacute omegalenisgrave omegaaspergrave omegalenisacute omegaasperacute omegalenistilde omegaaspertilde omegatilde alphaiotasub alphaiotasublenis alphaiotasubasper alphaiotasubgrave alphaiotasubacute alphaiotasublenisgrave alphaiotasubaspergrave alphaiotasublenisacute alphaiotasubasperacute alphaiotasublenistilde alphaiotasubaspertilde alphaiotasubtilde etaiotasub etaiotasublenis etaiotasubasper etaiotasubgrave etaiotasubacute etaiotasublenisgrave etaiotasubaspergrave etaiotasublenisacute etaiotasubasperacute etaiotasublenistilde etaiotasubaspertilde etaiotasubtilde omegaiotasub omegaiotasublenis omegaiotasubasper omegaiotasubgrave omegaiotasubacute omegaiotasublenisgrave omegaiotasubaspergrave omegaiotasublenisacute omegaiotasubasperacute omegaiotasublenistilde omegaiotasubaspertilde omegaiotasubtilde ];
@LETTERS_MINISCULE_GREEK_ALL = [ @LETTERS_MINISCULE_GREEK_BASIC @LETTERS_MINISCULE_GREEK_TONOS @LETTERS_MINISCULE_GREEK_DIERESIS @LETTERS_MINISCULE_GREEK_DIERESISTONOS @LETTERS_MINISCULE_GREEK_POLY ];
@IOTA_MODIFIERS_GREEK = [ iotasubscriptcmb iotaadscript ];
@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 Ghedescender Zhedescender Zedescender Kadescender Kabashkir Kahook Endescender Enhook Esdescender Ustraight Ustraightstroke Hadescender Chedescender Shha Palochka Aie Schwacyr Obarcyr ];
@LETTERS_MAJUSCULE_CYRILLIC_ACCENTED = [ Ishort Iegrave Io Dje Gje Yi Yi.a Kje Igravecyr Ushort Zhebreve Abrevecyr Iebreve Imacroncyr Odieresiscyr Umacroncyr Uacutedblcyr ];
@LETTERS_MAJUSCULE_CYRILLIC_ALTERNATES = [ De.a Zhe.a Ka.a El.a Ef.a Lje.a Kje.a Zhedescender.a Kadescender.a Kabashkir.a Kahook.a Zhebreve.a ];
@LETTERS_MAJUSCULE_CYRILLIC_ALL = [ @LETTERS_MAJUSCULE_CYRILLIC_BASIC @LETTERS_MAJUSCULE_CYRILLIC_ACCENTED @LETTERS_MAJUSCULE_CYRILLIC_ALTERNATES ];
@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 ghedescender zhedescender zedescender kadescender kabashkir kahook endescender enhook esdescender ustraight ustraightstroke hadescender chedescender shha palochka aie schwacyr obarcyr ];
@LETTERS_MINISCULE_CYRILLIC_ACCENTED = [ ishort iegrave io dje gje yi yi.a kje igravecyr ushort zhebreve abrevecyr iebreve imacroncyr odieresiscyr umacroncyr uacutedblcyr ];
@LETTERS_MINISCULE_CYRILLIC_ALTERNATES = [ de.a zhe.a ka.a el.a ef.a lje.a kje.a zhedescender.a kadescender.a kabashkir.a kahook.a zhebreve.a ];
@LETTERS_MINISCULE_CYRILLIC_ALL = [ @LETTERS_MINISCULE_CYRILLIC_BASIC @LETTERS_MINISCULE_CYRILLIC_ACCENTED @LETTERS_MINISCULE_CYRILLIC_ALTERNATES ];
@LETTERS_MAJUSCULE_ALL = [ @LETTERS_MAJUSCULE_LATIN_ALL @LETTERS_MAJUSCULE_GREEK_ALL @LETTERS_MAJUSCULE_CYRILLIC_ALL ];
@LETTERS_MAJUSCULE_ALL_MINISCULE_ASCENDERS = [ @LETTERS_MAJUSCULE_ALL @LETTERS_MINISCULE_LATIN_ASCENDERS theta ];
@MARKS_CMB_ABOVE = [ gravecmb variacmb acutecmb tonoscmb circumflexcmb tildecmb macroncmb overlinecmb brevecmb brevecmb.cyr dotaccentcmb dieresiscmb hoicmb ringcmb hungarumlautcmb caroncmb verticallineabovecmb dblgravecmb breveinvertedcmb commaturnedabovecmb aspercmb commaabovecmb commaaboverightcmb leniscmb leftangleabovecmb horncmb cedillacmb ogonekcmb tildeoverlaycmb xabovecmb perispomenicmb koroniscmb dialytikatonoscmb ringhalfrightabovecmb dotaboverightcmb ];
@MARKS_CMB_BELOW = [ lefttackbelowcmb righttackbelowcmb ringhalfleftbelowcmb uptackbelowcmb downtackbelowcmb plusbelowcmb minusbelowcmb dotbelowcmb dieresisbelowcmb ringbelowcmb commabelowcmb verticallinebelowcmb bridgebelowcmb caronbelowcmb brevebelowcmb breveinvertedbelowcmb tildebelowcmb macronbelowcmb ringhalfrightbelowcmb bridgeinvertedbelowcmb squarebelowcmb seagullbelowcmb iotasubscriptcmb ];
@MARKS_LIG_ABOVE = [ circumflexgrave circumflexacute circumflextilde circumflexmacron circumflexbreve circumflexhoi circumflexcaron macrongrave macronacute brevegrave breveacute brevetilde brevehoi dieresisgrave dieresisacute dieresistilde dieresismacron dieresiscaron dialytikatonoscmb dialytikagravecmb ringacute carondotaccent caroncomma aspergravecmb asperacutecmb aspertildecmb lenisgravecmb lenisacutecmb lenistildecmb ];
@MARKS_CMB_ALL = [ @MARKS_CMB_ABOVE @MARKS_CMB_BELOW @MARKS_LIG_ABOVE ];
@MARKS_CMB_LC = [ gravecmb acutecmb circumflexcmb tildecmb macroncmb overlinecmb brevecmb brevecmb.cyr dotaccentcmb dieresiscmb hoicmb candrabinducmb ringcmb hungarumlautcmb caroncmb verticallineabovecmb dblgravecmb breveinvertedcmb cedillacmb ogonekcmb perispomenicmb ringhalfrightabovecmb dotaboverightcmb circumflexgrave circumflexacute circumflextilde circumflexmacron circumflexbreve circumflexhoi circumflexcaron macrongrave macronacute brevegrave breveacute brevetilde brevehoi dieresisgrave dieresisacute dieresismacron dieresiscaron ringacute carondotaccent caroncomma commaturnedabovecmb commaabovecmb commaaboverightcmb ];
@MARKS_CMB_CASE = [ gravecmb.cap acutecmb.cap circumflexcmb.cap tildecmb.cap macroncmb.cap overlinecmb.cap brevecmb.cap brevecmb.cyrcap dotaccentcmb.cap dieresiscmb.cap hoicmb.cap candrabinducmb.cap ringcmb.cap hungarumlautcmb.cap caroncmb.cap verticallineabovecmb.cap dblgravecmb.cap breveinvertedcmb.cap cedillacmb.cap ogonekcmb.cap perispomenicmb.cap ringhalfrightabovecmb.cap dotaboverightcmb.cap circumflexgrave.cap circumflexacute.cap circumflextilde.cap circumflexmacron.cap circumflexbreve.cap circumflexhoi.cap circumflexcaron.cap macrongrave.cap macronacute.cap brevegrave.cap breveacute.cap brevetilde.cap brevehoi.cap dieresisgrave.cap dieresisacute.cap dieresismacron.cap dieresiscaron.cap ringacute.cap carondotaccent.cap caroncomma.cap commaturnedabovecmb.cap commaabovecmb.cap commaaboverightcmb.cap ];
@FIGURES_LINING_TABULAR = [ zero one two three four five six seven eight nine ];
@FIGURES_LINING_PROPORTIONAL = [ zero.pnum one.pnum two.pnum three.pnum four.pnum five.pnum six.pnum seven.pnum eight.pnum nine.pnum ];
@FIGURES_OLDSTYLE_PROPORTIONAL = [ zero.onum one.onum two.onum three.onum four.onum five.onum six.onum seven.onum eight.onum nine.onum ];
@FIGURES_OLDSTYLE_TABULAR = [ zero.tnum one.tnum two.tnum three.tnum four.tnum five.tnum six.tnum seven.tnum eight.tnum nine.tnum ];
@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 ];
@FIGURES_CAP = [ zero.cap one.cap two.cap three.cap four.cap five.cap six.cap seven.cap eight.cap nine.cap ];
@PUNCTUATION_FOR_SMALLCAPS = [ ampersand exclam question exclamdown questiondown interrobang interrobangdown parenleft parenright bracketleft bracketright braceleft braceright hyphen endash emdash quoteleft quoteright quotedblleft quotedblright quotesingle quotedbl ];
@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 ];
#--------------------------------------
languagesystem DFLT dflt; # Default
languagesystem latn dflt; # Latin default
languagesystem latn ATH; # Athapaskan/Athabaskan
languagesystem latn AZE; # Azeri
languagesystem latn CHP; # Dënësųłınë́ (Chipewyan)
languagesystem latn CRT; # Crimean Tatar
languagesystem latn NAV; # NavajoDiné Bizaad
languagesystem latn NSM; # Northern Sami
languagesystem latn SKS; # Skolt Sami
languagesystem latn SLA; # South(?) Slavey
languagesystem latn TRK; # Turkish
languagesystem latn IPPH; # Phonetic transcription, IPA conventions
languagesystem latn APPH; # Phonetic transcription, Americanist conventions
languagesystem grek dflt; # Greek default
languagesystem grek PGR; # Polytonic Greek
languagesystem cyrl dflt; # Cyrillic default
languagesystem cyrl BGR; # Bulgarian
languagesystem cyrl MKD; # Macedonian
languagesystem cyrl SRB; # Serbian
#--------------------------------------
lookup SUPERIOR_LETTERS_MINISCULE {
sub @LETTERS_MINISCULE_LATIN_BASIC by @LETTERS_MINISCULE_LATIN_SUPERIOR;
sub [ egrave eacute eogonek schwa ] by [ egrave.sups eacute.sups eogonek.sups schwa.sups ];
} SUPERIOR_LETTERS_MINISCULE;
lookup SUPERIOR_LETTERS_MAJUSCULE {
sub @LETTERS_MAJUSCULE_LATIN_BASIC by @LETTERS_MAJUSCULE_LATIN_SUPERIOR;
} SUPERIOR_LETTERS_MAJUSCULE;
lookup SUPERIOR_SORTS {
sub [ colon hyphen endash emdash ] by [ colon.sups hyphen.sups endash.sups emdash.sups ];
} SUPERIOR_SORTS;
lookup SUPERIOR_NUMERALS_SORTS {
sub @FIGURES_LINING_TABULAR by @FIGURES_SUPERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_SUPERIOR;
sub [ plus minus equal ] by [ plus.sups minus.sups equal.sups ];
} SUPERIOR_NUMERALS_SORTS;
lookup INFERIOR {
sub @FIGURES_LINING_TABULAR by @FIGURES_INFERIOR;
sub @PUNCTUATION_FOR_SMALL_FIGURE_STYLES by @PUNCTUATION_INFERIOR;
sub [ plus minus equal ] by [ plus.subs minus.subs equal.subs ];
} INFERIOR;
lookup OLDSTYLE {
sub @FIGURES_LINING_TABULAR by @FIGURES_OLDSTYLE_TABULAR;
sub @FIGURES_LINING_PROPORTIONAL by @FIGURES_OLDSTYLE_PROPORTIONAL;
} OLDSTYLE;
lookup PROPORTIONAL {
sub @FIGURES_LINING_TABULAR by @FIGURES_LINING_PROPORTIONAL;
sub @FIGURES_OLDSTYLE_TABULAR by @FIGURES_OLDSTYLE_PROPORTIONAL;
} PROPORTIONAL;
lookup MARKS_CMB_CASE {
sub @MARKS_CMB_LC by @MARKS_CMB_CASE;
} MARKS_CMB_CASE;
#--------------------------------------
# feature aalt (this comment indicates feature order)
include (../../aalt.fea); # imports aalt feature & IPPH/APPH lookups which differ between upright and italic
#--------------------------------------
lookup DECOMPOSITION {
#Latin
sub Agrave by A gravecmb.cap;
sub Aacute by A acutecmb.cap;
sub Acircumflex by A circumflexcmb.cap;
sub Atilde by A tildecmb.cap;
sub Adieresis by A dieresiscmb.cap;
sub Amacron by A macroncmb.cap;
sub Abreve by A brevecmb.cap;
sub Aring by A ringcmb.cap;
sub Aringacute by A ringcmb.cap acutecmb.cap;
sub Acaron by A caroncmb.cap;
sub Adblgrave by A dblgravecmb.cap;
sub Adot by A dotaccentcmb.cap;
sub Adotbelow by A dotbelowcmb;
sub Ahoi by A hoicmb.cap;
sub Acircumflexacute by A circumflexcmb.cap acutecmb.cap;
sub Acircumflexgrave by A circumflexcmb.cap gravecmb.cap;
sub Acircumflexhoi by A circumflexcmb.cap hoicmb.cap;
sub Acircumflextilde by A circumflexcmb.cap tildecmb.cap;
sub Acircumflexdotbelow by A circumflexcmb.cap dotbelowcmb;
sub Abreveacute by A brevecmb.cap acutecmb.cap;
sub Abrevegrave by A brevecmb.cap gravecmb.cap;
sub Abrevehoi by A brevecmb.cap hoicmb.cap;
sub Abrevetilde by A brevecmb.cap tildecmb.cap;
sub Abrevedotbelow by A brevecmb.cap dotbelowcmb;
sub Aogonekacute by Aogonek acutecmb.cap;
sub AEacute by AE acutecmb.cap;
sub AEmacron by AE macroncmb.cap;
sub Bdotaccent by B dotaccentcmb.cap;
sub Blinebelow by B macronbelowcmb;
sub Ccedilla by C cedillacmb.cap;
sub Cacute by C acutecmb.cap;
sub Ccircumflex by C circumflexcmb.cap;
sub Ccaron by C caroncmb.cap;
sub Cdotaccent by C dotaccentcmb.cap;
sub Dcaron by D caroncmb.cap;
sub Ddotaccent by D dotaccentcmb.cap;
sub Ddotbelow by D dotbelowcmb;
sub Dcedilla by D cedillacmb.cap;
sub Dlinebelow by D macronbelowcmb;
sub Egrave by E gravecmb.cap;
sub Eacute by E acutecmb.cap;
sub Ecircumflex by E circumflexcmb.cap;
sub Ecaron by E caroncmb.cap;
sub Edblgrave by E caroncmb.cap;
sub Edieresis by E dieresiscmb.cap;
sub Emacron by E macroncmb.cap;
sub Ebreve by E brevecmb.cap;
sub Edotaccent by E dotaccentcmb.cap;
sub Edotbelow by E dotbelowcmb;
sub Ehoi by E hoicmb.cap;
sub Etilde by E tildecmb.cap;
sub Ecircumflexacute by E circumflexcmb.cap acutecmb.cap;
sub Ecircumflexgrave by E circumflexcmb.cap gravecmb.cap;
sub Ecircumflexhoi by E circumflexcmb.cap hoicmb.cap;
sub Ecircumflextilde by E circumflexcmb.cap tildecmb.cap;
sub Ecircumflexdotbelow by E circumflexcmb.cap dotbelowcmb;
sub Eogonekacute by Eogonek acutecmb.cap;
sub Emacronacute by E macroncmb.cap acutecmb.cap;
sub Fdotaccent by F dotaccentcmb.cap;
sub Gacute by G acutecmb.cap;
sub Gcircumflex by G circumflexcmb.cap;
sub Gbreve by G brevecmb.cap;
sub Gdotaccent by G dotaccentcmb.cap;
sub Gcommaaccent by G commabelowcmb;
sub Gcaron by G caroncmb.cap;
sub Gmacron by G macroncmb.cap;
sub Gtilde by G tildecmb.cap;
sub Hcircumflex by H circumflexcmb.cap;
sub Hdotbelow by H dotbelowcmb;
sub Hdieresis by H dieresiscmb.cap;
sub Hdot by H dotaccentcmb.cap;
sub Hcaron by H caroncmb.cap;
sub Hcedilla by H cedillacmb.cap;
sub Hbrevebelow by H brevebelowcmb;
sub Hlinebelow by H macronbelowcmb;
sub Igrave by I gravecmb.cap;
sub Iacute by I acutecmb.cap;
sub Icircumflex by I circumflexcmb.cap;
sub Itilde by I tildecmb.cap;
sub Idieresis by I dieresiscmb.cap;
sub Imacron by I macroncmb.cap;
sub Ibreve by I brevecmb.cap;
sub Icaron by I caroncmb.cap;
sub Idblgrave by I caroncmb.cap;
sub Ihoi by I hoicmb.cap;
sub Idotaccent by I dotaccentcmb.cap;
sub Idotbelow by I dotbelowcmb;
sub Iogonekacute by Iogonek acutecmb.cap;
sub Jcircumflex by J circumflexcmb.cap;
sub Jcaron by J caroncmb.cap;
sub Kcommaaccent by K commabelowcmb;
sub Kdotbelow by K dotbelowcmb;
sub Klinebelow by K macronbelowcmb;
sub Lacute by L acutecmb.cap;
sub Lcaron by L caroncmb.cap;
sub Lcommaaccent by L commabelowcmb;
sub Ldotbelow by L dotbelowcmb;
sub Ldotbelowmacron by L dotbelowcmb macroncmb.cap;
sub Llinebelow by L macronbelowcmb;
sub Macute by M acutecmb.cap;
sub Mdotaccent by M dotaccentcmb.cap;
sub Mdotbelow by M dotbelowcmb;
sub Nacute by N acutecmb.cap;
sub Ngrave by N gravecmb.cap;
sub Ncaron by N caroncmb.cap;
sub Ntilde by N tildecmb.cap;
sub Ncommaaccent by N commabelowcmb;
sub Ndotaccent by N dotaccentcmb.cap;
sub Ndotbelow by N dotbelowcmb;
sub Nlinebelow by N macronbelowcmb;
sub Ograve by O gravecmb.cap;
sub Oacute by O acutecmb.cap;
sub Ocircumflex by O circumflexcmb.cap;
sub Otilde by O tildecmb.cap;
sub Odieresis by O dieresiscmb.cap;
sub Omacron by O macroncmb.cap;
sub Obreve by O brevecmb.cap;
sub Ohungarumlaut by O hungarumlautcmb.cap;
sub Ocaron by O caroncmb.cap;
sub Odblgrave by O caroncmb.cap;
sub Odotbelow by O dotbelowcmb;
sub Ohoi by O hoicmb.cap;
sub Ocircumflexacute by O circumflexcmb.cap acutecmb.cap;
sub Ocircumflexgrave by O circumflexcmb.cap gravecmb.cap;
sub Ocircumflexhoi by O circumflexcmb.cap hoicmb.cap;
sub Ocircumflextilde by O circumflexcmb.cap tildecmb.cap;
sub Ocircumflexdotbelow by O circumflexcmb.cap dotbelowcmb;
sub Omacronacute by O macroncmb.cap acutecmb.cap;
sub Oslashacute by Oslash acutecmb.cap;
sub Ohornacute by Ohorn acutecmb.cap;
sub Ohorngrave by Ohorn gravecmb.cap;
sub Ohornhoi by Ohorn hoicmb.cap;
sub Ohorntilde by Ohorn tildecmb.cap;
sub Ohorndotbelow by Ohorn dotbelowcmb;
sub Oogonekacute by Oogonek acutecmb.cap;
sub Pdotaccent by P dotaccentcmb.cap;
sub Racute by R acutecmb.cap;
sub Rcaron by R caroncmb.cap;
sub Rdotaccent by R dotaccentcmb.cap;
sub Rcommaaccent by R commabelowcmb;
sub Rdotbelow by R dotbelowcmb;
sub Rdotbelowmacron by R dotbelowcmb macroncmb.cap;
sub Rlinebelow by R macronbelowcmb;
sub Sacute by S acutecmb.cap;
sub Scircumflex by S circumflexcmb.cap;
sub Scaron by S caroncmb.cap;
sub Scarondot by S caroncmb.cap dotaccentcmb.cap;
sub Scedilla by S cedillacmb.cap;
sub Scommaaccent by S commabelowcmb;
sub Sdotaccent by S dotaccentcmb.cap;
sub Sdotbelow by S dotbelowcmb;
sub Tcaron by T caroncmb.cap;
sub Tdotaccent by T dotaccentcmb.cap;
sub Tcedilla by T cedillacmb.cap;
sub Tcommaaccent by T commabelowcmb;
sub Tdotbelow by T dotbelowcmb;
sub Tlinebelow by T macronbelowcmb;
sub Tdieresis by T dieresiscmb.cap;
sub Ugrave by U gravecmb.cap;
sub Uacute by U acutecmb.cap;
sub Ucircumflex by U circumflexcmb.cap;
sub Utilde by U tildecmb.cap;
sub Udieresis by U dieresiscmb.cap;
sub Umacron by U macroncmb.cap;
sub Ubreve by U brevecmb.cap;
sub Uring by U ringcmb.cap;
sub Uhungarumlaut by U hungarumlautcmb.cap;
sub Ucaron by U caroncmb.cap;
sub Udieresismacron by U dieresiscmb.cap macroncmb.cap;
sub Udieresisacute by U dieresiscmb.cap acutecmb.cap;
sub Udieresiscaron by U dieresiscmb.cap caroncmb.cap;
sub Udieresisgrave by U dieresiscmb.cap gravecmb.cap;
sub Udotbelow by U dotbelowcmb;
sub Uhoi by U hoicmb.cap;
sub Uhornacute by Uhorn acutecmb.cap;
sub Uhorngrave by Uhorn gravecmb.cap;
sub Uhornhoi by Uhorn hoicmb.cap;
sub Uhorntilde by Uhorn tildecmb.cap;
sub Uhorndotbelow by Uhorn dotbelowcmb;
sub Udieresisbelow by U dieresisbelowcmb;
sub Uogonekacute by Uogonek acutecmb.cap;
sub Vdotbelow by V dotbelowcmb;
sub Wgrave by W gravecmb.cap;
sub Wacute by W acutecmb.cap;
sub Wcircumflex by W circumflexcmb.cap;
sub Wdieresis by W dieresiscmb.cap;
sub Ygrave by Y gravecmb.cap;
sub Yacute by Y acutecmb.cap;
sub Ycircumflex by Y circumflexcmb.cap;
sub Ydieresis by Y dieresiscmb.cap;
sub Ydotaccent by Y dotaccentcmb.cap;
sub Ydotbelow by Y dotbelowcmb;
sub Yhoi by Y hoicmb.cap;
sub Ytilde by Y tildecmb.cap;
sub Zacute by Z acutecmb.cap;
sub Zcaron by Z caroncmb.cap;
sub Zdotaccent by Z dotaccentcmb.cap;
sub Zcircumflex by Z circumflexcmb.cap;
sub Zdotbelow by Z dotbelowcmb;
sub Zlinebelow by Z macronbelowcmb;
sub Ezhcaron by Ezh caroncmb.cap;
sub agrave by a gravecmb;
sub aacute by a acutecmb;
sub acircumflex by a circumflexcmb;
sub atilde by a tildecmb;
sub adieresis by a dieresiscmb;
sub amacron by a macroncmb;
sub abreve by a brevecmb;
sub aring by a ringcmb;
sub aringacute by a ringcmb acutecmb;
sub acaron by a caroncmb;
sub adblgrave by a dblgravecmb;
sub adot by a dotaccentcmb;
sub adotbelow by a dotbelowcmb;
sub ahoi by a hoicmb;
sub acircumflexacute by a circumflexcmb acutecmb;
sub acircumflexgrave by a circumflexcmb gravecmb;
sub acircumflexhoi by a circumflexcmb hoicmb;
sub acircumflextilde by a circumflexcmb tildecmb;
sub acircumflexdotbelow by a circumflexcmb dotbelowcmb;
sub abreveacute by a brevecmb acutecmb;
sub abrevegrave by a brevecmb gravecmb;
sub abrevehoi by a brevecmb hoicmb;
sub abrevetilde by a brevecmb tildecmb;
sub abrevedotbelow by a brevecmb dotbelowcmb;
sub aogonekacute by aogonek acutecmb;
sub aeacute by ae acutecmb;
sub aemacron by ae macroncmb;
sub bdotaccent by b dotaccentcmb.cap;
sub blinebelow by b macronbelowcmb;
sub ccedilla by c cedillacmb;
sub cacute by c acutecmb;
sub ccircumflex by c circumflexcmb;
sub ccaron by c caroncmb;
sub cdotaccent by c dotaccentcmb;
sub dcaron by d caroncmb.a;
sub ddotaccent by d dotaccentcmb.cap;
sub ddotbelow by d dotbelowcmb;
sub dcedilla by d cedillacmb;
sub dlinebelow by d macronbelowcmb;
sub egrave by e gravecmb;
sub eacute by e acutecmb;
sub ecircumflex by e circumflexcmb;
sub ecaron by e caroncmb;
sub edblgrave by e dblgravecmb;
sub edieresis by e dieresiscmb;
sub emacron by e macroncmb;
sub ebreve by e brevecmb;
sub edotaccent by e dotaccentcmb;
sub edotbelow by e dotbelowcmb;
sub ehoi by e hoicmb;
sub etilde by e tildecmb;
sub ecircumflexacute by e circumflexcmb acutecmb;
sub ecircumflexgrave by e circumflexcmb gravecmb;
sub ecircumflexhoi by e circumflexcmb hoicmb;
sub ecircumflextilde by e circumflexcmb tildecmb;
sub ecircumflexdotbelow by e circumflexcmb dotbelowcmb;
sub eogonekacute by eogonek acutecmb;
sub emacronacute by e macroncmb acutecmb;
sub fdotaccent by f dotaccentcmb;
sub gacute by g acutecmb;
sub gcircumflex by g circumflexcmb;
sub gbreve by g brevecmb;
sub gdotaccent by g dotaccentcmb;
sub gcommaaccent by g commabelowcmb.a;
sub gcaron by g caroncmb;
sub gmacron by g macroncmb;
sub gtilde by g tildecmb;
sub hcircumflex by h circumflexcmb.cap;
sub hdotbelow by h dotbelowcmb;
sub hdieresis by h dieresiscmb;
sub hdot by h dotaccentcmb;
sub hcaron by h caroncmb;
sub hcedilla by h cedillacmb;
sub hbrevebelow by h brevebelowcmb;
sub hlinebelow by h macronbelowcmb;
sub igrave by dotlessi gravecmb;
sub iacute by dotlessi acutecmb;
sub icircumflex by dotlessi circumflexcmb;
sub itilde by dotlessi tildecmb;
sub idieresis by dotlessi dieresiscmb;
sub imacron by dotlessi macroncmb;
sub ibreve by dotlessi brevecmb;
sub icaron by dotlessi caroncmb;
sub idblgrave by i dblgravecmb;
sub ihoi by dotlessi hoicmb;
sub idotbelow by i dotbelowcmb;
sub iogonekacute by iogonek.x acutecmb;
sub jcircumflex by dotlessj circumflexcmb;
sub jcaron by dotlessj caroncmb;
sub kcommaaccent by k commabelowcmb;
sub kdotbelow by k dotbelowcmb;
sub klinebelow by k macronbelowcmb;
sub lacute by l acutecmb.cap;
sub lcaron by l caroncmb.a;
sub lcommaaccent by l commabelowcmb;
sub ldotbelow by l dotbelowcmb;
sub ldotbelowmacron by l dotbelowcmb macroncmb.cap;
sub llinebelow by l macronbelowcmb;
sub macute by m acutecmb;
sub mdotaccent by m dotaccentcmb;
sub mdotbelow by m dotbelowcmb;
sub nacute by n acutecmb;
sub ngrave by n gravecmb;
sub ncaron by n caroncmb;
sub ntilde by n tildecmb;
sub ncommaaccent by n commabelowcmb;
sub ndotaccent by n dotaccentcmb;
sub ndotbelow by n dotbelowcmb;
sub nlinebelow by n macronbelowcmb;
sub ograve by o gravecmb;
sub oacute by o acutecmb;
sub ocircumflex by o circumflexcmb;
sub otilde by o tildecmb;
sub odieresis by o dieresiscmb;
sub omacron by o macroncmb;
sub obreve by o brevecmb;
sub ohungarumlaut by o hungarumlautcmb;
sub ocaron by o caroncmb;
sub odblgrave by o dblgravecmb;
sub odotbelow by o dotbelowcmb;
sub ohoi by o hoicmb;
sub ocircumflexacute by o circumflexcmb acutecmb;
sub ocircumflexgrave by o circumflexcmb gravecmb;
sub ocircumflexhoi by o circumflexcmb hoicmb;
sub ocircumflextilde by o circumflexcmb tildecmb;
sub ocircumflexdotbelow by o circumflexcmb dotbelowcmb;
sub omacronacute by o macroncmb acutecmb;
sub oslashacute by oslash acutecmb;
sub ohornacute by ohorn acutecmb;
sub ohorngrave by ohorn gravecmb;
sub ohornhoi by ohorn hoicmb;
sub ohorntilde by ohorn tildecmb;
sub ohorndotbelow by ohorn dotbelowcmb;
sub oogonekacute by oogonek acutecmb;
sub pdotaccent by p dotaccentcmb;
sub racute by r acutecmb;
sub rcaron by r caroncmb;
sub rdotaccent by r dotaccentcmb;
sub rcommaaccent by r commabelowcmb;
sub rdotbelow by r dotbelowcmb;
sub rdotbelowmacron by r dotbelowcmb macroncmb;
sub rlinebelow by r macronbelowcmb;
sub sacute by s acutecmb;
sub scircumflex by s circumflexcmb;
sub scaron by s caroncmb;
sub scarondot by s caroncmb dotaccentcmb;
sub scedilla by s cedillacmb;
sub scommaaccent by s commabelowcmb;
sub sdotaccent by s dotaccentcmb;
sub sdotbelow by s dotbelowcmb;
sub tcaron by t caroncmb.a;
sub tdotaccent by t dotaccentcmb;
sub tcedilla by t cedillacmb;
sub tcommaaccent by t commabelowcmb;
sub tdotbelow by t dotbelowcmb;
sub tlinebelow by t macronbelowcmb;
sub tdieresis by t dieresiscmb;
sub ugrave by u gravecmb;
sub uacute by u acutecmb;
sub ucircumflex by u circumflexcmb;
sub utilde by u tildecmb;
sub udieresis by u dieresiscmb;
sub umacron by u macroncmb;
sub ubreve by u brevecmb;
sub uring by u ringcmb;
sub uhungarumlaut by u hungarumlautcmb;
sub ucaron by u caroncmb;
sub udieresismacron by u dieresiscmb macroncmb;
sub udieresisacute by u dieresiscmb acutecmb;
sub udieresiscaron by u dieresiscmb caroncmb;
sub udieresisgrave by u dieresiscmb gravecmb;
sub udotbelow by u dotbelowcmb;
sub uhoi by u hoicmb;
sub uhornacute by uhorn acutecmb;
sub uhorngrave by uhorn gravecmb;
sub uhornhoi by uhorn hoicmb;
sub uhorntilde by uhorn tildecmb;
sub uhorndotbelow by uhorn dotbelowcmb;
sub udieresisbelow by u dieresisbelowcmb;
sub uogonekacute by uogonek acutecmb;
sub vdotbelow by v dotbelowcmb;
sub wgrave by w gravecmb;
sub wacute by w acutecmb;
sub wcircumflex by w circumflexcmb;
sub wdieresis by w dieresiscmb;
sub ygrave by y gravecmb;
sub yacute by y acutecmb;
sub ycircumflex by y circumflexcmb;
sub ydieresis by y dieresiscmb;
sub ydotaccent by y dotaccentcmb;
sub ydotbelow by y dotbelowcmb;
sub yhoi by y hoicmb;
sub ytilde by y tildecmb;
sub zacute by z acutecmb;
sub zcaron by z caroncmb;
sub zdotaccent by z dotaccentcmb;
sub zcircumflex by z circumflexcmb;
sub zdotbelow by z dotbelowcmb;
sub zlinebelow by z macronbelowcmb;
sub ezhcaron by ezh caroncmb;
# Cyrillic
sub Io by Ie dieresiscmb.cap;
sub io by ie dieresiscmb;
sub Odieresiscyr by Ocyr dieresiscmb.cap;
sub odieresiscyr by ocyr dieresiscmb;
sub Yi by Iukran dieresiscmb.cap;
sub yi by dotlessi dieresiscmb;
} DECOMPOSITION;
feature ccmp { # Glyph Composition Decomposition
lookup GLYPH_DECOMPOSITION_CONTEXTUAL { #decomposes accented forms followed by combining accent
sub [ @LETTERS_MINISCULE_LATIN_ACCENTED_ABOVE @LETTERS_MAJUSCULE_LATIN_ACCENTED_ABOVE ]' lookup DECOMPOSITION @MARKS_CMB_BELOW; # only partial solution, abovebelow
sub [ @LETTERS_MINISCULE_LATIN_ACCENTED_BELOW @LETTERS_MAJUSCULE_LATIN_ACCENTED_BELOW ]' lookup DECOMPOSITION @MARKS_CMB_ABOVE; # only partial solution, belowabove
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;
lookup GLYPH_COMPOSITION_CONTEXTUAL { #substitutes dotless forms when followed by combining diacritics
sub i' ogonekcmb' @MARKS_CMB_ABOVE by iogonek.x;
sub [ i j iogonek istroke jcrossedtail ]' @MARKS_CMB_BELOW [ @MARKS_CMB_ABOVE @MARKS_LIG_ABOVE ] by [ dotlessi dotlessj iogonek.x istroke.x jcrossedtail.x ];
sub [ i j iogonek istroke jcrossedtail ]' [ @MARKS_CMB_ABOVE @MARKS_LIG_ABOVE ] by [ dotlessi dotlessj iogonek.x istroke.x jcrossedtail.x ];
} GLYPH_COMPOSITION_CONTEXTUAL;
@VOWELS_DIERESIS = [ Adieresis Edieresis Idieresis Odieresis Udieresis adieresis edieresis idieresis odieresis udieresis ];
@VOWELS_MACRON = [ Amacron Emacron Imacron Omacron Umacron amacron emacron imacron omacron umacron ];
@VOWELS_UNMARKED = [ A E I O U a e dotlessi o u ];
@CONSONANTS_CARON = [Ccaron Scaron ccaron scaron];
@CONSONANTS_UNMARKED = [C S c s];
lookup MARKS_SWAP_1 {
sub @VOWELS_DIERESIS acutecmb' by dieresisacute;
sub @VOWELS_DIERESIS gravecmb' by dieresisgrave;
sub @VOWELS_DIERESIS caroncmb' by dieresiscaron;
sub @VOWELS_MACRON gravecmb' by macrongrave;
sub @VOWELS_MACRON acutecmb' by macronacute;
sub @CONSONANTS_CARON commaabovecmb' by caroncomma;
} MARKS_SWAP_1;
lookup MARKS_SWAP_2 {
sub @VOWELS_DIERESIS' dieresisacute by @VOWELS_UNMARKED;
sub @VOWELS_DIERESIS' dieresisgrave by @VOWELS_UNMARKED;
sub @VOWELS_DIERESIS' dieresiscaron by @VOWELS_UNMARKED;
sub @VOWELS_MACRON' macrongrave by @VOWELS_UNMARKED;
sub @VOWELS_MACRON' macronacute by @VOWELS_UNMARKED;
sub @CONSONANTS_CARON' caroncomma by @CONSONANTS_UNMARKED;
} MARKS_SWAP_2;
lookup MARKS_COMPOSITION {
sub circumflexcmb gravecmb by circumflexgrave;
sub circumflexcmb acutecmb by circumflexacute;
sub circumflexcmb tildecmb by circumflextilde;
sub circumflexcmb macroncmb by circumflexmacron;
sub circumflexcmb brevecmb by circumflexbreve;
sub circumflexcmb hoicmb by circumflexhoi;
sub circumflexcmb caroncmb by circumflexcaron;
sub macroncmb gravecmb by macrongrave;
sub macroncmb acutecmb by macronacute;
sub brevecmb gravecmb by brevegrave;
sub brevecmb acutecmb by breveacute;
sub brevecmb tildecmb by brevetilde;
sub brevecmb hoicmb by brevehoi;
sub dieresiscmb gravecmb by dieresisgrave;
sub dieresiscmb acutecmb by dieresisacute;
sub dieresiscmb [ tildecmb perispomenicmb ] by dieresistilde;
sub dieresiscmb macroncmb by dieresismacron;
sub dieresiscmb caroncmb by dieresiscaron;
sub dieresiscmb tonoscmb by dialytikatonoscmb;
sub dieresiscmb variacmb by dialytikagravecmb;
sub ringcmb acutecmb by ringacute;
sub caroncmb dotaccentcmb by carondotaccent;
sub caroncmb commaabovecmb by caroncomma;
sub [ aspercmb commaturnedabovecmb ] [ gravecmb variacmb ] by aspergravecmb;
sub [ aspercmb commaturnedabovecmb ] [ acutecmb tonoscmb ] by asperacutecmb;
sub [ aspercmb commaturnedabovecmb ] [ tildecmb perispomenicmb ] by aspertildecmb;
sub [ leniscmb commaabovecmb ] [ gravecmb variacmb ] by lenisgravecmb;
sub [ leniscmb commaabovecmb ] [ acutecmb tonoscmb ] by lenisacutecmb;
sub [ leniscmb commaabovecmb ] [ tildecmb perispomenicmb ] by lenistildecmb;
} MARKS_COMPOSITION;
lookup GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL {
sub A ogonekcmb acutecmb by Aogonekacute;
sub E ogonekcmb acutecmb by Eogonekacute;
sub I ogonekcmb acutecmb by Iogonekacute;
sub O ogonekcmb acutecmb by Oogonekacute;
sub U ogonekcmb acutecmb by Uogonekacute;
sub a ogonekcmb acutecmb by aogonekacute;
sub e ogonekcmb acutecmb by eogonekacute;
sub i ogonekcmb acutecmb by iogonekacute;
sub o ogonekcmb acutecmb by oogonekacute;
sub u ogonekcmb acutecmb by uogonekacute;
sub A acutecmb ogonekcmb by Aogonekacute;
sub E acutecmb ogonekcmb by Eogonekacute;
sub I acutecmb ogonekcmb by Iogonekacute;
sub O acutecmb ogonekcmb by Oogonekacute;
sub U acutecmb ogonekcmb by Uogonekacute;
sub a acutecmb ogonekcmb by aogonekacute;
sub e acutecmb ogonekcmb by eogonekacute;
sub i acutecmb ogonekcmb by iogonekacute;
sub o acutecmb ogonekcmb by oogonekacute;
sub u acutecmb ogonekcmb by uogonekacute;
sub Aogonek acutecmb by Aogonekacute;
sub Eogonek acutecmb by Eogonekacute;
sub Iogonek acutecmb by Iogonekacute;
sub Oogonek acutecmb by Oogonekacute;
sub Uogonek acutecmb by Uogonekacute;
sub aogonek acutecmb by aogonekacute;
sub eogonek acutecmb by eogonekacute;
sub iogonek acutecmb by iogonekacute;
sub oogonek acutecmb by oogonekacute;
sub uogonek acutecmb by uogonekacute;
sub Aacute ogonekcmb by Aogonekacute;
sub Eacute ogonekcmb by Eogonekacute;
sub Iacute ogonekcmb by Iogonekacute;
sub Oacute ogonekcmb by Oogonekacute;
sub Uacute ogonekcmb by Uogonekacute;
sub aacute ogonekcmb by aogonekacute;
sub eacute ogonekcmb by eogonekacute;
sub iacute ogonekcmb by iogonekacute;
sub oacute ogonekcmb by oogonekacute;
sub uacute ogonekcmb by uogonekacute;
sub d caroncmb by dcaron;
sub l caroncmb by lcaron;
sub t caroncmb by tcaron;
sub J caroncmb by Jcaron;
sub g tildecmb by gtilde;
sub G tildecmb by Gtilde;
sub l tildeoverlaycmb by lmiddletilde;
sub L tildeoverlaycmb by Lmiddletilde;
sub m tildeoverlaycmb by mmiddletilde;
sub n tildeoverlaycmb by nmiddletilde;
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 dotlessi ogonekcmb by iogonek.x;
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 eopen ogonekcmb by eopenogonek;
sub Eopen ogonekcmb by Eopenogonek;
sub g cedillacmb by gcommaaccent; # The decomposition defined by Unicode is: 0067+0327
sub l periodcentered l by lgeminada;
sub L periodcentered L by Lgeminada;
sub ij acutecmb by ijacute;
sub IJ acutecmb by IJacute;
sub schwa hookrhoticmod by schwahookrhotic;
sub eopenreversed hookrhoticmod by eopenreversedrhotic;
sub a [slashshortcmb slashlongcmb] by astroke;
sub c [slashshortcmb slashlongcmb] by cstroke;
sub t [slashshortcmb slashlongcmb] by tstroke;
sub A [slashshortcmb slashlongcmb] by Astroke;
sub C [slashshortcmb slashlongcmb] by Cstroke;
sub T [slashshortcmb slashlongcmb] by Tstroke;
sub e.sups acutecmb by eacute.sups;
sub e.sups gravecmb by egrave.sups;
} GLYPH_COMPOSITION_LATIN_NONCONTEXTUAL;
lookup GLYPH_COMPOSITION_GREEK_POLYTONIC { #to add: Greek localized combining marks
sub Alpha leniscmb by Alphalenis;
sub Alpha lenisacutecmb by Alphalenisacute;
sub Alpha lenisgravecmb by Alphalenisgrave;
sub Alpha lenistildecmb by Alphalenistilde;
sub Alpha aspercmb by Alphaasper;
sub Alpha asperacutecmb by Alphaasperacute;
sub Alpha aspergravecmb by Alphaaspergrave;
sub Alpha aspertildecmb by Alphaaspertilde;
sub Alpha acutecmb by Alphaacute;
sub Alpha gravecmb by Alphagrave;
sub Alpha macroncmb by Alphamacron;
sub Alpha brevecmb by Alphabreve;
sub Alpha @IOTA_MODIFIERS_GREEK by Alphaiotasub;
sub Alpha @IOTA_MODIFIERS_GREEK leniscmb by Alphaiotasublenis;
sub Alpha @IOTA_MODIFIERS_GREEK lenisacutecmb by Alphaiotasublenisacute;
sub Alpha @IOTA_MODIFIERS_GREEK lenisgravecmb by Alphaiotasublenisgrave;
sub Alpha @IOTA_MODIFIERS_GREEK lenistildecmb by Alphaiotasublenistilde;
sub Alpha @IOTA_MODIFIERS_GREEK aspercmb by Alphaiotasubasper;
sub Alpha @IOTA_MODIFIERS_GREEK asperacutecmb by Alphaiotasubasperacute;
sub Alpha @IOTA_MODIFIERS_GREEK aspergravecmb by Alphaiotasubaspergrave;
sub Alpha @IOTA_MODIFIERS_GREEK aspertildecmb by Alphaiotasubaspertilde;
sub Epsilon leniscmb by Epsilonlenis;
sub Epsilon lenisacutecmb by Epsilonlenisacute;
sub Epsilon lenisgravecmb by Epsilonlenisgrave;
sub Epsilon aspercmb by Epsilonasper;
sub Epsilon asperacutecmb by Epsilonasperacute;
sub Epsilon aspergravecmb by Epsilonaspergrave;
sub Epsilon acutecmb by Epsilonacute;
sub Epsilon gravecmb by Epsilongrave;
sub Eta leniscmb by Etalenis;
sub Eta lenisacutecmb by Etalenisacute;
sub Eta lenisgravecmb by Etalenisgrave;
sub Eta lenistildecmb by Etalenistilde;
sub Eta aspercmb by Etaasper;
sub Eta asperacutecmb by Etaasperacute;
sub Eta aspergravecmb by Etaaspergrave;
sub Eta aspertildecmb by Etaaspertilde;
sub Eta acutecmb by Etaacute;
sub Eta gravecmb by Etagrave;
sub Eta @IOTA_MODIFIERS_GREEK by Etaiotasub;
sub Eta @IOTA_MODIFIERS_GREEK leniscmb by Etaiotasublenis;
sub Eta @IOTA_MODIFIERS_GREEK lenisacutecmb by Etaiotasublenisacute;
sub Eta @IOTA_MODIFIERS_GREEK lenisgravecmb by Etaiotasublenisgrave;
sub Eta @IOTA_MODIFIERS_GREEK lenistildecmb by Etaiotasublenistilde;
sub Eta @IOTA_MODIFIERS_GREEK aspercmb by Etaiotasubasper;
sub Eta @IOTA_MODIFIERS_GREEK asperacutecmb by Etaiotasubasperacute;
sub Eta @IOTA_MODIFIERS_GREEK aspergravecmb by Etaiotasubaspergrave;
sub Eta @IOTA_MODIFIERS_GREEK aspertildecmb by Etaiotasubaspertilde;
sub Iota leniscmb by Iotalenis;
sub Iota lenisacutecmb by Iotalenisacute;
sub Iota lenisgravecmb by Iotalenisgrave;
sub Iota lenistildecmb by Iotalenistilde;
sub Iota aspercmb by Iotaasper;
sub Iota asperacutecmb by Iotaasperacute;
sub Iota aspergravecmb by Iotaaspergrave;
sub Iota aspertilde by Iotaaspertilde;
sub Iota acutecmb by Iotaacute;
sub Iota gravecmb by Iotagrave;
sub Iota macroncmb by Iotamacron;
sub Iota brevecmb by Iotabreve;
sub Iota dieresiscmb by Iotadieresis;
sub Omicron leniscmb by Omicronlenis;
sub Omicron lenisacutecmb by Omicronlenisacute;
sub Omicron lenisgravecmb by Omicronlenisgrave;
sub Omicron aspercmb by Omicronasper;
sub Omicron asperacutecmb by Omicronasperacute;
sub Omicron aspergravecmb by Omicronaspergrave;
sub Omicron acutecmb by Omicronacute;
sub Omicron gravecmb by Omicrongrave;
sub Rho aspercmb by Rhoasper;
sub Upsilon aspercmb by Upsilonasper;
sub Upsilon asperacutecmb by Upsilonasperacute;
sub Upsilon aspergravecmb by Upsilonaspergrave;
sub Upsilon aspertildecmb by Upsilonaspertilde;
sub Upsilon acutecmb by Upsilonacute;
sub Upsilon gravecmb by Upsilongrave;
sub Upsilon macroncmb by Upsilonmacron;
sub Upsilon brevecmb by Upsilonbreve;
sub Upsilon dieresiscmb by Upsilondieresis;
sub Omega psili by Omegalenis;
sub Omega lenisacute by Omegalenisacute;
sub Omega lenisgravecmb by Omegalenisgrave;
sub Omega lenistildecmb by Omegalenistilde;
sub Omega aspercmb by Omegaasper;
sub Omega asperacutecmb by Omegaasperacute;
sub Omega aspergravecmb by Omegaaspergrave;
sub Omega aspertildecmb by Omegaaspertilde;
sub Omega acutecmb by Omegaacute;
sub Omega gravecmb by Omegagrave;
sub Omega @IOTA_MODIFIERS_GREEK by Omegaiotasub;
sub Omega @IOTA_MODIFIERS_GREEK leniscmb by Omegaiotasublenis;
sub Omega @IOTA_MODIFIERS_GREEK lenisacutecmb by Omegaiotasublenisacute;
sub Omega @IOTA_MODIFIERS_GREEK lenisgravecmb by Omegaiotasublenisgrave;
sub Omega @IOTA_MODIFIERS_GREEK lenistildecmb by Omegaiotasublenistilde;
sub Omega @IOTA_MODIFIERS_GREEK aspercmb by Omegaiotasubasper;
sub Omega @IOTA_MODIFIERS_GREEK asperacutecmb by Omegaiotasubasperacute;
sub Omega @IOTA_MODIFIERS_GREEK aspergravecmb by Omegaiotasubaspergrave;
sub Omega @IOTA_MODIFIERS_GREEK aspertildecmb by Omegaiotasubaspertilde;
sub Alphaiotasub leniscmb by Alphaiotasublenis;
sub Alphaiotasub lenisacutecmb by Alphaiotasublenisacute;
sub Alphaiotasub lenisgravecmb by Alphaiotasublenisgrave;
sub Alphaiotasub lenistildecmb by Alphaiotasublenistilde;
sub Alphaiotasub aspercmb by Alphaiotasubasper;
sub Alphaiotasub asperacutecmb by Alphaiotasubasperacute;
sub Alphaiotasub aspergravecmb by Alphaiotasubaspergrave;
sub Alphaiotasub aspertildecmb by Alphaiotasubaspertilde;
sub Etaiotasub leniscmb by Etaiotasublenis;
sub Etaiotasub lenisacutecmb by Etaiotasublenisacute;
sub Etaiotasub lenisgravecmb by Etaiotasublenisgrave;
sub Etaiotasub lenistildecmb by Etaiotasublenistilde;
sub Etaiotasub aspercmb by Etaiotasubasper;
sub Etaiotasub asperacutecmb by Etaiotasubasperacute;
sub Etaiotasub aspergravecmb by Etaiotasubaspergrave;
sub Etaiotasub aspertildecmb by Etaiotasubaspertilde;
sub Omegaiotasub leniscmb by Omegaiotasublenis;
sub Omegaiotasub lenisacutecmb by Omegaiotasublenisacute;
sub Omegaiotasub lenisgravecmb by Omegaiotasublenisgrave;
sub Omegaiotasub lenistildecmb by Omegaiotasublenistilde;
sub Omegaiotasub aspercmb by Omegaiotasubasper;
sub Omegaiotasub asperacutecmb by Omegaiotasubasperacute;
sub Omegaiotasub aspergravecmb by Omegaiotasubaspergrave;
sub Omegaiotasub aspertildecmb by Omegaiotasubaspertilde;
sub alpha leniscmb by alphalenis;
sub alpha lenisacutecmb by alphalenisacute;
sub alpha lenisgravecmb by alphalenisgrave;
sub alpha lenistildecmb by alphalenistilde;
sub alpha aspercmb by alphaasper;
sub alpha asperacutecmb by alphaasperacute;
sub alpha aspergravecmb by alphaaspergrave;
sub alpha aspertildecmb by alphaaspertilde;
sub alpha acutecmb by alphaacute;
sub alpha gravecmb by alphagrave;
sub alpha perispomenicmb by alphatilde;
sub alpha macroncmb by alphamacron;
sub alpha brevecmb by alphabreve;
sub alpha iotasubscriptcmb by alphaiotasub;
sub alpha iotasubscriptcmb leniscmb by alphaiotasublenis;
sub alpha iotasubscriptcmb lenisacutecmb by alphaiotasublenisacute;
sub alpha iotasubscriptcmb lenisgravecmb by alphaiotasublenisgrave;
sub alpha iotasubscriptcmb lenistildecmb by alphaiotasublenistilde;
sub alpha iotasubscriptcmb aspercmb by alphaiotasubasper;
sub alpha iotasubscriptcmb asperacutecmb by alphaiotasubasperacute;
sub alpha iotasubscriptcmb aspergravecmb by alphaiotasubaspergrave;
sub alpha iotasubscriptcmb aspertildecmb by alphaiotasubaspertilde;
sub alpha iotasubscriptcmb acutecmb by alphaiotasubacute;
sub alpha iotasubscriptcmb gravecmb by alphaiotasubgrave;
sub alpha iotasubscriptcmb perispomenicmb by alphaiotasubtilde;
sub epsilon leniscmb by epsilonlenis;
sub epsilon lenisacutecmb by epsilonlenisacute;
sub epsilon lenisgravecmb by epsilonlenisgrave;
sub epsilon aspercmb by epsilonasper;
sub epsilon asperacutecmb by epsilonasperacute;
sub epsilon aspergravecmb by epsilonaspergrave;
sub epsilon acutecmb by epsilonacute;
sub epsilon gravecmb by epsilongrave;
sub eta leniscmb by etalenis;
sub eta lenisacutecmb by etalenisacute;
sub eta lenisgravecmb by etalenisgrave;
sub eta lenistildecmb by etalenistilde;
sub eta aspercmb by etaasper;
sub eta asperacutecmb by etaasperacute;
sub eta aspergravecmb by etaaspergrave;
sub eta aspertildecmb by etaaspertilde;
sub eta acutecmb by etaacute;
sub eta gravecmb by etagrave;
sub eta perispomenicmb by etatilde;
sub eta iotasubscriptcmb by etaiotasub;
sub eta iotasubscriptcmb leniscmb by etaiotasublenis;
sub eta iotasubscriptcmb lenisacutecmb by etaiotasublenisacute;
sub eta iotasubscriptcmb lenisgravecmb by etaiotasublenisgrave;
sub eta iotasubscriptcmb lenistildecmb by etaiotasublenistilde;
sub eta iotasubscriptcmb aspercmb by etaiotasubasper;
sub eta iotasubscriptcmb asperacutecmb by etaiotasubasperacute;
sub eta iotasubscriptcmb aspergravecmb by etaiotasubaspergrave;
sub eta iotasubscriptcmb aspertildecmb by etaiotasubaspertilde;
sub eta iotasubscriptcmb acutecmb by etaiotasubacute;
sub eta iotasubscriptcmb gravecmb by etaiotasubgrave;
sub eta iotasubscriptcmb perispomenicmb by etaiotasubtilde;
sub iota leniscmb by iotalenis;
sub iota lenisacutecmb by iotalenisacute;
sub iota lenisgravecmb by iotalenisgrave;
sub iota lenistildecmb by iotalenistilde;
sub iota aspercmb by iotaasper;
sub iota asperacutecmb by iotaasperacute;
sub iota aspergravecmb by iotaaspergrave;
sub iota aspertildecmb by iotaaspertilde;
sub iota dieresisacute by iotadieresisacute;
sub iota dieresisgrave by iotadieresisgrave;
sub iota dieresistilde by iotadieresistilde;
sub iota acutecmb by iotaacute;
sub iota gravecmb by iotagrave;
sub iota perispomenicmb by iotatilde;
sub iota macroncmb by iotamacron;
sub iota brevecmb by iotabreve;
sub iota dieresiscmb by iotadieresis;
sub omicron leniscmb by omicronlenis;
sub omicron lenisacutecmb by omicronlenisacute;
sub omicron lenisgravecmb by omicronlenisgrave;
sub omicron aspercmb by omicronasper;
sub omicron asperacutecmb by omicronasperacute;
sub omicron aspergravecmb by omicronaspergrave;
sub omicron acutecmb by omicronacute;
sub omicron gravecmb by omicrongrave;
sub rho leniscmb by rholenis;
sub rho aspercmb by rhoasper;
sub upsilon leniscmb by upsilonlenis;
sub upsilon lenisacutecmb by upsilonlenisacute;
sub upsilon lenisgravecmb by upsilonlenisgrave;
sub upsilon lenistildecmb by upsilonlenistilde;
sub upsilon aspercmb by upsilonasper;
sub upsilon asperacutecmb by upsilonasperacute;
sub upsilon aspergravecmb by upsilonaspergrave;
sub upsilon aspertildecmb by upsilonaspertilde;
sub upsilon dieresisacute by upsilondieresisacute;
sub upsilon dieresisgrave by upsilondieresisgrave;
sub upsilon dieresistilde by upsilondieresistilde;
sub upsilon acutecmb by upsilonacute;
sub upsilon gravecmb by upsilongrave;
sub upsilon perispomenicmb by upsilontilde;
sub upsilon macroncmb by upsilonmacron;
sub upsilon brevecmb by upsilonbreve;
sub upsilon dieresiscmb by upsilondieresis;
sub omega leniscmb by omegalenis;
sub omega lenisacutecmb by omegalenisacute;
sub omega lenisgravecmb by omegalenisgrave;
sub omega lenistildecmb by omegalenistilde;
sub omega aspercmb by omegaasper;
sub omega asperacutecmb by omegaasperacute;
sub omega aspergravecmb by omegaaspergrave;
sub omega aspertildecmb by omegaaspertilde;
sub omega acutecmb by omegaacute;
sub omega gravecmb by omegagrave;
sub omega perispomenicmb by omegatilde;
sub omega iotasubscriptcmb by omegaiotasub;
sub omega iotasubscriptcmb leniscmb by omegaiotasublenis;
sub omega iotasubscriptcmb lenisacutecmb by omegaiotasublenisacute;
sub omega iotasubscriptcmb lenisgravecmb by omegaiotasublenisgrave;
sub omega iotasubscriptcmb lenistildecmb by omegaiotasublenistilde;
sub omega iotasubscriptcmb aspercmb by omegaiotasubasper;
sub omega iotasubscriptcmb asperacutecmb by omegaiotasubasperacute;
sub omega iotasubscriptcmb aspergravecmb by omegaiotasubaspergrave;
sub omega iotasubscriptcmb aspertildecmb by omegaiotasubaspertilde;
sub omega iotasubscriptcmb acutecmb by omegaiotasubacute;
sub omega iotasubscriptcmb gravecmb by omegaiotasubgrave;
sub omega iotasubscriptcmb perispomenicmb by omegaiotasubtilde;
sub alphaiotasub leniscmb by alphaiotasublenis;
sub alphaiotasub lenisacutecmb by alphaiotasublenisacute;
sub alphaiotasub lenisgravecmb by alphaiotasublenisgrave;
sub alphaiotasub lenistildecmb by alphaiotasublenistilde;
sub alphaiotasub aspercmb by alphaiotasubasper;
sub alphaiotasub asperacutecmb by alphaiotasubasperacute;
sub alphaiotasub aspergravecmb by alphaiotasubaspergrave;
sub alphaiotasub aspertildecmb by alphaiotasubaspertilde;
sub alphaiotasub acutecmb by alphaiotasubacute;
sub alphaiotasub gravecmb by alphaiotasubgrave;
sub alphaiotasub perispomenicmb by alphaiotasubtilde;
sub etaiotasub leniscmb by etaiotasublenis;
sub etaiotasub lenisacutecmb by etaiotasublenisacute;
sub etaiotasub lenisgravecmb by etaiotasublenisgrave;
sub etaiotasub lenistildecmb by etaiotasublenistilde;
sub etaiotasub aspercmb by etaiotasubasper;
sub etaiotasub asperacutecmb by etaiotasubasperacute;
sub etaiotasub aspergravecmb by etaiotasubaspergrave;
sub etaiotasub aspertildecmb by etaiotasubaspertilde;
sub etaiotasub acutecmb by etaiotasubacute;
sub etaiotasub gravecmb by etaiotasubgrave;
sub etaiotasub perispomenicmb by etaiotasubtilde;
sub omegaiotasub leniscmb by omegaiotasublenis;
sub omegaiotasub lenisacutecmb by omegaiotasublenisacute;
sub omegaiotasub lenisgravecmb by omegaiotasublenisgrave;
sub omegaiotasub lenistildecmb by omegaiotasublenistilde;
sub omegaiotasub aspercmb by omegaiotasubasper;
sub omegaiotasub asperacutecmb by omegaiotasubasperacute;
sub omegaiotasub aspergravecmb by omegaiotasubaspergrave;
sub omegaiotasub aspertildecmb by omegaiotasubaspertilde;
sub omegaiotasub acutecmb by omegaiotasubacute;
sub omegaiotasub gravecmb by omegaiotasubgrave;
sub omegaiotasub perispomenicmb by omegaiotasubtilde;
} GLYPH_COMPOSITION_GREEK_POLYTONIC;