Ligatures not working with Alternate layer in other glyphs

I’m encountering an unusual bug in Glyphs app (3.3.1 (3343)). The lam_alef-ar.fina ligature has no alternate layers, but it stops working after the first rvrn rule. Interestingly, the output from fontmake works fine.

Here’s a comparison between the Glyphs app and the fontmake output:

Glyphs app:
glyphs_vf

fontmake:
fontmake_vf

So you use the rvrn feature? If so, don’t. Use rlig or requires contextual (don’t know the tag right now).
Rvrn is not good for feature variations.

No, I didn’t.
I just used Glyphs built-in Alternate Layers
(I thought it would be written as rvrn in the output VF, but I didn’t check!).

I am looking and looking, but can’t find a difference between the two pictures.

My bad, I thought it was obvious. This is the Glyphs version( the colored ligature doesn’t have any Alternate layer):
glyphs_vf_2

And the desired outcome is that the separated shape should be used throughout, not the connected shape, which is just lam-ar + alef-ar.fina with no ligature applied?

Yes, primary shape is a ligature. in Glyphs output version it stops workings(which is not planned) after first alternate layer substitution (like Q) applied.

Ah, the animation did not load (or autoplay) for some reason. Now I get it. Can you send me the file?

Sent

Okay, I don’t know what’s happening, but the bracket layers in the Latin glyphs don’t have much to do with it because disabling them doesn’t help much. It just makes the ligature snap a little later. Investigating further. Sorry I don’t have a conclusive answer yet.

So, yes, you are right, there is indeed an issue with reusing the same feature for both feature variations and regular substitution code, rlig in your case. (I overlooked the oslashacute composite that still triggered the feature variations.) I could eventually get the error message: Broken internal cross-table feature reference in -[FEAFeatureSubstitution(Backend) dump:state:] (FEAFeatureSubstitution.m:185) Found in: (null).

Current workaround until it is fixed: yes, do use rvrn instead. It works in your current setup, as long as you do not add smallcaps. To do so, go to Font Info > Font > Custom Parameters, add a parameter called Feature for Feature Variations, and type rvrn as its value.

1 Like

thank you @mekkablue
i added the line in custom parameters and it’s working now.

We are experiencing the same issue if a Arabic font, set Feature for Feature Variations to rvrn doesn’t solve it.

Removing the conditional substitutions produces correct substitution for Arabic, but this is not a workable option.

FIX : Adding a condition {minWeight} < wght;
before the code for arabic rlig

Clipboard-20250505-085906-265

Can you send me the .glyphs file?

NEVER set it to rvrn. That is messing things up. (except when you REALLY know what you are doing).

The problems is that currently there is a bug that you can’t have feature variation and none feature variations substitutions in the same feature. So either add a fake condition (as your fix suggests) or move the actual feature variation part in the rclt feature.

The Feature for Feature Variations Parameter is only relevant when you have bracket layers.

1 Like

I have the same issue with ligature substitutions. I use alternate layers for some letters. I haven’t recalled this issue for a while now.

alternative_ligature

In the left sidebar, you should see the current glyph names that are resulted from all the OpenType. What names do you see when the ligature is not working?

And have you checked the feature order? The ligature feature needs to come before the future variation.