Monospace diacritics add space after glyph

hi, i am currrently creating a monospace font for the first time, using the isFixedPitch setting, and when i export the typeface and try to use it in affinity designer, adding diacritics to glyphs that aren’t already present in the font as combinations adds an extra full width space after the glyph.

Set the glyph properties of your custom marks to be of category Mark and subcategory Nonspacing with EditInfo for Selection…, like so:

Or use a custom GlyphData.xml file, see the recent topic here:

Dumb question: are non-spacing marks allowed in monospace fonts?

In monospaced fonts, even nonspacing marks need to be the same width. That isn’t a problem in most apps. But some still add the space. To avoid that, you need to set the width to zero with GPOS. Something like this:

pos @CombiningMarks <0 0 -600 0>;

(Replace the 600 with the width of you glyphs)
I’m not sure in what feature to put this. Probably in a mark feature.

You can read more about this here:

In summary: Ideally, combining marks should be non-spacing, that is, have a width of 0. This is, however, not an ideal world, and some apps require all glyphs – including combining marks – to have the same width for the font to be considered fixed-pitched/monospaced/non-proportional. Using feature code to reset the width of those glyphs at the layout stage back to 0 is the common trick that works with most apps.

thank you, this almost solved my issue, my mark feature now looks like this:

@CombiningMarks = [dieresiscomb dotaccentcomb gravecomb acutecomb hungarumlautcomb caroncomb.alt circumflexcomb caroncomb brevecomb ringcomb tildecomb macroncomb overlinecomb dblgravecomb commaturnedabovecomb lefttackbelowcomb righttackbelowcomb leftangleabovecomb ringhalfleftbelowcomb uptackbelowcomb downtackbelowcomb plusbelowcomb minusbelowcomb dieresisbelowcomb ringbelowcomb commaaccentcomb cedillacomb ogonekcomb verticallinebelowcomb bridgebelowcomb caronbelowcomb tildebelowcomb lowlinecomb tildeoverlaycomb strokeshortcomb ringhalfrightbelowcomb bridgeinvertedbelowcomb squarebelowcomb seagullbelowcomb xabovecomb gbridgeabovecomb equalbelowcomb doubleverticallinebelowcomb leftanglebelowcomb nottildeabovecomb homotheticabovecomb almostequaltoabovecomb arrowleftrightbelowcomb arrowupbelowcomb doublebrevebelowcomb breveinverteddoublecomb arrowdoublerightbelowcomb acutegraveacutecomb acutemacroncomb graveacutegravecomb gravemacroncomb macronacutecomb macrongravecomb];
pos @CombiningMarks <0 0 -707 0>;

i also set the category and subcategory as @FlorianPircher suggested.

now i am struggling with having both top and bottom diacritics on the same glyph, which is inconvenient because i want it to work with IPA.

I tend to think this is a bug in Affinity Designer. It should ignore advance widths for non-spacing marks.

And in theory, non-spacing marks shouldn’t appear in hmtx at all. But it has proven to work better in many apps. Except Affinity Designer.