OpenType¶
Features, tables, and the names a font uses inside itself.
Use the entry for the relevant application. Draft terms require confirmation before publication.
Adobe Glyph List¶
Also written: AGL. Applies to: fontlab. Translatable: no.
The Adobe Glyph List maps standard glyph names to Unicode codepoints, so that a glyph named aacute is understood as U plus 00E1 by any tool that follows it. You name glyphs by it wherever it covers the character, because tools and text engines can then infer the mapping without being told twice. Where it does not cover a glyph, you fall back to a consistent scheme of your own and assign codepoints explicitly. Write the name in full on first mention, then AGL.
Write: You name the glyph aacute, following the Adobe Glyph List.
Not: Glyph names are given according to the AGL specification.
See also: glyph name, Unicode codepoint, cmap, glyph
cmap¶
Also written: cmap table, cmap subtable. Applies to: fontlab, transtype. Translatable: no.
The cmap table maps character codes to glyph indices. Its Unicode
subtables provide the initial mapping used in text rendering; other
subtables support particular encodings or variation sequences. FontLab
generates these mappings from the project's encoding data. A glyph without
its own Unicode assignment can still appear in typed text through
substitution, such as a ligature or alternate selected by the shaping
engine.
Write: FontLab builds the cmap from the codepoints you assigned.
Not: A glyph without a Unicode assignment can never appear in typed text.
See also: Unicode codepoint, glyph index, Private Use Area, OS/2 table
color font table¶
Also written: COLR, CPAL, sbix, CBDT, CBLC. Applies to: fontlab. Translatable: yes.
Colour-font tables store data for colour glyph rendering. Formats include
COLR with CPAL, SVG, sbix, and CBDT with CBLC. They differ in how
they describe vector or bitmap content and in application support. Including
several formats can extend coverage, but does not guarantee rendering in
every application. Identify the exported formats and test the intended
targets.
Write: You export COLR and CPAL, then check the font in each target app.
Not: Including several colour formats guarantees correct rendering everywhere.
See also: SVG, OTF, cmap, OS/2 table
contextual alternates¶
Also written: calt. Applies to: fontlab. Translatable: yes.
Contextual alternates, the calt feature, cover substitutions an app makes because of what sits around a glyph rather than because a reader asked. In a script face the text engine replaces an entry stroke after a letter that already ends in one, and in a face with repeating shapes it replaces the second of a pair. You write the rules with context in feature code, and apps usually leave calt on by default, which makes it the feature most likely to surprise you when a rule is too broad.
Write: You write the rule, and the text engine swaps the second l when two meet.
Not: Contextual alternates are swapped in by the feature when needed.
See also: OpenType feature, GSUB, lookup, stylistic set
feature code¶
Also written: FEA, feature file. Applies to: fontlab. Translatable: no.
Feature code is the text syntax that describes OpenType features: classes, lookups, substitution and positioning rules, grouped into features by tag. It is usually called FEA, after the file extension. You edit it in the Features panel, compile it to check for errors, and keep it under the same review as the drawings, since a rule that fires on the wrong glyph is as visible as a wrong outline. FontLab compiles it into GSUB and GPOS at export.
Write: You compile the feature code and FontLab reports the errors.
Not: Feature code gets compiled and errors are then reported.
See also: OpenType feature, OpenType class, lookup, GSUB
fractions¶
Also written: frac. Applies to: fontlab. Translatable: yes.
Fractions are numerical forms such as ½. In OpenType, the frac feature
supports diagonal fraction composition through glyph substitution. A font
may provide precomposed fraction glyphs, numerator and denominator forms, or
both. The separate numr and dnom features provide numerator and
denominator forms. Do not substitute the sups and subs feature names for
these mechanisms or promise support for every input sequence without testing
it.
Write: Test the frac feature with single-digit and multi-digit fractions.
Not: Use the sups and subs features as the numerator and denominator features.
See also: OpenType feature, GSUB, tabular figures, oldstyle figures
glyph index¶
Also written: Glyph ID, GID. Applies to: fontlab. Translatable: no.
A glyph index is the number a glyph occupies in the font's own order, counting from zero. Text engines work in indices after the cmap has done its job, and binary tables reference glyphs by index rather than by name. You rarely set one by hand, but you meet it when you inspect a compiled font or debug a lookup that fires on the wrong glyph. The index depends on glyph order, so it changes when the order does.
Write: The lookup reports the glyph index, not the glyph name.
Not: Glyph indices are being reported instead of names.
See also: glyph name, cmap, lookup, Unicode codepoint
glyph name¶
Applies to: fontlab, fontographer. Translatable: no.
A glyph name identifies a glyph in an editing project, feature code or a tool's data. Names such as a, a.sc and a.alt can distinguish related drawings. They are separate from Unicode assignments and glyph indices, and need not survive in every exported format. After renaming a glyph, check references in feature code, classes and scripts, including references the editor cannot update automatically.
Write: You name the small cap glyph a.sc, and the feature calls it by that name.
Not: Every exported font must retain the project's glyph names.
See also: glyph, Adobe Glyph List, glyph index, feature code
GPOS¶
Applies to: fontlab. Translatable: no.
GPOS is the OpenType table that holds positioning: kerning, mark attachment, cursive attachment, and any rule that moves a glyph without replacing it. FontLab writes your kerning here, as pairs and as class based positioning, and builds the mark lookups from your anchors. You reach it through feature code rather than by editing the table. A font may also carry a legacy kern table; modern text engines read GPOS and many ignore the other.
Write: FontLab writes the kerning into GPOS as class based positioning.
Not: Kerning is written into GPOS when the font is exported.
See also: GSUB, kerning, mark attachment, lookup
GSUB¶
Applies to: fontlab. Translatable: no.
GSUB is the OpenType table containing glyph-substitution lookups. It
supports operations such as replacing a glyph with an alternate, forming a
ligature or selecting a form from its context. FontLab compiles feature code
into these structures. To diagnose a missing substitution, check the glyphs,
compiled rules, feature selection, language and shaping order in the target
application.
Write: FontLab compiles the liga feature into GSUB.
Not: A missing substitution can only be a lookup-order problem.
See also: GPOS, OpenType feature, lookup, feature code
ligature¶
Applies to: fontlab, fontographer. Translatable: yes.
A ligature is a glyph used to represent a sequence of characters, such as
fi. OpenType substitution can replace several glyphs with one ligature
glyph. The liga and dlig features distinguish standard and discretionary
ligatures. Shaping does not change the underlying text; whether a later
document export preserves searchable text also depends on that export and
its text mappings.
Write: You draw the fi ligature, and the text engine substitutes it for the pair.
Not: Applying a ligature replaces the underlying text characters with one character.
See also: OpenType feature, GSUB, glyph name, stylistic set
localized forms¶
Also written: locl. Applies to: fontlab. Translatable: yes.
Localized forms are glyph variants selected for a text run's language. The
OpenType locl feature can provide these substitutions, for example
Bulgarian forms of Cyrillic letters. The shaping engine needs the relevant
language information, which the application may obtain from a setting or
other context. The substitution changes glyph selection, not the underlying
characters or their codepoints.
Write: With Bulgarian language information, the shaping engine can select the font's Bulgarian forms.
Not: The locl feature changes the Unicode codepoints in the text.
See also: OpenType feature, GSUB, lookup, Unicode codepoint
lookup¶
Applies to: fontlab. Translatable: yes.
A lookup groups substitution or positioning rules of one type in GSUB or
GPOS. Features reference lookups, and several features can share one. The
shaping engine selects features and may process them in script-specific
stages; within a stage, LookupList order matters. Source-code order alone
does not describe the complete shaping sequence. Inspect the compiled tables
and the target engine when diagnosing ordering problems.
Write: Check the compiled lookup order and the shaping engine's processing stages.
Not: Every shaping engine runs all lookups in feature source-code order.
See also: GSUB, GPOS, feature code, OpenType class
oldstyle figures¶
Also written: onum, text figures. Applies to: fontlab. Translatable: yes.
Oldstyle figures are numerals with varying heights, often including forms
with ascenders and descenders. The OpenType onum feature selects them when
provided by the font. Figure height and figure width are separate choices:
oldstyle figures can be proportional or tabular. Use tabular widths when
numerals must align in columns, whether their forms are oldstyle or lining.
Write: You draw the oldstyle figures, and apps apply the onum feature to reach them.
Not: Oldstyle figures cannot have tabular widths.
See also: tabular figures, OpenType feature, GSUB, fractions
OpenType class¶
Also written: glyph class, feature class. Applies to: fontlab. Translatable: yes.
An OpenType class is a named group of glyphs that feature code can address at once, written with an at sign before the name. One rule over two classes replaces a page of single rules, and one edit to a class reaches every rule that cites it. You define classes in the Classes panel or in feature code, and you keep their order stable, because a substitution between two classes pairs them by position. Kerning classes are a separate mechanism with the same idea.
Write: You add the glyph to the class, and every rule that cites it follows.
Not: Classes are used so that rules can be written more efficiently.
See also: feature code, lookup, kerning class, GSUB
OpenType feature¶
Also written: feature. Applies to: fontlab, fontographer. Translatable: yes.
An OpenType feature identifies typographic behaviour through a
four-character tag, such as liga, smcp or ss01. Feature records
reference substitution or positioning lookups. In FontLab, you can write
feature code and compile it into the font. Whether and when a feature is
applied depends on the shaping engine, script, language and application
settings; not every feature is a user-controlled switch.
Write: You write the smcp feature, and apps apply it when a reader turns small caps on.
Not: Every OpenType feature is an optional switch in the application's interface.
See also: feature code, GSUB, GPOS, lookup
OS/2 table¶
Applies to: fontlab, transtype. Translatable: no.
The OS/2 table carries the font's metadata for applications: vertical metrics, weight and width classes, embedding permissions, the panose values, and the codepage and Unicode range bits that say what the font covers. You fill it from Font Info rather than by hand, and you check it before release, because a wrong weight class puts a font in the wrong slot in a menu and wrong vertical metrics change line spacing in every browser. Write it with the slash: OS/2.
Write: You set the weight class in Font Info, and it ships in the OS/2 table.
Not: The OS2 table is filled in by the user in font info.
See also: ascender, descender, cmap, OTF
Private Use Area¶
Also written: PUA. Applies to: fontlab. Translatable: no.
A private-use area is one of three Unicode blocks whose codepoints can receive meanings by private agreement. Different fonts or systems may assign different meanings to the same private-use codepoint. Use a documented agreement when encoding custom symbols there. An alternate glyph reached through a feature does not require its own private-use assignment.
Write: You encode the icon in the Private Use Area so a reader can type it.
Not: A private-use codepoint has the same meaning in every font.
See also: Unicode codepoint, cmap, glyph name, stylistic set
small caps¶
Also written: smcp, c2sc. Applies to: fontlab. Translatable: yes.
Small caps are capital shapes drawn at roughly lowercase height, with their own weight and width rather than scaled capitals. Apps apply the smcp feature to put them in place of lowercase letters, and c2sc to put them in place of capitals, so a run set in both features becomes uniform. You draw them as separate glyphs, usually with a dot sc suffix, and write both features. Scaled capitals look thin beside real text, which is the reason to draw them rather than let an app fake them.
Write: You draw the small caps, and apps apply the smcp feature to reach them.
Not: Small caps can be generated by the app from the capitals.
See also: OpenType feature, GSUB, ligature, stylistic set
stylistic set¶
Also written: ss01, ssXX. Applies to: fontlab. Translatable: yes.
A stylistic set is a numbered group of alternate glyphs a reader can switch on, from ss01 through ss20. Each set holds alternates that belong together: a single storey a with a matching g, a set of flat topped figures. You name each set in the font so an app can show a readable label instead of a number, and you keep one idea per set. A set that mixes unrelated alternates gives a reader nothing they can decide about.
Write: You name ss01 Single storey a so apps can label it.
Not: Stylistic sets are named so that they can be labelled by apps.
See also: OpenType feature, contextual alternates, GSUB, small caps
tabular figures¶
Also written: tnum. Applies to: fontlab. Translatable: yes.
Tabular figures all carry the same advance width, so columns of numbers line up whatever digits they contain. Apps apply the tnum feature to put them in place of proportional figures. You draw them as a separate set and give every one the same width, centring the narrow digits inside it. They matter in any table, price list, or running total, and they look loose in prose, which is why a font offers both sets rather than choosing for the reader.
Write: You give every tabular figure the same advance width.
Not: Tabular figures are given identical widths so columns will align.
See also: oldstyle figures, advance width, OpenType feature, fractions
Unicode codepoint¶
Also written: codepoint, code point. Applies to: fontlab, fontographer. Translatable: no.
A Unicode codepoint is an integer from U+0000 to U+10FFFF. Not every
codepoint has an assigned character. Write it with U+ and at least four
hexadecimal digits, as in U+0041 for A. In a font editor, a glyph's Unicode
assignment connects it to an encoded character; the exported cmap records
the relevant mapping.
Write: You assign U+0041 to the A, and FontLab writes it into the cmap.
Not: Every Unicode codepoint has an assigned character.
See also: character, cmap, glyph name, Private Use Area