Accéder au contenu principal
☀️ Summer Founder's Deal : licence à vie FontCreator à $49 (au lieu de $199). Offre limitée — se termine le 14 juillet. Profiter de l'offre →

FontCreator Tutorials

Add Accents with Anchors & Complete Composites

written by Erwin Denissen, published June 26, 2026

You'll need: FontCreator (Windows and macOS), a font with its base letters drawn, and the combining marks (or the willingness to add them).

To add accents to a font properly, you let the font editor place the marks for you. The modern approach is anchor-based: you put anchors on bases and marks, run Complete Composites to build accented characters, and generate the OpenType ccmp, mark, and mkmk features so the marks also position correctly when a user types a base plus a combining mark. FontCreator does the heavy lifting on Windows and macOS alike — you rarely write a line of feature code.

Precomposed vs combining marks

There are two ways a font can present an accented letter, and you generally want both.

  • Precomposed characters are single Unicode characters that already combine a base and a mark — Ccedilla, aacute, edieresis. They exist mainly for legacy round-tripping, and the Unicode consortium no longer adds new ones. Most shaping engines (Windows, Microsoft apps, Firefox) apply Unicode normalization form C, so typing a base plus a combining mark turns into the precomposed character if your font defines it. So you still want to include the common precomposed characters.
  • Combining marks are non-spacing mark characters typed after a base — a + ◌̃ → ã. Countless base+mark combinations have no precomposed character (for example and in Paraguayan Guaraní), so the only way to render them is base plus combining mark, positioned by OpenType features.

Note: If a precomposed character isn't in your font, the engine just shows the base and the mark side by side — and an uncentred mark may sit too far right on a w or far too low on a capital. That's exactly the gap anchors close.

Design non-spacing marks (zero advance)

A base character has an advance width — it claims horizontal space. A mark is non-spacing: it belongs to the base without adding width to the combination.

When you draw combining marks, give them effectively zero advance so they don't push the next glyph along. In left-to-right scripts the mark glyph is usually drawn to the left of the origin (a negative left side bearing), so it overlaps back onto the preceding base letter.

FontCreator glyph editor showing a combining acute mark drawn with zero advance width and a negative left side bearing.

A combining acute mark drawn with zero advance, sitting left of the glyph origin

Composites are soft links

Precomposed characters and composite glyphs are different ideas that work beautifully together. A composite glyph stores its outline as "soft links" to one or more other glyphs rather than as its own contours. The payoff: edit the base or the mark, and every composite that references them updates automatically. So aacute built as a composite of a + acutecomb follows any change you make to a.

Add and position anchors

An anchor is a named point used by OpenType layout and by composite attachment — it marks where a mark glyph should land on its base. Open the Anchors panel (it lists every anchor on the active glyph) to see, add, move, or edit them.

You don't normally place anchors by hand across the whole font. Instead:

  1. Make sure your font has combining marks. If it lacks them, run the Eastern Europe transform script to add them.
  2. Select all glyphs (or a range), right-click, and choose Complete Composites → Anchor Based Reposition. This adds and positions anchors for many Latin-based characters at once.

How FontCreator positions anchors:

  • For marks above a base: base anchors sit at the CapHeight for uppercase and at the x-Height for lowercase.
  • Regular mark anchors sit at the x-Height (with a few exceptions such as k and t).
  • For marks below a glyph (dotbelow, cedilla): the anchor sits at the baseline.
FontCreator Anchors panel listing top and bottom attachment anchors on a base glyph in the glyph editor.

The Anchors panel listing top and bottom anchors on a base letter

Tip — move outlines, not anchors. Altering the vertical position of an anchor is not recommended. It's far cleaner to move the outline of the mark up or down instead. Hold Shift while dragging in the glyph editor to lock movement to one axis, or set a position numerically through the Anchors panel.

Watch out: FontCreator positions anchors based on the glyph outline and takes the Italic Angle into account, so make sure that font property is set correctly before you generate.

Complete Composites modes

When you right-click a glyph (or range) and choose Complete Composites, you pick a mode:

  • Auto — Anchor Based with Composite Data as a fallback. A good default.
  • Anchor Based — uses anchors to create and position composites from a base plus one or more combining marks; keeps your manual anchor tweaks.
  • Anchor Based Reposition (recommended) — same as Anchor Based, but also (re)positions the anchors. Use this to add anchors in the first place, or to return to FontCreator's automatic positions. Note it will discard manual anchor adjustments.
  • Composite Data — builds composites from definitions in CompositeData.xml (over three thousand glyphs), matched by Unicode codepoint or glyph name.

