But (to do certain bits of OpenType magic) we make highspacingdot-deva a "spacing combining" mark (spacing mark). This is so we can filter it out when doing conjuncts or something like that. (This is slightly contrived, but an analogous situation does exist for many Indic scripts.)
We also want kerning between ka-deva and the mark, so we make a base-mark kern:
But because it's a mark class in GDEF, when we apply base-base kerning, this gets skipped. So with a sequence like ka-deva|highspacingdot-deva|ra-deva, the result, with current ufo2ft, is:
kern_Deva will IgnoreMarks and kern ka-deva|ra-deva -250
kern_Deva_marks will kern ka-deva|highspacingdot-deva -150.
Instead what we need to do is, rather than filtering out all marks, only filter out non-spacing marks, allowing spacing marks to break the base-base kern, so that only base-mark kerning is applied:
Consider the following font:
We want to kern between ka-deva and ra-deva:
But (to do certain bits of OpenType magic) we make highspacingdot-deva a "spacing combining" mark (spacing mark). This is so we can filter it out when doing conjuncts or something like that. (This is slightly contrived, but an analogous situation does exist for many Indic scripts.)
We also want kerning between ka-deva and the mark, so we make a base-mark kern:
But because it's a mark class in GDEF, when we apply base-base kerning, this gets skipped. So with a sequence like
ka-deva|highspacingdot-deva|ra-deva
, the result, with current ufo2ft, is:ka-deva|ra-deva
-250ka-deva|highspacingdot-deva
-150.Instead what we need to do is, rather than filtering out all marks, only filter out non-spacing marks, allowing spacing marks to break the base-base kern, so that only base-mark kerning is applied: