I use the code in ss02 to switch a single glyph, that has, or has not been swiched already in ss01.
Works great in my environments. But could this cause problems anywhere?
sub [a b c] by [a.001 b.001 c.001];
sub a by a.001;
sub a.001 by a;
Your ss02 code should be safe as long as an application follows the OpenType specification. When a lookup is processed, the app is supposed to execute the first matching rule, and then the processing of the lookup is complete. See the spec: “Processing of a lookup is finished when the client locates a target glyph or glyph context and performs the substitution or positioning action described.”
I suppose it’s possible that some apps will mess this up, but I don’t know any.