Skip to content

Font spacing guide

Font spacing and side bearings: build rhythm before kerning

Learn how advance width and side bearings shape type rhythm, then space control glyphs, diagnose patterns, and proof the results inside Typelure.

By Typelure Editorial 7 min read

Spacing is the repeated interval between forms, not a cleanup task performed after the alphabet is drawn. A strong outline can still make a weak font when every word alternates between crowded and loose patches.

The useful unit of work is therefore not an isolated letter box but a sequence. Typelure exposes advance width and both side bearings for each glyph, then renders editable proof text from the project outlines so you can judge those values as rhythm.

Control proofTracking: 0

HHOHOO

Compare the white intervals between flat and round edges, not equal numeric bearings.

Typelure workflow schematic. Use it as a diagnostic model; judge the actual outlines and exported files in context.

1. Read the three horizontal metrics as one system

Advance width is the distance the text cursor moves after a glyph. The left side bearing is the distance from that glyph origin to the left edge of its outline. The right side bearing occupies the remaining space after the outline. In the OpenType metric model, right side bearing equals advance width minus the left side bearing and the outline width.

In Typelure, the Glyph inspector lets you edit Advance Width, Left Side Bearing, and Right Side Bearing. Editing the right bearing adjusts advance width from the current outline bounds and left bearing; it does not move the outline. Moving an outline and changing a bearing may produce the same visual offset in one pair, but they are different design decisions.

What each metric changes
MetricWhat movesUse it to control
Left side bearingThe space before the outlineHow the glyph approaches its left neighbor
Outline positionThe drawing inside the advance boxThe glyph’s placement relative to its origin
Right side bearingThe remaining space after the outlineHow the next glyph approaches
Advance widthThe next cursor positionThe glyph’s total horizontal measure

2. Establish control letters before spacing the alphabet

Begin with shapes that expose different edge conditions. H gives you two vertical sides; O gives you two rounds; n and o repeat the same comparison at x-height. A, V, and T reveal how diagonals and overhangs resist the values that work for straight forms.

Do not seek equal numeric bearings. Seek an even visual interval. A round edge normally needs to project farther into the neighboring space than a flat stem to appear equally close, while a diagonal creates a wedge-shaped opening that cannot be described by a single measured gap.

  1. 1

    Set H

    Choose a calm starting interval for two vertical stems and proof HHHH.

  2. 2

    Fit O beside H

    Compare HHOHOO and adjust the round bearings until the white intervals feel related.

  3. 3

    Repeat with n and o

    Use nnonn, noon, and nonoon to establish the lowercase rhythm.

  4. 4

    Introduce diagonals

    Test AVATAR, WAVY, VA, and TA without distorting all-purpose bearings to perfect one difficult pair.

3. Transfer spacing by edge family, then correct optically

Reuse a control value only where the visible edge behaves similarly. E, F, H, I, and L may share a useful starting logic on a stem side, while C, G, O, and Q form a round family. Similarity is a hypothesis, not a promise: an open C and a closed O often need different compensation.

Punctuation deserves its own families. A period, comma, colon, quotation mark, and parenthesis interact with text at different heights. Centering each mathematically inside the same width usually produces uneven sentences.

Useful spacing families
Edge familyStart withThen inspect
Flat stemsH, I, n, lRepeated vertical color and narrow counters
RoundsO, C, o, eOvershoot, openings, and curved white space
DiagonalsA, V, W, X, YTriangular gaps and overhangs
Open formsC, G, c, sThe apparent pull of terminals
Punctuation. , : ; ! ? quotesHeight, neighboring case, and sentence texture
Figures0, 1, 8Tabular-looking rhythm versus proportional shapes

4. Use proof strings that isolate a question

A pangram is useful for coverage, but it is inefficient for diagnosis because too many variables change at once. First repeat one control form around the glyph under review. Then move to words and sentences after the local interval is stable.

Choose the Spacing preset in Typelure’s Outline proof and keep Track at zero while judging the stored metrics. Use tracking only to explore a setting; a nonzero preview value can conceal bearings that are intrinsically too tight or too loose.

  • Uppercase flats and rounds: HHOHOO HOHO OHHO OHOH
  • Lowercase flats and rounds: nnonn nonoon noon onion
  • Diagonals and overhangs: AVATAR WAVY VA VA TA To Ty
  • Long rhythm: minimum aluminum Hamburgefontsiv
  • Figures: 00 11 88 0123456789 12:34 99.9%
  • Punctuation: H.H,H:H;H!H? n.n,n:n;n!n?
  • Mixed text: AVATAR, Type & rhythm. Sphinx of black quartz, judge my vow!

5. Diagnose the pattern, not the loudest pair

When one side of a glyph fails with many neighbors, change that side bearing. When both sides fail, review advance width and outline placement together. When only a specific pair fails while both glyphs work elsewhere, that is normally a kerning problem rather than a reason to damage the base spacing.

Typelure’s current project model does not store kerning. Use difficult pairs such as AV and To as diagnostics, but do not force their ideal fit through bearings if that breaks AA, AO, TV, or ordinary words. Record those exceptions for kerning in a production tool after the base spacing is dependable.

Spacing symptoms and likely fixes
SymptomLikely causeCheck next
A glyph looks loose on its left in many wordsLeft bearing is too largePlace it between H/H or n/n controls
Both sides look tightAdvance box or both bearings are too smallCompare outline width and family peers
Only AV looks openPair-specific diagonal spacePreserve base bearings and flag for kerning
Words drift despite good pairsInconsistent family valuesCompare repeated control strings
Space looks visibleU+0020 contains an outlineKeep space blank with a positive width

6. Finish with a metric audit

Run validation after spacing, then return to Outline proof at small and large sizes. Typelure checks that selected-goal glyphs have finite bearings and usable widths, but those checks cannot decide whether the rhythm is optically convincing.

Record difficult pairs separately from the base-spacing decisions so a future kerning pass can address true exceptions without reopening otherwise dependable bearings.

  • Proof with tracking set to zero.
  • Check H/O and n/o control strings before full paragraphs.
  • Keep ordinary spacing characters blank and positively measured.
  • Investigate negative bearings in context; they can be intentional, but they must remain finite and avoid unwanted collisions or clipping.
  • Review letters, figures, punctuation, and symbols rather than stopping at alphabetic words.
  • Export and reopen the font because the compiled file—not the inspector—is the deliverable.

Frequently asked questions

Should the left and right side bearings be equal?

Not generally. Symmetrical glyphs may begin with symmetrical values, but visual edge shape matters more than numeric equality. Rounds, diagonals, open forms, and punctuation often need asymmetric optical spacing.

Is a negative side bearing always an error?

No. An overhang can be intentional, especially for diagonals or punctuation. Treat it as a value to proof carefully rather than an automatic failure; Typelure requires the bearing to be finite and leaves the optical judgment to you.

Can I fix AV and To with kerning in Typelure?

Not in the current project model, which does not store kerning. Build sound general spacing in Typelure, keep a list of pair-specific exceptions, and finish those pairs in a production workflow that supports OpenType kerning.

Primary references

These references support the standards and file-format details in this guide. Typelure-specific behavior is described from the current product implementation and is dated above.