Decomposing vs Keeping References in FontForge

In FontForge, composite glyphs like accented letters often use components from other glyphs rather than duplicating paths from scratch. The primary difference between keeping a reference and decomposing it lies in whether the glyph maintains a dynamic link to the original source paths or converts those paths into standalone, editable vector points. Keeping a reference ensures synchronization and smaller file sizes, while decomposing (or unlinking) a reference grants independent control over the individual curves at the cost of automatic updates.

What is a Reference in FontForge?

A reference is an instance of an existing glyph embedded inside another glyph. For example, the accented character á typically consists of a reference to the base glyph a and a reference to the diacritic mark acute. Rather than drawing new outlines, FontForge simply points to the master glyphs and positions them accordingly.

Keeping a Reference

When you keep a reference inside a glyph, FontForge stores a pointer to the original glyph’s outline.

  • Dynamic Updating: If you modify the base shape (such as redrawing the bowl or stem of the letter a), every composite glyph that references it will automatically update to reflect those changes.
  • Consistency: It guarantees visual consistency across all accented variants, ligatures, or composite characters throughout your typeface.
  • File Size Efficiency: Font formats like TrueType and OpenType support composite glyphs natively. Using references reduces the overall font file size because the outline data is not duplicated.
  • Limitations: You cannot edit individual points or paths of a referenced shape inside the composite glyph window. You can only scale, rotate, flip, or translate the component as a whole.

Decomposing a Reference

Decomposing a reference—accessible in FontForge via Edit > Unlink Reference—breaks the link to the parent glyph and converts the referenced outline into standard Bezier splines directly inside the current glyph.

  • Full Vector Control: Once decomposed, you can manipulate individual nodes, adjust specific segments, delete unwanted parts, or manually tweak curves.
  • Overlap Removal: You can use operations like Element > Overlap > Remove Overlap to merge intersecting components (e.g., joining an accent to a letterform or fusing parts of a ligature) into a single continuous path.
  • Independence: Changes made to the original base glyph will no longer propagate to the decomposed glyph, eliminating the risk of accidental side effects in customized characters.
  • Limitations: You lose automatic synchronization. If you later refine the master glyph, you must manually update or re-import it into every decomposed glyph where that shape was used.

When to Keep vs. When to Decompose

  • Keep References when building standard diacritics, monetary symbols, or any character where the components should always match the source glyphs exactly. This should be your default workflow during the initial design phase.
  • Decompose References when a specific glyph requires unique optical adjustments, such as shifting a stroke to balance negative space, modifying an accent shape to prevent collisions with ascenders, or preparing outlines for final production formats that require flattened curves.