Chaining contextual substitution not working in CC apps

So I’m pulling my hair out debugging a more complex feature in Adobe apps, so I’ve reduced the issue to this: I have a font with glyphs ‘a’, ‘x’ and ‘X’ and only this feature code:

lookup test {
    sub a by a X;
} test;


feature ccmp {
    sub a a' lookup test;
    sub a by x;
} ccmp;

I doesn’t matter what feature this is in.

What I expect is the text input ‘aa’ to be transformed to 1) ‘aX’ via the chaining substitution, and then to 2) ‘xX’ because of the simple substitution rule.

Now when I test this in Glyphs, or in Font Goggles I am seeing exactly that. However, in Adobe CC apps I am seeing ‘xx’ — the feature does get executed, but the chaining substitution does not.

Anybody got an idea what obvious thing am I missing here?

Depends on the composer you use in Adobe apps.

Both composers have a plethora of issues. If it works in a browser or in FontGoggles but not in the Adobe app, you can be sure it’s a bug in Adobe’s composer.

Hm, I see. Well, yes, it works both in Font Goggles and Chrome/FF. In InDesign it does work with the World Ready Composer. But that is not the default, and it is not what e.g. Illustrator is using. I was hoping for a case of being blind to an obvious mistake on my part.

I guess one just has to accept that the company that authored the fea spec does not care or know how to implement it. Where that leaves end users, I do not know…

Since Adobe seems to also not support this kind of simple multiple substitution like

sub a a by X;

I am wondering if there is any way to implement multiple substitution for Adobe apps at all? Anybody got a work around?

The simple substitution should work. That is a ligature and those are supported.

Ah, sorry, I meant…

sub a by X X;

Multiple substitutions is what I am looking to reliably get working, either directly like that or with the contextual chaining sub.

Yes, this is only supported in the World Ready Composer, too.

Cheers, thanks for confirming. :grimacing: