Skip to content

Composite glyphs: how é works, and why subsetting can break it

é usually stores no outline of its own — it points at e and an accent. How composites work, why naive subsetting orphans them, and when to decompose.

In Roboto — the system font of Android — 1,402 of its 3,366 glyphs store no outline of their own. The letter é is one of them: it's a small record saying "draw e here, then draw ´ shifted 340 units to the right." That's a composite glyph, and the mechanism behind three things every font user bumps into eventually: why fixing one letter fixes twenty accented ones, why é sometimes loses its accent after subsetting, and why some editors refuse to let you edit a composite's outline directly.

This guide explains how composites work, when they save you space and consistency, when they break, and how Font Studio exposes all of it — building them, editing their parts, decomposing them, and subsetting without orphaning them.

What a composite actually is

In a TrueType glyf table a glyph is either simple (a list of contours and points) or composite (a list of component references):

glyph "eacute"
  component: "e"      at offset x=0,   y=0
  component: "acute"  at offset x=340, y=0

The renderer draws the referenced glyphs, placed at the given offsets. The letter é doesn't contain its own curves — it points at two other glyphs and says where to put them. In Roboto, that's e (U+0065) plus the spacing acute accent (U+00B4) — 340 units over, level with the baseline — and the glyph inherits its 1,086-unit advance from the base. Multiply that by 1,402 glyphs and the saving is real: every é, è, ê, ë, á, á̈… reuses one e and a handful of accents instead of carrying its own copy of the outlines.

The design-time payoff is bigger than the bytes. Change the shape of e, and every accented letter built on it updates — automatically, because they all are the same outline, referenced. Fix the accent placement once and it's consistent across the whole font. Professional type foundries build accented glyphs exactly this way.

Why subsetting can break é

The classic failure: take a font, subset it down to "the characters my app uses", and suddenly é renders as a bare e — or a box. The cause is almost always a subsetter that kept é (it's in the keep-list) but dropped the plain e (it isn't). é's record still points at glyph ID of e… which is no longer in the font.

The fix is composite closure: before removing anything, expand the keep-list through component references — if é stays, everything é points at stays too, transitively. Font Studio's subsetter does this (removing a base letter that accented glyphs still reference keeps the base automatically), and so does its glyph remover, which runs the same engine underneath. The removal guide covers the workflow; the guarantee you care about here is: subsetting in Font Studio never orphans a composite.

Editing composites in Font Studio

Three rules cover the editing surface:

  1. A composite's outline can't be point-edited directly — there are no points to edit. In the glyph sheet the button reads Edit Parts instead of Edit Outline, and it opens the Composite Builder to move the components.
  2. Tools that do rewrite outlines — the Pixel Editor, the Effects hub — flatten a composite into plain contours when applied, and say so.
  3. Decompose to Contours (free, in the glyph sheet) does the flattening on demand: the glyph becomes a simple outline you can point-edit in the Glyph Designer, at the cost of losing the live link to its base.
Glyph detail sheet for é in Roboto showing the Edit Parts action for composite glyphs
é in Roboto opens with Edit Parts — 'Move the glyphs this one is built from' — because it's a composite, not an outline.
Composite Builder showing é's parts: the e base at x 0 and the acute accent at x 340
The Composite Builder on é (glyph 2292): e U+0065 as base at x 0, ´ U+00B4 at x 340 — Roboto's real recipe, editable by drag, nudge or Centre on base.

Building composites: the builder and the batch path

The Composite Builder (free) handles three jobs in one screen — Convert to Composite (rebuild an existing plain glyph from parts), Edit Parts (move an existing composite's components), and Build from Parts (New Glyph → From Parts):

  • For accented Latin letters a Suggested from Unicode card appears (é = e
    • acute): tap Use and the parts are placed the way the font's own accents are designed — lowercase height for lowercase bases, lifted for capitals.
  • Otherwise Add part, pick from the glyph grid (search by character, U+0301-style codes, or #glyph IDs), then drag parts with Snap on, or use Nudge arrows (1/10/50 units) and Centre on base for exact placement. Parts are moved, never scaled or rotated.
  • Advance width: Keep, match the Base part, or Custom.

For adding many accented letters at once, Add Accented Letters (Command Center → CHARACTERS, or the "Add N" button next to a language in the Info tab's Language Coverage) finds every accented Latin letter the font can build from its own glyphs and adds them all as composites in one step — previewing is free, adding is Pro. It also works backwards: "NEEDS ONE MORE PIECE" names the single accent glyph that would unlock a whole batch ("add the caron, U+030C, to unlock 14 letters").

When to decompose, when to keep

Keep composites when you can:

  • file size (one outline, many references — the whole point),
  • consistency (fix the base once),
  • and future editing (move an accent on every É at once by… moving it on none of them — fix the placement in the builder once).

Decompose when you must:

  • the glyph needs outline surgery the parts can't express (a genuinely different é shape, not just a moved accent),
  • the font is heading into a pipeline that mangles composites (some web font optimizers and older rasterizers),
  • or you're importing into a tool that doesn't understand them.

And one diagnostic worth remembering: if editing e in some font you downloaded also changes its é, è, ê — that's not a bug, that's the composites doing exactly what they were built to do.

What to try next

On-device processing

Solve it in Font Studio

Free to download on Android and iPad. Every workflow in this guide runs on your device — your font files are not uploaded.