User Guide
FontLab 4
670
Specifying Exceptions to the Context Rule
Exceptions to a chaining contextual substitution rule are expressed by
inserting a statement of the following form anywhere before the chaining
contextual rule and in the same lookup as it:
ignore substitute <marked glyph sequence> (, <marked glyph sequence>)*;
The keywords "ignore substitute" are followed by a comma-separated list
of <marked glyph sequence>s. At most one sub-run of glyphs or glyph
classes may be marked in each <marked glyph sequence>, by a single-
quote (') following each glyph or glyph class. This marked sub-run, when
present, is taken to correspond to the "input sequence" of that rule. This
generally means that it should correspond to the place where substitution
would have occurred had the sequence not been an exception (see
examples below). This is necessary for the OpenType layout engine to
correctly handle skipping this sequence. When no glyphs are marked, then
only the first glyph or glyph class is taken to be marked.
The "ignore substitute" statement works by creating subtables in the GSUB
that tell the OT layout engine simply to match the specified sequences, and
not to perform any substitutions on them. As a result of the match,
remaining rules (i.e. subtables) in the lookup will be skipped.
Example 1. Ignoring specific sequences:
The "ignore substitute" rule below specifies that the substitution in the
"substitute" rule should not occur for the sequences "f a d", "f e d", or "a d
d". Note that the marked glyphs in the exception sequences indicate where
a substitution would have occurred; this is necessary for the OpenType
layout engine to correctly handle skipping this sequence.
ignore substitute f [a e] d', a d' d;
substitute [a e n] d' by d.alt;