OpenType features

 

By Stefan Peev, July 24, 2018

 

Why we need to understand OpenType features

Much of the font creator programs offer nowadays simplified ways to create OpenType features. But when the things go wrong these programs could not help us. So we need to understand the structure, the logic and the syntax of the OpenType features.
Like in every other process, which we want to know how to rule, we need to start with some learning. Here are the basic resources for OpenType features.

Please, note that even well written OpenType features could not work. Why? Because the use of OpenType features relies on your applications’ support. Click here to see OpenType features’ support in applications. Check here for the browsers’ support for font-feature-settings.

Glyph substitution (GSUB) rules

GSUB 
LookupType 1
Single substitution
aalt abvf c2pc c2sc case cfar cv01-cv99 dcap dnom dtls expt fin2 fin3 fina flac frac fwid hist hkna hngl hojo hwid init isol ital jajp jp04 jp78 jp83 jp90 ljmo lnum locl ltra ltrm med2 medi mgrk nalt nlck numr onum ornm pcap pnum pwid qwid rtla rtlm ruby rvrn salt sinf smcp smpl ss01-ss20 ssty subs sups swsh titl tjmo tnam tnum trad twid unic vert vjmo vkna vrt2 vrtr zero
GSUB 
LookupType 2
Multiple substitution 
ccmp stch RQD
GSUB 
LookupType 3
Alternate substitution 
aalt falt hngl jalt jajp jp78 nalt ornm rand salt ssty swsh trad RQD
GSUB 
LookupType 4
Ligature substitution 
5.
GSUB LookupType 5
Contextual substitution
6.
GSUB LookupType 6
Chaining contextual substitution
6.1.
GSUB LookupType 6
Specifying a Chain Sub rule and marking sub-runs
6.2.
GSUB LookupType 6
Specifying exceptions to the Chain Sub rule
7.
GSUB LookupType 7
Extension substitution
8.
GSUB LookupType 8
Reverse Chaining Single Substitution

1. [GSUB LookupType 1] Single substitution
2. [GSUB LookupType 2] Multiple substitution
3. [GSUB LookupType 3] Alternate substitution
4. [GSUB LookupType 4] Ligature substitution
5. [GSUB LookupType 5] Contextual substitution
6. [GSUB LookupType 6] Chaining contextual substitution
6.1. Specifying a Chain Sub rule and marking sub-runs
6.2. Specifying exceptions to the Chain Sub rule
7. [GSUB LookupType 7] Extension substitution
8. [GSUB LookupType 8] Reverse Chaining Single Substitution

OpenType Features

feature numr
feature dnom
feature frac
feature sups
feature subs
feature sinf
feature ordn
feature tnum
feature onum
feature pnum
feature lnum
feature zero
feature locl
Bulgarian Cyrillic – .loclBGR
Serbian Cyrillic – .loclSRB
Macedonian Cyrillic – .loclMKD
Bashkir Cyrillic – .loclBSH
Chuvash Cyrillic – .loclCHU
Romanian Latin – ROM
Moldovan Latin – MOL
Turkish Latin – TRK
feature ccmp
feature case
feature c2sc
feature smcp
feature liga
feature dlig
feature calt

Glyph Name Suffixes

Feature Name/Description
Feature Tag
Glyph Suffixes
SMALL CAPS
smcp
.sc .smcp .small
OLDSTYLE FIGURES
onum
.osf .oldstyle
TABULAR FIGURES
tnum
.tf
PROPORTIONAL FIGURES
pnum
.lf .fitted
TABULAR OLDSTYLE FIGURES
.tosf .taboldstyle
SUPERIORS
sups
.sups .superior
INFERIORS
sinf
.sinf .inferior
NUMERATORS
numr
.numr .numerator
DENOMINATORS
dnom
.dnom .denominator
CASE ACCENTS
case
.case .cap
CAPITALS TO SMALL CAPS
c2sc
.c2sc

OpenType Classes and Glyphs in the classes

Class names
 
Glyphs in the class
lf
 
[zero one two three four five six seven eight nine]
osf
 
[zero.osf one.osf two.osf three.osf four.osf five.osf six.osf seven.osf eight.osf nine.osf]
tf
 
[zero.tf one.tf two.tf three.tf four.tf five.tf six.tf seven.tf eight.tf nine.tf]
tosf
 
[zero.tosf one.tosf two.tosf three.tosf four.tosf five.tosf six.tosf seven.tosf eight.tosf nine.tosf]
lfPunct
 
[space period comma]; # original
osfPunct
 
[space.osf period.osf comma.osf]; # identical to original
tfPunct
 
[space.tf period.tf comma.tf]; # by Lining Tabular width
tosfPunct
 
[space.tosf period.tosf comma.tosf]; # by Oldstyle Tabular width

Further Readings

Tal Leming: OpenType Cookbook
Martin Wenzel, Christoph Koeberlin: An Introduction to OpenType Substitution Features
Glyphs: Tutorials Tagged “OpenType Features”
Glyphs: Features, part 4: positional alternates
Glyphs: Ligatures
FontLab VI Help: OpenType Features
Microsoft Typography: Feature tags
Adobe: AFDKO
Adobe Type Tools: AGL (Adobe Glyph List) and AGLFN (Adobe Glyph List For New Fonts)
GlyphsInfo: GlyphsInfo Repo
Simon Cozens: OpenType Features
Simon Cozens: OpenType Feature Database
Simon Cozens: OpenType Feature Database (website)
WIKIPEDIA: List of typographic features
TYPEDRAWERS: Collecting (glyph name) suffixes
TYPEDRAWERS: Help to make a connecting font
David Blatner: OPENTYPE STYLISTIC ALTERNATIVES AND CHARACTER VARIANTS
Tunghsiao Liu: The Complete CSS Demo for OpenType Features
 

Remarks

Stefan Peev

Stefan Peev is a graphic designer and typographer from Bulgaria.

 

If you like this site and find it useful, help us to make it better by giving feedback, suggesting improvements or by donation.

Donate
Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.