xref: /aosp_15_r20/external/fonttools/Tests/feaLib/data/spec5d1.fea (revision e1fe3e4ad2793916b15cccdc4a7da52a7e1dd0e9)
1# OpenType Feature File specification, section 5.d, example 1.
2# http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html
3
4feature F1 {
5  sub [one one.oldstyle] [slash fraction] [two two.oldstyle] by onehalf;
6} F1;
7
8# Since the OpenType specification does not allow ligature substitutions
9# to be specified on target sequences that contain glyph classes, the
10# implementation software will enumerate all specific glyph sequences
11# if glyph classes are detected in <glyph sequence>.  Thus, the above
12# example produces an identical representation in the font as if all
13# the sequences were manually enumerated by the font editor:
14#
15# NOTE(anthrotype): The previous sentence is no longer entirely true, since we
16# now preserve the order in which the ligatures (with same length and first glyph)
17# were specified in the feature file and do not sort them alphabetically
18# by the ligature component names. Therefore, the way this particular example from
19# the FEA spec is written will produce two slightly different representations
20# in the font in which the ligatures are enumerated differently, however the two
21# lookups are functionally equivalent.
22# See: https://github.com/fonttools/fonttools/issues/3428
23# https://github.com/adobe-type-tools/afdko/issues/1727
24feature F2 {
25  sub one slash two by onehalf;
26  sub one.oldstyle slash two by onehalf;
27  sub one fraction two by onehalf;
28  sub one.oldstyle fraction two by onehalf;
29  sub one slash two.oldstyle by onehalf;
30  sub one.oldstyle slash two.oldstyle by onehalf;
31  sub one fraction two.oldstyle by onehalf;
32  sub one.oldstyle fraction two.oldstyle by onehalf;
33} F2;
34