HT Letterspacer and glyphs with components


I’m currently exploring the possibilities of using Huerta Tipografica’s Letterspacer to space a typeface I’m working on. However I’m running into some problems. Some of my glyphs use components of other glyphs that gets spaced by the script. For example /Q has an /O and a path for the tail. When the /O is spaced to /Q gets messed up because the /O get shifted sideways.

I understand why this happens, and it’s the expected behavior.
The options I’ve come up with don’t feel optimal:

  1. Decompose glyphs with components that aren’t automatically aligned.
  2. Break out all components into ‘_part’-components that doesn’t get spaced.

Preferably HT Letterspacer would be “smart” and make sure everything keep its position and that only sidebearings get affected (by doing some glyph content reposition magic).

Maybe it’s just me not using it correctly. Any insight is welcome.


To keep glyphs that have paths and components in sync is quite complicated. So I advice to put the tail in its own glyphs and use anchors to position it. That way, the Q can inherit the spacing of the O and they never shift. It doesn’t need to be a ‘_part’ component. just call it ‘_tail’.

Yeah, that’s what i figured.
That solves the Q, but the problem is that I have many glyphs set up in a similar fashion. Sometimes I’ve made tiny position adjustments to a component here and there where I’ve disabled the automatic alignment, or decomposed a component to make slight adjustments to the path. It will take some time to identify problematic glyph compositions and then remedy the issues.

It could be that I will have to change the way I compose my glyphs from now on.

I understand the complexity of what it is I’m looking for. I will have to figure the best way forward from here.

And you could add an issue at the Letterspacer repository about this.

Mixing components and paths defeats the very purpose of components. Either decompose or reconstruct.

I recommend the latter. More info on component tricks:

Thanks, that makes sense now that you say it. I guess I have some cleaning up to do!

Thanks for your commnts, tdrkert.
I encountered the same problem than you before, but as Georg say It’s complicated to solve it.
For example, I had exactly the same problem, and even worse every time I tried to space a font in Glyphs and import the generated metrics in Fontlab components disalign.
If you have any idea or suggestion of how making it work, I will try to include it in the program somehow.
Dave opened an issue here:

If you change the spacing of the base glyph, the relative position changes in Glyphs that use that glyph as a component. If you have automatic alignment, it will fix it for you and prevent another shift of the component.

I decided to all in with components and anchors. And some decomposition where needed. While loosing some flexibility it felt safer.

Georg explains the problem. A “solution” could be to counter-shift all unaligned entities of a component as it’s side bearings are modified by the spacing script. It feels risky(and possibly a really bad idea) but maybe it could work. Some problems will arise of course (what would happen to rotated/flipped/stretched components etc.).

Maybe someone else can weigh in on this.

Some operations do then counter-shift already (e.g., the transform filter). But it can’t be enabled by default. That would be even more confusing.

Yeah, I agree that it should be enabled by default. The current behaviour is the expected behaviour. Could it be turned on temporarily? Do you think that it would solve it or are there more side effects?