Skip to content

Font engineering

Spacing, kerning, masters, hinting, and the structure of a font.

Use the entry for the relevant application. Draft terms require confirmation before publication.

advance width

Also written: advance, width. Applies to: fontlab, fontographer, transtype. Translatable: yes.

Advance width is the horizontal distance allocated to a glyph before layout adjustments, measured in font units. In an OpenType font, the base values are stored in the hmtx table. Kerning and other positioning operations can adjust advances during layout without rewriting those base values. Advance width differs from the visible outline width; a space can have an advance without an outline.

Write: You set the advance width in the Metrics panel.

Not: Kerning never changes glyph advances during layout.

See also: sidebearing, metrics, kerning, UPM

alignment zone

Also written: blue zone, zone. Applies to: fontlab. Translatable: yes.

An alignment zone is a region around a common vertical alignment, such as the baseline or cap height, used in PostScript hinting. It can include the overshoot of rounded letters. A rasterizer uses zone information when fitting outlines to a pixel grid. Keep this mechanism distinct from design measurements and from the control-value and instruction mechanisms used in TrueType hinting.

Write: You declare the x-height zone so the o and the x snap together.

Not: All font formats use PostScript alignment zones for hinting.

See also: hinting, autohinting, overshoot, x-height

anchor

Applies to: fontlab, fontographer. Translatable: yes.

An anchor is a named attachment point in a glyph that says where a mark belongs. A base letter carries a top anchor, and the accent carries a matching one, so the accent lands in the same relation on every letter that uses it. You place anchors in the Anchors and Pins panel, and FontLab uses them both to build composites and to generate mark attachment lookups in GPOS, which is what positions marks in text the font never composed itself.

Write: You place the top anchor, and FontLab attaches the accent to it.

Not: Anchors are used so that marks can be positioned correctly.

See also: mark attachment, component, composite glyph, GPOS

autohinting

Applies to: fontlab. Translatable: yes.

Autohinting generates hints for a font from its outlines and its declared stems and zones, in one pass over the glyphs. It is a starting point rather than a finish: it hints the regular cases well and leaves the awkward glyphs for you. You run it after the alignment zones and standard stem widths are correct in Font Info, because it reads them. Then you check the glyphs that matter at text sizes and correct by hand what the pass got wrong.

Write: You set the zones in Font Info, then run autohinting.

Not: Autohinting will take care of the hinting for you.

See also: hinting, alignment zone, stem link, CVT table

axis

Also written: design axis. Applies to: fontlab, fontographer. Translatable: yes.

An axis is one dimension of font variation, such as weight, width or optical size. In an OpenType variable font, each axis has a four-character tag and a minimum, default and maximum value. Registered tags, such as wght, have defined meanings. Preserve tag spelling and case, and check the axis registry when assigning a custom tag.

Write: You declare the weight axis, then place each master on it.

Not: Every axis tag consists of four lowercase letters.

See also: design space, master, instance, variable font

component

Applies to: fontlab, fontographer. Translatable: yes.

A component is a reference to another glyph placed inside this one, so that aacute holds the a and the acute rather than copies of their outlines. Change the source glyph and every glyph that references it follows. You build composites from components, position them with anchors, and keep them as references through to export, where a TrueType flavoured font stores them in the glyf table. In FontLab a component is one kind of element reference.

Write: You place the acute as a component, and it follows the source glyph.

Not: Components are placed so that composite glyphs can be built.

See also: composite glyph, element, element reference, anchor

composite glyph

Also written: composite. Applies to: fontlab, fontographer. Translatable: yes.

A composite glyph is built from references to other glyphs rather than from its own outlines: an accented letter, a currency symbol with a bar, a stacked fraction. You assemble it from components and anchor them to the base, so a change to the base or to the mark reaches every composite that uses it. Composites keep a large accented character set consistent and small. A composite that has been decomposed is no longer one, and no longer follows its sources.

Write: You build aacute as a composite glyph from the a and the acute.

Not: Composite glyphs are built out of components by the user.

See also: component, anchor, element reference, glyph

conversion profile

Applies to: transtype. Translatable: yes.

A conversion profile is the saved set of choices TransType applies to a conversion: the output format, the naming scheme, the filters, and the options that go with them. You build a profile once for a job you repeat, then run it over a new set of sources without repeating the decisions. It matters because a family converted with two different sets of options ships as two families that do not quite match, which shows up in a font menu rather than in a test.

