Home   All Products  |   Support  |   Search  | Home  

Microsoft Typography | Developer information | VOLT | VOLT release notes
Start | Project window | Glyph grid | Glyph group | GSUB | GPOS | Proofing | File | Samples

Substitution tool

A substitution lookup can be edited in the Substitution Tool. To start editing a substitution lookup, double click on it in the main project window or select it and press the 'Edit Lookup' button.

Lookup header

The lookup header occupies the top portion of the tool. The same kind of header is used in the Positioning Tool to describe positioning lookups.

Substitution tool

The Substitution Tool

The header contains the following fields:

  • the lookup name,
  • lookup type: this field is set automatically for substitutions (You have to specify the lookup type manually for positioning lookups). If the substitutions you entered have inconsistent types, this field will change to 'Unknown substitution' to alert you. An attempt to compile such lookups results in errors.
  • Process Marks: defines the lookup's behavior towards marks. The valid entries are:
    • ALL - all mark glyphs are processed
    • NONE - all mark glyphs are skipped by this lookup
    • a group name - only marks from this group will be processed, other marks are skipped.
      Note: all marks groups used in this way in lookup headers have to be mutually exclusive. If you need to use this feature, it is advisable that you break the marks down into several separate groups before hand and then use these groups in lookup headers. The breaking into groups usually follows the geometrical position of marks (marks above, marks below etc.) and is similar to combining mark classes assigned by Unicode.
  • Process base glyphs: when off, all non-mark glyphs are skipped by the lookup.
  • Text Flow: the valid entries are Left-To-Right (LTR) or Right-To-Left (RTL). The affects the display (preview) of substitution/positioning operations. For positioning, this also affects the way glyphs are placed for positioning. Set to RTL when working with languages such as Arabic or Hebrew.

List of substitutions

The list of substitutions consists of two columns: descriptions on the right and previews on the left. The descriptions use glyph names and groups to specify the substitution; in the preview column one can see the glyphs involved in the substitution.

All substitutions are defined in the following format: LeftHandSide -> RightHandSide . For example, 'Ampersand -> AlternativeAmpersand' could define a single or alternative substitution and 'LatinSmallLetterF LatinSmallLetterI -> LatinSmallLigatureFI' could be defining a simple ligature.

A single menu item lets you order your substitutions which is handy if you are dealing with large glyph sets. Read the caveat though - ordering by the first glyph generally should not change the way the lookup is processed, but if you are using groups in defining your substitutions (see below), complete ordering is impossible (the groups are not broken down) and as the result ordering may have an effect on the lookup's behavior.

Use of groups in substitutions

Groups can be used in substitutions as a shorthand notation meaning that the substitution should be performed with each element of the group. Any group notation (a reference to a predefined group, a range or an enumeration) can be used (see the Group Tool section).

At most one glyph group can be used on each side of one substitution. If groups are used on each size of the substitution, their cardinalities have to match. Such substitution compiled into a series of substitutions with groups substituted by subsequently the first, second and so on members of the groups. E.g. the substitution

'[LatinSmallLetterA - LatinSmallLetterZ] -> [LatinSmallCapZ - LatinSmallCapZ]' will be compiled into the series 'LatinSmallLetterA -> LatinSmallCapA', 'LatinSmallLetterB -> LatinSmallCapB' and so on.

Note: the glyphs is groups are ALWAYS ordered by their glyph IDs!!! and not by the order that could be implied from the way a group is described.

Using contexts

The bottom part of the substitution is for describing contexts. By putting anything in there you declare that the substitutions above can not happen anywhere the lookup is applied but only if surrounded by the specified contexts.

Each line in a context description consists of two parts separated by a bar '|'. The left part is the left context and the right part if the right context (logically left or right - the left and right change if the text flow is RTL).

E.g. the context ' | Space' may mean that the substitution happens only if immediately followed by a space, and ' <Capitals> | Space' may mean that we substitute only when there is a capital letter to the left and a space to the right. ('Capitals' has to be a name of a defined group and 'Space' a name of the space glyph in this case).

In the right column, the glyphs used in describing contexts are previewed. Contexts for positioning operations are defined in exactly the same way.

this page was last updated 13 April 2000
© 2000 Microsoft Corporation. All rights reserved. Terms of use.
comments to the MST group: how to contact us


Start | Project window | Glyph grid | Glyph group | GSUB | GPOS | Proofing | File | Samples
Microsoft Typography | Developer information | VOLT | VOLT release notes