Granular automatic alignment

Hello, numerous times now I have run into issues with automatic alignment, especially in Cyrillic.

The problem:
Especially in Cyrillic, there are a lot of glyphs that are composites that extend the glyph horizontally. The most prominent example would be all the descender glyphs: A base glyph (for example, ka-cy) is combined with descender-cy. The problem is that if you use automatic alignment for all involved components, the base component ka-cy dictates the LSB and RSB, which results in too tight RSB to allow for the descender sticking out:

This means I need to set the automatic alignment of the component ka-cy to disabled, nd use metrics keys to ensure proper alignment:

This is quite a nuisance.

The feature request:
Set automatic alignment just for one side, or something similar to what happens when you use #entry and #exit anchors. Using those anchors for these kinds of composites doesn’t work, so it would be a very useful addition to be able to set a similar form of automatic alignment even when using different anchors.

Does this make sense, or is my workflow flawed? Thanks!

1 Like

There is a hack that I added for exactly this purpose. If you add two underscores to the start of the name of the glyph that is used for the hook (e.g. __hook-cy), the width of that glyph will be added to the automatic aligned composite. So it uses the general spacing of the base glyph and adds a few units to it.

Wow! Very cool. I’m afraid this doesn’t quite solve the problem I have: I still want to have manual control over the RSB. The spacing difference of the RSB will not be the same for kadescender-cy and endescender-cy, for example.

Furthermore, this would mean a manual spacing of the __hook-cy component, which I want to avoid as much as possible (I set them to =40 for both sides, always, to prevent unwanted alignment shifts).

Why not use an incremental metrics key? =+20 or ==+20 for instance.

On which glyph? What exactly do you mean?

Sorry to hijack this thread, but on the topic of auto alignments, is there a way to manually set vertical but not horizontal auto alignment? So the glyphs keep their auto sidebearings, but can be shifted up and down?

Yes, this is alignment type 3.

component.alignment = 3

There is currently no UI for this, you have to do it via scripting.

On the glyphs hat contain the components.

Nice, that works, thank you!

But from what I understand, this is no different than using the hack you explained.

I use HT Letterspacer as much as possible, using incremental metrics keys/calculations is definitely not something I find useful or reliable from a design perspective. I only use metrics keys if the shapes are identical (or scaled proportionally, for small figures, for example).

There is a big difference. The hack just adds the width of the “__” component. The metrics keys adds some space to the glyphs that contains the components. So you add the metrics keys ot the “kadescender-cy”.

Maybe I wasn’t clear. I don’t want to automatically set the RSB, I want to be able to manually control it, so like it currently is if I disable the automatic alignment of the first component.

What I want to do is automatically align the first component for automatic LSB, but still have control over its RSB.

You can. Just not as freely as it is possible with not aligned glyphs.