Write: You save the conversion profile and run it over the next family.

Not: Conversion profiles are saved so settings can be reused.

See also: TransType 5, font target, typographic family name, OTF

CVT table

Also written: cvt, control value table. Applies to: fontlab. Translatable: no.

The CVT table holds the control values that TrueType hinting instructions refer to: the stem widths, heights, and other measurements a font wants held constant across glyphs. An instruction cites a CVT entry rather than a raw number, so one change to the table reaches every glyph that cites it. You work with it through the TrueType Hinting panel. It ships in the font, alongside the instructions themselves and the prep and fpgm programs that set the machine up.

Write: The instruction reads its stem width from the CVT table.

Not: Stem widths are read from the cvt by the instructions.

See also: hinting, stem link, TTF, autohinting

design space

Applies to: fontlab. Translatable: yes.

A design space describes the positions defined by a font project's variation axes. Masters provide source data at specified locations; instances represent results at selected locations. User coordinates and internal design coordinates may be connected by a mapping, or may have the same values. State which coordinate system a number belongs to when the distinction affects a procedure.

Write: You move through the design space in the Variations panel.

Not: User coordinates and design coordinates always have different values.

See also: axis, master, instance, interpolation

element

Applies to: fontlab. Translatable: yes.

An element is FontLab's container for a piece of drawing inside a glyph: one or more contours, an image, or a reference to another element. A glyph holds elements, and an element holds contours, which is the layer of structure that makes a serif or a stem reusable across a family. You work with elements in the Elements panel and with the Element tool. The word is FontLab's own; other editors call the nearest thing a path group or a component.

Write: You select the element and reuse it in the other glyphs.

Not: Elements can be reused for the building of other glyphs.

See also: element reference, component, contour, glyph

element reference

Applies to: fontlab. Translatable: yes.

An element reference is a placed copy of an element that still points at the original. Edit the original and every reference updates. You use references to share a serif, a stem, or a whole letter across a family, and you decompose a reference only when a glyph genuinely needs to diverge. A component is the familiar case of an element reference: one glyph placed inside another. Keep references intact through the design phase, since decomposing early throws away the link that makes a late change cheap.

Write: You keep the serif as an element reference so one edit reaches every glyph.

Not: Element references are kept so that edits can be propagated.

See also: element, component, composite glyph, glyph

font target

Also written: target. Applies to: transtype. Translatable: yes.

A font target is what TransType produces from a source: the output font, with its format, its names, and the filters applied on the way. Sources go in on one side and targets come out on the other, and one source can produce several targets. You set the target options before you convert, and you name the target in a procedure step so a reader knows which side of the conversion a setting belongs to.

Write: You set the format on the target, and TransType converts the source into it.

Not: The target gets converted from the source by the app.

See also: TransType 5, conversion profile, OTF, TTC

hinting

Applies to: fontlab, fontographer. Translatable: yes.

Hinting is the extra information a font carries so that its outlines land predictably on a pixel grid at small sizes. PostScript hinting declares stems and alignment zones and leaves the rasterizer to interpret them. TrueType hinting gives instructions that move points explicitly, with the control values in the CVT table. You work on PostScript hints in the glyph and in Font Info, and on TrueType hints with the TrueType Hinting tool and panel. Autohinting produces a starting point you then correct.

Write: You hint the stems, and the rasterizer snaps them to the pixel grid.

Not: Stems are snapped to the grid by the hinting that is applied.

See also: autohinting, alignment zone, stem link, CVT table

instance

Applies to: fontlab. Translatable: yes.

An instance is a particular result at a location in a font's variation space. A named instance, such as Semibold, gives a selected location a name that applications can present. Other locations need not have names. In FontLab, configured instances can be exported as static fonts or included as named instances in a variable font.

Write: You define the Semibold instance, and FontLab interpolates it from the masters.

Not: Every possible instance must have a style name.

See also: master, axis, design space, variable font

interpolation

Applies to: fontlab, fontographer. Translatable: yes.

Interpolation calculates values between source values. In font design, it can calculate outlines, metrics and other data from masters at specified design-space locations. Outline interpolation requires corresponding contour and point structures. Structural compatibility makes the calculation possible, but does not guarantee a good drawing: inspect intermediate results as well as the masters. Extrapolation calculates beyond the source range.

Write: FontLab interpolates the Medium weight from the Light and Bold masters.

