Hello @ErwinDenissen and thanks for replying. In Arabic, the Lam Alef is a ligature of Lam.init and Alef.fina, is that the reason? i.e. no possibility to substitute a ligature?.
No, the Alef and Sukun are both independent, there’s no occurrence of ligature between them.
The calt feature comes after isol, fina, and init have been processed, so in your case alef-arab has already been substituted by alef-arab.isol, hence your chaining context rule is never matched.
@ErwinDenissen That’s was truly the obstacle! Alef-arab is being replaced in the font without I know!. My gratitude to you @munir4ye I opened your file and it works perfect, thank you so much, I also noticed that in the substitution table you checked “Ignore Marks”, I unchecked it and still the substitution works well, what do you think?.
Setting Ignore Marks on a Single Substitution lookup doesn’t really do anything useful, as it only checks the current glyph and substitutes it. There are no “intervening” marks to skip.
Where Ignore Marksdoes matter is on contextual/chaining lookups (Contextual / Chaining Contextual Substitution or Positioning), because those lookups do match sequences and can skip over marks while matching. So if the goal is “apply this rule even when combining accents are present,” put Ignore Marks on the contextual/chaining lookup, not on the SingleSub that gets invoked.
Also note: if you do intend to substitute marks, then Ignore Marks would prevent that, so it can be actively wrong in that scenario.