Hi all,
I'm currently working on a face which implements a joining behaviour using contextual alternates. However, problems can occur at boundaries if the 'calt' feature is turned on for only part of a string, as illustrated below:

I've avoided this by including the following at the beginning of my 'calt' feature:
sub A by A.calt;
sub B by B.calt;
etc.
The contextual rules then refer only to *.calt forms rather than the base glyphs from which they are derived.
Here's the problem: I'd wanted to split my replacement rules into several distinct groups so the user could choose to apply some or all of them depending on how elaborate they wanted the joining to be. Unfortunately, if I do this I have to deal with more than a single type of boundary. For example, in the word 'affable', a user might apply 'ss01' to affa, 'ss02' to fab, 'ss03' to fabl, &c.
While in principle, I could adopt a similar solution -- creating *.ss01, *.ss02, and *.ss03, in practice this simply isn't workable -- when you consider that I'd have to duplicate not only the base glyphs (including all forms with diacritics), but also the contextual alternates created by every feature which applies before the feature in question, I suspect I'd run up against FontLab's glyph limit, not to mention the headaches involved in creating all those duplicates and debugging all the code which deals with them.
I'm wondering if there is a simpler solution to this which I just haven't thought of.
Thoughts?
André