Not: Compatible masters guarantee good outlines at every intermediate position.

See also: master, master compatibility, instance, variable font

kern exception

Applies to: fontlab. Translatable: yes.

A kern exception is a pair value that overrides what the classes would otherwise apply. One member of a class rarely behaves like the rest, and the exception says so without breaking the class apart. You create one in the Kerning panel by kerning the single pair while its classes stay in place. Keep exceptions few: a class with many exceptions is the wrong class, and the cheaper fix is to split it rather than to list every disagreement.

Write: You add a kern exception for the one pair that the class gets wrong.

Not: Exceptions can be created for pairs that are not being handled correctly.

See also: kerning class, kerning pair, kerning, GPOS

kerning

Applies to: fontlab, fontographer, transtype. Translatable: yes.

Kerning adjusts the spacing of particular glyph combinations beyond their normal advances. A pair such as AV may need a different gap from the one produced by its unadjusted metrics. OpenType fonts commonly store horizontal kerning in GPOS lookups associated with the kern feature; some formats and workflows use a separate kern table. Name the mechanism when it matters to export or compatibility.

Write: This export stores kerning in GPOS lookups for the kern feature.

Not: Every font format stores kerning in GPOS.

See also: kerning pair, kerning class, visual kerning, GPOS

kerning class

Also written: class kerning. Applies to: fontlab, transtype. Translatable: yes.

A kerning class groups glyphs that need the same kerning. You put every glyph that behaves alike on one side into one class, then kern the class once instead of kerning each pair inside it. FontLab applies the class value to every member pair and keeps single pairs as exceptions where a member needs its own value. Classes matter because a text face carries thousands of readable pairs, and a hand kerned list of that size is unmaintainable. FontLab writes the result into GPOS as class based positioning.

Write: A kerning class groups glyphs that kern alike.

Not: A kerning class is a way of grouping glyphs together for the purpose of kerning.

See also: kerning, kerning pair, kern exception, GPOS

kerning pair

Applies to: fontlab, fontographer. Translatable: yes.

A kerning pair associates two glyphs, or two kerning classes, with a spacing adjustment. In horizontal kerning, a negative value normally reduces the gap and a positive value increases it. An individual glyph pair may provide an exception to class kerning, but it can also exist without a class rule. Check pairs in representative text as well as in isolation.

Write: You nudge the pair until the gap matches the pairs around it.

Not: Every individual kerning pair overrides an existing class rule.

See also: kerning, kerning class, kern exception, GPOS

mark attachment

Applies to: fontlab. Translatable: yes.

Mark attachment positions a combining mark relative to a base glyph, a ligature component or another mark. OpenType GPOS lookups describe the anchor relationships, and the shaping engine applies the positioning during layout. FontLab can generate attachment code from suitable anchors. Check the relevant generation settings and test combinations, including stacked marks, rather than assuming that every anchor automatically becomes a lookup.

Write: Check the generated mark attachment lookups with stacked accents.

Not: Mark attachment can position a mark only against a base glyph.

See also: anchor, GPOS, lookup, composite glyph

master

Applies to: fontlab, fontographer. Translatable: yes.

A master provides source outlines and other font data at a specified location in a design space. Masters can describe weight, width or other variations, including intermediate locations. FontLab uses corresponding data from masters to calculate instances. For outline interpolation, check contour and point compatibility in each affected glyph; the word master alone does not guarantee that every glyph is present or compatible.

Write: You draw the Bold master, and FontLab interpolates the weights between.

Not: Masters can represent only the lightest and boldest weights.

See also: instance, axis, interpolation, master compatibility

master compatibility

Applies to: fontlab. Translatable: yes.

Master compatibility is the condition every glyph must meet before it can interpolate: the same number of contours in the same order, with the same number of nodes and the same start point in each. FontLab reports incompatible glyphs and gives you Matchmaker to repair them by matching contours and start points between masters. Fix compatibility before you tune shapes, because a repair that reorders nodes moves every curve that depends on them.

Write: You open Matchmaker and match the contours between masters.

Not: Compatibility issues will be fixed by Matchmaker automatically.

See also: master, interpolation, Matchmaker, extremum

metrics

Applies to: fontlab, fontographer, transtype. Translatable: yes.

