# OpenType Feature File specification, section 5.d, example 1. # http://www.adobe.com/devnet/opentype/afdko/topic_feature_file_syntax.html feature F1 { sub [one one.oldstyle] [slash fraction] [two two.oldstyle] by onehalf; } F1; # Since the OpenType specification does not allow ligature substitutions # to be specified on target sequences that contain glyph classes, the # implementation software will enumerate all specific glyph sequences # if glyph classes are detected in . Thus, the above # example produces an identical representation in the font as if all # the sequences were manually enumerated by the font editor: # # NOTE(anthrotype): The previous sentence is no longer entirely true, since we # now preserve the order in which the ligatures (with same length and first glyph) # were specified in the feature file and do not sort them alphabetically # by the ligature component names. Therefore, the way this particular example from # the FEA spec is written will produce two slightly different representations # in the font in which the ligatures are enumerated differently, however the two # lookups are functionally equivalent. # See: https://github.com/fonttools/fonttools/issues/3428 # https://github.com/adobe-type-tools/afdko/issues/1727 feature F2 { sub one slash two by onehalf; sub one.oldstyle slash two by onehalf; sub one fraction two by onehalf; sub one.oldstyle fraction two by onehalf; sub one slash two.oldstyle by onehalf; sub one.oldstyle slash two.oldstyle by onehalf; sub one fraction two.oldstyle by onehalf; sub one.oldstyle fraction two.oldstyle by onehalf; } F2;