Can’t get contextual mark attachment to work

I created a new * bottom anchor to all masters, and set the context to reh-ar * on all masters as well, but I don’t see any new lookups in the exported font.

Did you miss-type it here? It shouldn’t have a space in the name.

I followed the manual and it suggests adding space after the asterisk.

OK, I got this to work after removing the space. Now I need to specfiy another mark in the context, namely I want this contextual anchor to be used if the current glyph is followed by dotcenter-ar, so I used * dotcenter-ar as context but it does not seem to work.

So basically the code I want Glyphs to generate is:

pos base hah-ar dotcenter-ar <anchor 146 -359> mark @mark_bottom';

But what I get is:

pos base hah-ar <anchor 146 -359> mark @mark_bottom' dotcenter-ar;

As far as I understand the spec, the second line should be correct. Can you explain the difference? What exact input string do you have in mind?

The input glyph sequence is hah-ar dotcenter-ar kasra-ar. The text input is جِ (I decompose in camp). I also need to use mark filtering set so that the condition matches if there other marks between the dot and the kasra, e.g. hah-ar dotcenter-ar fatha-ar kasra-ar.

Contextual marks seems to not work with ligatures at all. No lookups are generated.

Is the dotcenter influencing the position of the kasra? If not, shouldn’t it just filtered out?

I’ll have a look at the other cases, soon.

Yes it does. If there is no dotcenter, I want the kasra to be inside the hah, but if dotcenter is present I want the kasra below the hah.

Ok. I understand.

1 Like

That needs an extension to the context string format.

I have two ideas:

  1. Specify backtrack, input and lookahead by comma-separating each: ,* dotcenter-ar, (backtrack and lookahead is empty)
  2. or, add another placeholder to denote where the <anchor x y> should go: * dotcenter-ar @

I tend to option 2.


Option 2 looks more flexible, so I vote for that one as well.

I can confirm this. Working on a Telugu font with lots of ligatures – no contextual mark lookups for abvm/blwm generated. Normal mark to base lookups in abvm/blwm work fine (in case you wondered if the whole thing was setup correctly).

How would contextual mark-to-liga FEA code would look like?