The Kerning Model
Spacing gives each glyph a useful default fit. Kerning corrects the combinations that still need an adjustment because of the shapes facing each other. Build that distinction into the work: a large kerning list should not compensate for sidebearings that are wrong in ordinary text.
Spacing and Kerning
Recall the GSUB/GPOS distinction from The Process Architecture: substitution chooses the glyphs in a run, while kerning is positioning: it adjusts the relationship between glyphs that have already been selected. An alternate or ligature therefore needs suitable kerning coverage of its own.
Begin with reasonably settled spacing and compare text with kerning disabled. If a glyph looks consistently loose against many different neighbors, reconsider its spacing. If the problem belongs to a particular combination, such as an overhanging shape above a diagonal, kerning can correct that pair without changing every occurrence of either glyph.
Then enable kerning to judge the corrections in text. A negative value reduces the pair's separation; a positive value increases it. Neither sign is automatically wrong. Judge the result at the intended size and in surrounding text, not only as two enlarged outlines.
Kerning values belong to masters in a varying design. The amount needed for Light can differ from Bold, and intermediate designs need the corresponding calculated adjustment.
From Pairs to Classes
Flat kerning is the legacy model that records a value for each individual glyph pair. Repeating pairs across a large character set can make the stored data unnecessarily heavy. It is useful for isolated cases, but repeating the same correction for every accented variant creates redundant work and makes later changes harder to maintain.
Class kerning groups glyphs that need the same treatment on a particular side. A class-to-class value then covers combinations of members from both groups. Its purpose is shared behavior, not merely a shorter list.
A glyph's side profile is the shape of the space facing its neighbor. Accented A forms may share the base A's right profile, but an overhanging accent can create a different collision in some contexts. Inspect the actual designs rather than grouping solely by their names.
Use exceptions at the necessary scope
A kerning exception replaces the broader class value for a narrower case:
- Start with the class-to-class value for the ordinary relationship.
- Use glyph-to-class or class-to-glyph when only one member needs different behavior against the opposite group.
- Reserve glyph-to-glyph as the last resort for a true outlier that belongs to that exact combination.
An exception is the effective value for its scope, not an additional amount automatically added to the parent value. Removing it can reveal a broader class correction again.
Build classes with script and design context in mind. A Latin o and Greek omicron may share a drawing, but their text contexts and script-specific layout coverage differ. Keeping script groups separate makes those decisions reviewable. Likewise, some families benefit from separate base-letter classes even when their side profiles are close enough to share many values.
Cross-script text can occur, especially around punctuation and symbols, so “separate classes” does not mean every possible mixed-script adjustment is forbidden. Treat cross-script pair cleanup as a deliberate operation, not a universal typographic rule.
Kerning in FontLab
Visual kerning is FontLab's editable, per-master model of pairs, classes, and exceptions. This is why varying positioning is authored here rather than as one set of font-level literals; recall Authoring OpenType Layout and The Features Panel. You adjust it in the Glyph window and Kerning panel. FontLab can compile it into the OpenType GPOS kern feature when producing a font.
The editable data and the compiled feature are different representations. A handwritten or decompiled kern entry in the Features panel may describe behavior that the visual pair list does not fully represent. Know which representation you are editing and which one the export will use.
Use the Classes panel to organize shared side behavior, Kerning mode for interactive pair adjustments, and the Kerning panel for listing, filtering, and batch work. The Kerning panel’s pair preview shows the selected combination. Pairs & Phrases supplies repeatable test material; the Variations preview lets you inspect the calculated result between masters.
A systematic pass combines those views. Establish the classes, work through relevant strings, inspect exceptions and less common class members, then test the compiled output. The pair list records the decisions; the text determines whether they work.