Watch out: With Composite Data, all composite members must already exist in the font, and empty simple glyphs in your selection will be replaced with composites — so don't include simple glyphs you want to keep as-is.

Tip — keep composites in sync automatically. By default, changing an anchor does not propagate to existing composites; you'd have to re-run Complete Composites → Anchor Based. To avoid forgetting, set the composite glyphs to Auto Attach (from the context menu) so they always track the anchors.

Generate ccmp / mark / mkmk

Once anchors are in place, generate the positioning features:

  1. Open the OpenType Designer.
  2. Click the first icon in the upper-left corner to open the feature-generation settings.
  3. Enable Anchor Based Positioning (ccmp, mark, mkmk) along with any other features you want, and click OK.

What each feature does:

  • ccmp — composes and substitutes glyphs as needed (e.g. decompose a base+mark for positioning, or compose stacking marks).
  • mark — Mark-to-Base: positions a mark relative to its base (or ligature) glyph using the anchors.
  • mkmk — Mark-to-Mark: positions one mark relative to another, so marks stack.
FontCreator OpenType Designer feature generation dialog with the Anchor Based Positioning option selected.

The OpenType Designer feature-settings dialog with Anchor Based Positioning checked

Test in the OpenType Designer's preview by typing text, or a slash followed by a glyph name. Generated lookups and classes are named with a script prefix (for example latn_), and re-generating deletes the previous generated lookups — so keep custom lookups separate from generated ones.

Stacking marks (Vietnamese)

Vietnamese stacks tone marks on top of accents, which is exactly what mkmk handles — but the combined mark glyphs must be named correctly. A glyph made of circumflexcomb plus gravecomb must be named circumflexcomb_gravecomb.

The member order matters: FontCreator positions anchors based on the first mark's outline, so in circumflexcomb_gravecomb the circumflex must come first. To fix the order, open the stacking mark, right-click the specific member, and choose Order → Bring to Front.

Marks for different cases and widths

To use different marks for uppercase versus lowercase, add a mark variant with a .case suffix (e.g. gravecomb.case) and position its top anchor at CapHeight. For marks too wide for narrow letters like i and j, add a .narrow variant. Small capitals and petite capitals can use .smcp / .pcap, or a shared .cap for both. Stick to these naming conventions and the feature generator wires the right lookups automatically. After adding variant marks, re-run Complete Composites → Anchor Based Reposition on the affected composites.

Troubleshooting

SymptomLikely causeFix
Typing base + mark leaves the mark uncentredNo anchors / mark not generatedAdd anchors via Complete Composites → Anchor Based Reposition, then generate Anchor Based Positioning
Stacked marks overlap or don't stackmkmk missing or stacking glyph misnamedGenerate mkmk; name the combined mark like circumflexcomb_gravecomb
Stacking mark positioned off the wrong accentMember order wrongRight-click the first mark → Order → Bring to Front
Anchor edits don't show on compositesComposites don't auto-track anchorsRe-run Complete Composites → Anchor Based, or set composites to Auto Attach
Precomposed character shows base + mark apartThat precomposed character isn't in the fontAdd it (Insert Characters) and build it as a composite
Uppercase marks sit too lowUsing lowercase marks on capitalsAdd .case mark variants with the top anchor at CapHeight

Frequently asked questions

How do I add accents to a font in FontCreator? Draw your base letters and combining marks (or run the Eastern Europe transform to add the marks), then select your glyphs and run Complete Composites → Anchor Based Reposition to add and position anchors and build the accented composites. Finally, open the OpenType Designer and generate Anchor Based Positioning so the ccmp, mark, and mkmk features place marks when users type base + combining mark.

What's the difference between Anchor Based and Anchor Based Reposition? Anchor Based uses existing anchors and preserves any manual tweaks you made. Anchor Based Reposition does the same but also (re)positions the anchors automatically — use it to create anchors in the first place or to reset to FontCreator's automatic positions, accepting that manual adjustments will be lost. Anchor Based Reposition is the recommended starting point.

Should I move the anchor or the mark outline to adjust placement? Move the mark's outline, not the anchor. Editing anchor positions is discouraged; nudging the outline (hold Shift for axis-locked movement) is cleaner and survives re-generation. For a whole group of marks on one base, adjust the base anchor; to move a mark across all bases, adjust the mark anchor — then re-run Complete Composites.

What to read next