Skip to main content
☀️ Summer Founder's Deal: FontCreator lifetime license $49 (normally $199). Limited time — ends July 14. Get the deal →

FontCreator Tutorials

Debug OpenType Features with Font Inspection

written by Erwin Denissen, published June 26, 2026

You'll need: FontCreator (Windows and macOS), and a font with at least one OpenType layout feature you want to verify (this case study uses diacritic positioning).

This page is a worked debugging case study, not a checklist. It sits between two other tutorials and complements both. OpenType Layout Features Unleashed shows you how to build features; Test & Validate Your Font owns the systematic, run-every-time validation checklist you work through before release. This tutorial is the third leg: a single, end-to-end example of chasing one misbehaving feature down to its root cause and fixing it — the kind of hands-on detective work that validation tells you is needed but doesn't do for you.

As soon as you start adding OpenType features to a font, you need a way to see how they all work together — and a way to find the one lookup that is misbehaving. Fortunately, the font editor has several powerful tools that let you test a font and pin down errors quickly. Below is a complete worked case study — from spotting a problem to fixing it — using FontCreator's preview, OpenType Designer, and glyph editing tools together. Use it as a template: the same trace-it-then-fix-it method applies to any feature, not just the diacritic positioning shown here.

Step 1 — Spot the problem in the preview

The first quick test is to check characters with diacritics in the preview toolbar. In this case we took a closer look at Cambria, testing several Latin lowercase letters with diacritics.

  1. In the font character grid, select a group of characters to inspect.
  2. Press the P key on the keyboard to send them into the preview window.
  3. The font has advanced, anchor-based positioning features for diacritics, which we want to inspect — so enable those features: ccmp, mark, and mkmk.
FontCreator preview window rendering diacritic test characters with OpenType positioning features turned on.

the preview toolbar showing a string of Latin letters with diacritics, with the ccmp, mark, and mkmk feature checkboxes enabled.

As you can see, two glyphs misbehave. We want to track down those issues within the OpenType features. First, copy the line of text being inspected (the characters ṙṛṝṟṡṣṥṧṩṫṭṯṱ) from the upper-right of the preview toolbar to the clipboard.

Step 2 — Trace it in the OpenType Designer

Now open the OpenType Designer. At the bottom of the dialog, make sure you have checked the box on the left for _shaper. This ensures the lookups are processed the same way other shaping engines would process them. The shaper is not perfect, but it works great for Latin.

  1. Paste the line of text you copied from the clipboard.
  2. To jump quickly to the suspect item, first click the macron — but that doesn't trigger anything, which looks suspicious.
  3. Since clicking the macron failed, click the letter r itself. This causes the upper part of the dialog to jump to the glyph composition / decomposition (ccmp) feature.
OpenType Designer with the ccmp feature jumped to a multiple-substitution lookup that produced the wrong output.

the OpenType Designer showing the ccmp multiple-substitution lookup highlighted after clicking the letter r, with the _shaper box checked.

Bingo. The multiple-substitution lookup contains rdotbelowmacron, which uses a modifier macron when it should have used the combining mark named macroncomb. The glyph named uni1E69 has a similar problem — it uses dotaccent instead of dotaccentcomb.

Step 3 — Fix the lookup output

These issues are easy to fix by changing the output field for each item. Replacing the output so that it reads "r dotbelowcomb macroncomb" and "s dotbelowcomb dotaccentcomb" does the trick — the lookups now emit combining marks that the mark/mkmk positioning features can actually attach.

Corrected multiple-substitution output using dotbelowcomb, macroncomb, and dotaccentcomb glyph names.

the OpenType Designer lookup output edited to use the combining-mark glyph names.

Step 4 — Fix the leftover composite glyph

After fixing the OpenType layout features, one issue remains with "Latin small letter s with dot below and dot above." The composite lacks a dot below. There are two easy ways to fix it:

  • Make the glyph empty and then use Complete Composites to regenerate it, or
  • Add the missing diacritic by hand.

To add the dot below mark manually:

  1. Double-click the glyph to open a Glyph Edit window.
  2. Right-click and choose Add.
  3. Select the character you need — use the filter at the bottom of the dialog to quickly find dotbelowcomb.
Adding a dotbelowcomb diacritic to a composite glyph through the right-click Add dialog with the name filter active.

the Add (insert composite member) dialog with the filter narrowed to dotbelowcomb.

> Tip: When a positioning feature like mark or mkmk seems to do nothing, suspect the substitution stage first. Anchor positioning can only attach combining marks; if an earlier ccmp lookup emitted a spacing modifier instead of a combining mark, the anchors have nothing to grab.

> Note: The _shaper option in the OpenType Designer is what makes the proof trustworthy. Without it you are seeing FontCreator's own rendering rather than how a shaping engine would order and apply the lookups.

> Watch out: A misbehaving glyph in the preview can have two unrelated causes at once — a wrong substitution and a malformed composite, as in this case study. Fixing the feature does not automatically repair a composite that was built with the wrong members.

Troubleshooting

SymptomLikely causeFix
Diacritic sits in the wrong place or doesn't attachSubstitution emitted a modifier glyph, not a combining markTrace in the OpenType Designer and change the lookup output to the comb glyph
Clicking a mark in the Designer "does nothing"The mark isn't the glyph driving the lookupClick the base letter instead to jump to the responsible feature
Preview looks fine but apps render differently_shaper not enabled during inspectionEnable _shaper at the bottom of the OpenType Designer
A composite is missing a diacriticComposite built with the wrong/missing memberEmpty it and run Complete Composites, or add the member via right-click → Add

Frequently asked questions

Which features should I enable to inspect diacritics? For anchor-based diacritic positioning, enable ccmp, mark, and mkmk in the preview toolbar. ccmp handles composition/decomposition, mark attaches marks to bases, and mkmk attaches marks to other marks.

Why does clicking a base letter find the bug faster than clicking the mark? The lookup that produces the wrong output is keyed on the base glyph's substitution, so clicking the base letter jumps the OpenType Designer straight to the responsible ccmp lookup. The mark itself is just the (wrong) output.

What's the difference between a modifier mark and a combining mark? A spacing modifier (like macron) advances the cursor and is not meant to be attached, while a combining mark (like macroncomb) carries the anchors the mark/mkmk features use to position it on a base. Use the comb glyphs as feature output.

Where does this fit with validation? Inspection is the manual, exploratory side of testing — chasing down a specific symptom. Test & Validate Your Font covers the systematic checks you run before release. Use both: validation catches whole classes of problems, inspection nails the one feature that's misbehaving.

What to read next