Metrics are the measurements that place a glyph in a line: its advance width and its two sidebearings. Vertical metrics are a separate set, the font wide values for ascender, descender, and line gap. You work on horizontal metrics in the Metrics panel and with the Metrics tool, and on vertical metrics in Font Info. Say which set you mean whenever a page discusses both, because a reader who applies a horizontal instruction to the vertical fields breaks line spacing everywhere the font is used.

Write: You edit the horizontal metrics in the Metrics panel.

Not: Metrics are edited in the metrics panel by the user.

See also: advance width, sidebearing, ascender, kerning

sidebearing

Also written: LSB, RSB, side bearing. Applies to: fontlab, fontographer. Translatable: yes.

A sidebearing is the space between a glyph's outline and the edge of its advance width: the left sidebearing before the shape, the right sidebearing after it. Together with the advance width it sets how the glyph spaces against every other glyph, which is the work that carries a text face further than kerning does. You edit sidebearings in the Metrics panel or with the Metrics tool, one glyph at a time or across a selection, and you check them in a word rather than in isolation.

Write: You widen the left sidebearing of the n in the Metrics panel.

Not: Side bearings can be adjusted so spacing gets improved.

See also: advance width, metrics, kerning, tracking

Also written: stem hint. Applies to: fontlab, vexy-vextra. Translatable: yes.

A stem link ties two edges of a stroke together as a stem, so hinting can hold their distance as the size changes. A vertical link governs a horizontal measurement and a horizontal link governs a vertical one. You add links in the glyph, either by hand or from an autohinting pass, and you keep them consistent with the standard stem widths declared in Font Info. Vextra reuses the term for the paired edges it detects in artwork that is not type.

Write: You add a stem link across the upright of the H.

Not: Stem links get added to the stems by the hinting process.

See also: hinting, autohinting, stem, CVT table

styling group name

Also written: SGN, styling link value, SLV, styling link name, SLN. Applies to: transtype. Translatable: yes.

The styling group name, SGN, ties together the styles an application reaches through its bold and italic buttons, and the styling link value and styling link name say which slot each style takes in that group. The mechanism is older than typographic family names and narrower: four slots, no more. You set these fields in TransType when a family has to behave correctly in applications that still drive style selection from those buttons.

Write: You set the styling group name so the bold button reaches the Bold style.

Not: Styling groups are set up so bold and italic will work.

See also: typographic family name, Groups, TransType 5, conversion profile

tracking

Applies to: fontlab, transtype. Translatable: yes.

Tracking changes the spacing across a run of text, rather than correcting particular pairs as kerning does. Layout applications apply it to text. TransType's Tracking filter changes spacing in the font data itself. That changes the font's starting metrics; a layout application can still apply additional tracking to text set in the resulting font.

Write: Apply the Tracking filter to change the font's spacing.

Not: A layout app cannot add tracking after TransType changes the font's metrics.

See also: kerning, sidebearing, metrics, TransType 5

typographic family name

Also written: TFN, typographic style name, TSN. Applies to: transtype, fontlab. Translatable: yes.

The typographic family name, TFN, is the name that groups every style of a family under one entry, and the typographic style name, TSN, is what distinguishes a style inside it. They sit beside the older four style family and style names that legacy applications read. You set them in TransType and in Font Info, and you keep them consistent across a family, because an app that reads these fields builds its font menu from them.

Write: You set the typographic family name once and vary only the style name.

Not: TFN and TSN get set so the family will group correctly.

See also: styling group name, TransType 5, OS/2 table, font target

variable font

Applies to: fontlab, fontographer. Translatable: yes.

A variable font contains data for design variation along one or more axes. Applications select axis values and calculate the corresponding outlines and other variable data. Named instances identify selected locations, but users are not limited to those locations when the application exposes axis controls. A variable font's supported range depends on its data; it need not contain every style in the family.

Write: You export the family as a variable font with a weight axis.

Not: Every variable font contains all the family's styles.

See also: axis, master, instance, design space

visual kerning

Applies to: fontlab. Translatable: yes.

Visual kerning is kerning that FontLab proposes by measuring the shapes, so that a font gets a usable first pass without a person typing thousands of values. You run it over a selection, then review what it produced, because a measurement of two outlines does not know about the words a reader will meet. Treat the result as a draft: keep the pairs it got right, correct the ones it did not, and kern the difficult pairs by eye in real words.

Write: You run visual kerning, then review every pair it proposes.

Not: Visual kerning will kern the whole font for you automatically.

See also: kerning, kerning pair, kerning class, FontLab 8