fonttools/Tests/feaLib/data/GSUB_2.fea
Khaled Hosny f642a2aac4 feaLib: support multiple substitution with classes
This is a GlyphsApp extension, (partially) documented [here][1], but it is a
useful one as it allows concise glyph insertion using decomposition
without having to maintain the list of glyphs in two places. E.g.

```fea
@upper = [A-Z];

lookup insert {
  sub @upper by @upper connector;
} insert;

feature ccmp {
  sub @upper' lookup insert x;
} ccmp;
```

As apposed to:

```fea
@upper = [A-Z];

lookup insert {
  sub A by A connector;
  sub B by B connector;
  sub C by C connector;
  sub D by D connector;
  sub E by E connector;
  sub F by F connector;
  sub G by G connector;
  sub H by H connector;
  sub I by I connector;
  sub J by J connector;
  sub K by K connector;
  sub L by L connector;
  sub M by M connector;
  sub N by N connector;
  sub O by O connector;
  sub P by P connector;
  sub R by R connector;
  sub S by S connector;
  sub T by T connector;
  sub U by U connector;
  sub V by V connector;
  sub W by W connector;
  sub X by X connector;
  sub Y by Y connector;
  sub Z by Z connector;
} insert;

feature ccmp {
  sub @upper' lookup insert x;
} ccmp;
```

1. http://handbook.glyphsapp.com/en/layout/multiple-substitution-with-classes/
2023-05-09 14:06:12 +03:00

32 lines
525 B
Plaintext

feature f1 {
sub c_t by c t;
sub f_i by f i;
sub f_f_i by f f i;
} f1;
# Even if it has exactly the same content as feature f1,
# the lookup should not be shared.
feature f2 {
sub c_t by c t;
sub f_i by f i;
sub f_f_i by f f i;
} f2;
feature f3 {
sub [f_i f_l f_f_i f_f_l] by f [i l f_i f_l];
} f3;
feature f4 {
sub [f_i f_l f_f_i f_f_l] by [f f f_f f_f] [i l i l];
} f4;
@class = [f_i f_l];
lookup l1 {
sub @class by f [i l];
} l1;
feature f5 {
sub @class' lookup l1 [i l];
} f5;