Typographic features made possible using digital typographic systems have solved many of the demands placed on computer systems to replicate traditional typography and have expanded the possibilities with many new features. Three systems are in common use: OpenType, devised by Microsoft and Adobe, Apple's Apple Advanced Typography (AAT), and SIL's Graphite. The lists below provide information about OpenType and AAT features. Graphite does not have a fixed set of features; instead it provides a way for fonts to define their own features.
OpenType typographic features
edit
The OpenType format defines a number of typographic features that a particular font may support. Some software, such as Adobe InDesign, LibreOffice/OpenOffice, or recent versions of Lua/XeTeX, gives users control of these features, for example to enable fancy stylistic capital letters (swash caps) or to choose between ranging (full-height) and non-ranging (old-style, or lower-case) digits. Some web browsers also support OpenType features in accordance with the CSS Fonts Module Level 3 specification, which allows OpenType features to be set directly via the font-feature-settings property, or indirectly by means of higher-level mechanisms.
The following tables list the features defined in version 1.8.1 of the OpenType specification. The codes in the "type" column are explained after the tables.
OpenType features may be applicable only to certain language scripts or specific languages, or in certain writing modes. The features are split into several tables accordingly.
Features primarily intended for or exclusively required by South-Asian alphasyllabaries (Indic/Brahmic)
edit
Long name
tag
type
Description
Above-base Forms
abvf
S1
Replaces the above-base part of a vowel sign. For Khmer and similar scripts.
Above-base Mark Positioning
abvm
P4,5
Positions a mark glyph above a base glyph.
Above-base Substitutions
abvs
S4
Ligates a consonant with an above-mark.
Below-base Forms
blwf
S4
Replaces halant+consonant combination with a subscript form.
Below-base Mark Positioning
blwm
P4,5
Positions a mark glyph below a base glyph
Below-base Substitutions
blws
S4
Ligates a consonant with a below-mark.
Pre-base Forms
pref
S4[disputed – discuss]
Replaces halant+consonant at the end of a consonant cluster with a glyph at the beginning. Khmer, Myanmar, Malayalam, Telugu
Pre-base Substitutions
pres
S4,5
Ligates consonant combinations.
Post-base Substitutions
psts
S4
Ligates a final consonant+consonant.
Post-base Forms
pstf
S4
Substitutes final halant+consonant with special form. Khmer and Gurmukhi, Malayalam
Distance
dist
P2
Adjusts horizontal positioning between glyphs. (Always enabled, as opposed to 'kern'.)
Akhand
akhn
S4
Hindi for unbreakable. Ligates consonant+halant+consonant, usually only for k-ss and j-ny combinations.
Replaces Greek characters with special forms for use in mathematics
Flattened accent forms
flac
This feature is applied to individual glyphs during layout of math formula.
Dotless Forms
dtls
The dotless forms are to be used as base forms for placing mathematical accents over them.
Math script style alternates
ssty
This feature can have a parameter indicating the script level: 1 for simple subscripts and superscripts, 2 for second level subscripts and superscripts (that is, scripts on scripts), and so on. (Currently, only the first two alternates are used). For glyphs that are not covered by this feature, the original glyph is used in subscripts and superscripts.
Ligation and alternate forms features intended for all scripts
edit
Long name
tag
type
Description
Access All Alternates
aalt
S1,3
Special feature: used to present user with choice all alternate forms of the character
Swash
swsh
S1,3
Either replaces character with or displays multiple swashed versions
Contextual Swash
cswh
S8
Converts letter to a swashed version based on characters around the letter
Contextual Alternates
calt
S6
Applies a second substitution feature based on a match of a character pattern within a context of surrounding patterns
Historical Forms
hist
S1
Obsolete forms of characters to be applied at the user's discretion, cf. hlig
Localized Forms
locl
S1
Substitutes character with the preferred form based on script language
Randomize
rand
S3
Replaces character with random forms (meant to simulate handwriting)
Alternate Annotation Forms
nalt
S1,3
Provides user access to circled digits, inverse letters etc.
Character Variant 1–99
cv01– cv99
S3
Multiple variants of a single character, which may not apply to many other characters, see references for voluminous documentation
Stylistic Alternates
salt
S1,3
Either replaces with, or displays list of, stylistic alternatives for a character
Stylistic Set 1 – 20
ss01- ss20
S1
Replaces character with one from a font-specific set of stylistic alternatives
Subscript
subs
S1
Replaces character with subscript version, cf. numr
Superscript
sups
S1
Replaces character with superscript version, cf. dnom
Titling Alternates
titl
S1
Replaces characters with forms suited for large type, as in titles
Required Variation Alternates
rvrn
S1
Special variants of a single character, which need apply to specific font variation, required by variable fonts
Contextual Ligatures
clig
S8
Applies a second ligature feature based on a match of a character pattern within a context of surrounding patterns
Obsolete ligatures to be applied at the user's discretion
Standard Ligatures
liga
S4
Replaces (by default) sequence of characters with a single ligature glyph
Positioning features intended for all scripts
edit
Long name
tag
type
Description
Glyph Composition/Decomposition
ccmp
S4,2
Either calls a ligature replacement on a sequence of characters or replaces a character with a sequence of glyphs. Provides logic that can for example effectively alter the order of input characters.
Kerning
kern
P2,8
Fine horizontal positioning of one glyph to the next, based on the shapes of the glyphs
Mark Positioning
mark
P4,5
Fine positioning of a mark glyph to a base character
Mark-to-mark Positioning
mkmk
P6
Fine positioning of a mark glyph to another mark character
Optical Bounds
opbd
P1
Re-positions glyphs at beginning and end of line, for precise justification of text.
Left Bounds
lfbd
P1
Re-positions glyphs at end of line. Called by opbd.
Right Bounds
rtbd
P1
Re-positions glyphs at beginning of line. Called by opbd.
Special features intended for all scripts
edit
Long name
tag
type
Description
Optical size
size
Not a lookup: feature's table provides to applications information about the appearance and intent of the font, to aid in font selection.
Ornaments
ornm
S3,1
Decorative alternates for the bullet character •
Legend of substitution and positioning codes
edit
Below are listed the OpenType lookup table types, as used in the "type" column in the above tables. S stands for substitution, and P stands for positioning. Note that often a feature can be implemented by more than one type of table, and that sometimes the specification fails to explicitly indicate the table type.
abbrev.
type
description
S1
GSUB 1
simple substitution of one glyph with another
S2
GSUB 2
multiple substitution of one character by several glyphs
S3
GSUB 3
variant selection
S4
GSUB 4
ligatures
S5
GSUB 5
contextual substitution
S6
GSUB 6
chained contextual substitution
S7
GSUB 7
extension for GSUB tables past 64kB
S8
GSUB 8
reverse chained contextual substitution
P1
GPOS 1
positioning of single glyph
P2
GPOS 2
positioning of pair of glyphs
P3
GPOS 3
cursive attachment
P4
GPOS 4
positioning of mark glyphs relative to base
P5
GPOS 5
positioning of mark glyphs relative to ligature
P6
GPOS 6
positioning of mark glyphs relative to another mark glyph
P7
GPOS 7
contextual positioning
P8
GPOS 8
extended contextual positioning
P9
GPOS 9
extension for GPOS tables past 64kB
AAT typographic features
edit
Features that take one value, mutual exclusive from the rest: