From Wikipedia, the free encyclopedia
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.
Halant Forms
haln
S4
Replaces a glyph for final consonant+halant .
Half Form
half
S4
Replaces consonant+halant with a half form, indicating it is part of a conjunct.
Nukta Forms
nukt
S4
Replace consonant+nukta (dot mark) with single glyph.
Rakar Forms
rkrf
S4
Replaces halant+ra with a rakar glyph, indicating it is part of a conjunct.
Reph Form
rphf
S4
Replaces initial ra+halant with a final reph mark, indicating part of a conjunct.
Vattu Variants
vatu
S4
Replaces consonant+rakar combinations with a vattu variant ligature.
Conjunct Forms
cjct
S4
Ligates consonant+halant+consonant, indicates part of a conjunct.
Conjunct Form After Ro
cfar
S1
Khmer
Features primarily intended for or exclusively required by East-Asian tetragrams (Chinese, Japanese, Korean)[ edit ]
Long name
tag
type
Description
Simplified Forms
smpl
S1
Replaces sinograms with their simplified versions, may be language dependent
Traditional Forms
trad
S1,3
Replaces Chinese characters with their traditional versions
Traditional Name Forms
tnam
S1
Japanese alternates for proper names
Expert Forms
expt
S1
Typographic alternatives for some Japanese tetragrams
Hojo Kanji Forms
hojo
Hojo alternates for Japanese tetragrams
NLC Kanji Forms
nlck
NLC alternates for Japanese tetragrams
JIS 78 Forms
jp78
S1,3
JIS C 6226-1978 alternates for Japanese tetragrams, not accessible per Unicode
JIS 83 Forms
jp83
S1
JIS X 0208-1983 alternates for Japanese tetragrams, not accessible per Unicode
JIS 90 Forms
jp90
S1
JIS X 0208-1990 alternates for Japanese tetragrams, not accessible per Unicode
JIS 04 Forms
jp04
JIS 2004 alternates for Japanese tetragrams, not accessible per Unicode
Hangul
hngl
S1,3
Transliterates Chinese-style characters with Korean Hangul
Leading Jamo Forms
ljmo
S4
Initial group of consonants for a synthesized Korean Hangul tetragram
Trailing Jamo Forms
tjmo
S4
Final group of consonants for a synthesized Korean Hangul tetragram
Vowel Jamo Forms
vjmo
S4
Medial group of vowels for a synthesized Korean Hangul tetragram
Full Widths
fwid
S1
Substitutes proportionally spaced character with full-width versions (esp. for Latin letters within Chinese)
Half Widths
hwid
S1,P1
Substitutes uniformly-spaced characters with half-width version
Alternate Half Widths
halt
P1
Re-positions full-width glyphs on half-width spaces
Third Widths
twid
S1,P1
Substitutes uniformly-spaced character with a version of 1/3 width (punctuation, etc.)
Quarter Widths
qwid
S1
Replaces uniformly-spaced glyphs with quarter-width ones (punctuation etc.)
Proportional Widths
pwid
S1
Replaces uniformly-spaced glyphs with proportional ones
Proportional Alternates
palt
P1
Re-positions otherwise monospace characters according to glyph width
Proportional Kana
pkna
S1
Kana for use alongside alphabets, without grid typography
Ruby Notation Forms
ruby
S1
Ruby characters , small print
Horizontal Kana Alternates
hkna
S1
Alternate forms for horizontal kana text, e.g. ー for chōonpu instead of |, cf. vkna
Vertical Kana
vkna
S1
Alternate Japanese kana forms for vertical text, e.g. | for chōonpu instead of ー, cf. hkna
Centered CJK Punctuation
cpct
P1
Positions punctuation marks vertically and horizontally
Features primarily intended for or exclusively required by West-Asian (Semitic, Arabic) and other cursive scripts or fonts[ edit ]
Long name
tag
type
Description
Cursive Positioning
curs
P3
Precise positioning of a letter's connection to an adjacent one
Justification Alternates
jalt
S3
User selectable wider and narrower alternates, used especially for justifying
Mark Positioning via Substitution
mset
S5
Used in Windows 95 for positioning of Arabic marks
Required Contextual Alternates
rclt
S6
Contextual alternates required for correct text display which differs from the default join for other letters, required especially important by Arabic
Required Ligatures
rlig
S3
Ligatures required for correct text display (any script, but in cursive)
Isolated Forms
isol
S1
Substitutes a special form of a letter occurring outside a word (required by Arabic and Syriac)
Initial Forms
init
S1
Substitutes a special form of a letter occurring at the beginning of a word (required by Arabic and Syriac)
Medial Forms
medi
S1
Substitutes a special form of letters between other letters in words (required by Arabic and Syriac)
Medial Form #2
med2
S5
Syriac
Terminal Forms
fina
S1
Substitutes a special form of a letter at end of words (required by Arabic and Syriac)
Terminal Form #2
fin2
S5
Syriac
Terminal Form #3
fin3
S5
Syriac
Final Glyph on Line Alternates
falt
S3
Replaces final glyph on the line with an alternate
Stretching Glyph Decomposition
stch
S2
Substitutes a special form of a stretchy glyph onto one or more letters (required by Syriac)
Features intended for bicameral [cased] alphabets (Latin, Greek, Cyrillic, etc.)[ edit ]
Long name
tag
type
Description
Small Caps
smcp
S1
Substitutes lower-case letters with small caps versions
Capitals to Small Caps
c2sc
S1
Substitutes capital letters with small caps
Petite Caps
pcap
S1
Substitute lower-case letters with their petite caps analogs
Capitals to Petite Caps
c2pc
S1
Substitutes capital letters with petite caps
Unicase
unic
S1
Replaces lowercase and uppercase letters with a set of single case glyphs
Capital Spacing
cpsp
P1
Adjusts spacing between letters in all-capitals text
Case Sensitive Forms
case
P1
Replace characters, especially punctuation, with forms better suited for all-capital text, cf. titl
Italics
ital
S1
Replaces letter with corresponding italic glyph
Ordinals
ordn
S6,4
Replaces characters with ordinal forms for use after numbers
Features depending on writing direction [ edit ]
Long name
tag
type
Description
Alternative Vertical Metrics
valt
P1
Positions shorter characters to be centered vertically with full-height characters
Alternative Vertical Half Metrics
vhal
P1
Positions characters to be centered vertically with half-height characters
Proportional Alternate Vertical Metrics
vpal
P1
Re-positions glyphs vertically to be centered on proportional full-height characters
Vertical Alternates
vert
S1
A subset of vrt2
: prefer the latter feature
Vertical Alternates and Rotation
vrt2
S1
Replaces characters with forms suitable for vertical writing, possibly by rotating 90°
Vertical Alternates for Rotation
vrtr
S1
Replaces characters with forms suitable for vertical writing, possibly by shifting or shape
Vertical Kerning
vkrn
P2,8
Fine vertical positioning of characters based on shape
Left-to-right glyph alternates
ltra
S1
Replaces characters with forms befitting left-to-right presentation (except mirrored forms)
Left-to-right mirrored forms
ltrm
S1
Replaces characters with possibly mirrored forms befitting left-to-right presentation
Right-to-left glyph alternates
rtla
S1
Replaces characters with forms befitting right-to-left presentation (except mirrored forms)
Right-to-left mirrored forms
rtlm
S1
Replaces characters with possibly mirrored forms befitting right-to-left presentation
Features intended for digits and math [ edit ]
Long name
tag
type
Description
Lining Figures
lnum
S1
Replaces numerals with glyphs meant to fit better in all-capitals text, often also tnum
Oldstyle Figures
onum
S1
Replaces numerals with cased old-style numerals , often also pnum
Proportional Figures
pnum
S1
Replaces numerals with glyphs of proportional width, often also onum
Tabular Figures
tnum
S1
Replaces numerals with glyphs of uniform width, often also lnum
Fractions
frac
S4
Converts figures separated by slash with diagonal fraction
Alternative Fractions
afrc
S4
Converts figures separated by slash with alternative stacked fraction form
Denominator
dnom
S1
Converts to appropriate fraction denominator form, invoked by frac
Numerator
numr
S1
Converts to appropriate fraction numerator form, invoked by frac
Scientific Inferiors
sinf
S1
as in "H2 O", "SOx " or "YCb Cr " (but using the same font weight and predefined position in contrast these plain HTML subs and sups)
Slashed Zero
zero
S1
Replaces 0 figure with slashed 0
Mathematical Greek
mgrk
S1
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.
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
Discretionary Ligatures
dlig
S4
Ligatures to be applied at the user's discretion
Historical Ligatures
hlig
S1
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:
Annotation nalt
No Annotation
Box Annotation
Rounded Box Annotation
Circle Annotation
Inverted Circle Annotation
Parenthesis Annotation
Period Annotation
Roman Numeral Annotation
Diamond Annotation
Character Alternatives
No Alternates
… rand; aalt, calt, falt, jalt, salt, ssXX, hkna/vkna, rtla, vrt2
Character Shape half, ruby; ljmo, vjmo, tjmo
Traditional Characters trad
Simplified Characters smpl
JIS 1978 Characters jp78
JIS 1983 Characters jp83
JIS 1990 Characters jp90
Traditional Characters, Alternative Set 1…5 tnam, hojo, nlck
Expert Characters expt, locl
CJK Latin Spacing
Half-width hwid, halt
Proportional pwid, palt
Default Latin
Full-width Latin fwid
Cursive Connection init, medi/med2, fina/fin2/fin3; haln, nukt, vatu, rphf, pres, pstf/psts
Unconnected isol
Partially Connected calt, clig
Cursive curs
Design Complexity
Design Level 1
Design Level …
Diacritics
Show Diacritics
Hide Diacritics
Decompose Diacritics ccmp
Fractions
No Fractions
Vertical Fractions afrc
Diagonal Fractions frac, dnom, numr
Ideographic Spacing
Full Width fwid
Proportional pwid, palt
Kana Spacing
Full Width fwid
Proportional pwid, palt
Letter Case case
Upper & Lower Case
All Caps
All Lower Case
Small Caps smcp, pcap
Initial Caps c2sc, c2pc
Initial Caps and Small Caps
Number Case
Lower Case Numbers onum
Upper Case Numbers lnum
Number Spacing
Monospaced Numbers tnum
Proportional Numbers pnum
Ornament Sets ornm
None
Dingbats
Pi Characters
Fleurons
Decorative Borders
International Symbols
Math Symbols mgrk
Text Spacing
Proportional pwid, palt
Monospace fwid
Half-width hwid, halt
Normal
Vertical Position
No Vertical Position
Superiors supr
Inferiors subs, sinf
Ordinals ordn
Features that take a number of values:
Ligatures
Required Ligatures rlig, clig
Common Ligatures liga
Rare Ligatures hlig, dlig
Logos
Rebus Pictures
Diphthong Ligatures
Squared Ligatures
Squared Ligatures, Abbreviated
Mathematical Extras
Hyphen to Minus (‘-’ → ‘−’)
Asterisk to Multiply (‘*’ → ‘×’)
Slash to Divide (‘/’ → ‘÷’)
Inequality Ligatures
Exponents
Smart Swashes swsh, cswh
Word Initial Swashes
Word Final Swashes
Line Initial Swashes
Line Final Swashes falt
Non-Final Swashes jalt
Style Options
No Style Options
Display Text size
Engraved Text
Illuminated Caps
Titling Caps titl
Tall Caps
Transliteration locl
Typographic Extras
Hyphens to Em Dash (‘--’ → ‘—’)
Hyphen to En Dash (‘-’ → ‘–’)
Unslashed Zero zero
Form Interrobang (‘!?’/‘?!’ → ‘‽’)
Smart Quotes (‘"'"’ → ‘“’”’)
Periods to Ellipsis (‘...’ → ‘…’)
Binary features that can only be turned on:
All Typographic Features
Linguistic Rearrangement
Overlapping Characters
Vertical Substitution