Horn diacritics and sidebearings

I’m having a hard time getting sensible sidebearings on Vietnamese horn characters using automatic alignment. The horns overlap with adjacent characters.

I tried replacing the horncomb component in the glyphs with a duplicate component called “__horn”, but even when I set the sidebearings on __horn to be zero, I ended up with much wider sidebearings on the composed glyphs than I expected.

The only other thing I can think to do is manually decompose those horns and set sidebearings by hand, but that seems like giving up. Does anyone know a way to make this work using automatic alignment?

Here’s what it looks like with a custom __horn component, which is what the handbook says I should do:

I cannot reproduce this, can you send me the .glyphs file?

From what I see in the screenshot, it seems to be correct. The __horn width of 190 is added to the width of O and U.

You can set the RSB to negative number if /zero is too wide for you.

Ah, OK. So the widths are just added together (and it doesn’t take into account that the components overlap each other?)

Exactly.

I am also having problems with the horn diacritic; uhorn made of u + horncomb has an automatic RSB of -130, which means it overlaps with the next character. Setting different sidebearings on uhorn makes no difference either way.

I couldn’t find anything in the handbook or tutorials about using a __horn component. How should I use that, and how does it interact with horncomb?

Search for the double underscore trick, but it is a hack. Are you using 2.3b? Then you can use =+50 as metric key in auto-aligned compounds.