I've been wondering if it is possible to define a substitution rule for a letterpair consisting of two letters from different scripts, say, Latin and Greek? From what I tried, it seems impossible, I created some classes containing glyphs from mixed scripts and I defined lookups for them which I included in features for both scripts, and it didn't work.
I don't like the idea of scripts and language systems in OpenType scripting, I've always thought it was only limiting the designer. The only useful purpose of this system seems to be the localization feature. Am I wrong?
OpenType layout engines should work the same, but don't. For example a kern pair which includes a space character will work in Word, but fails in Firefox.
This sequence is stored in the memory in this order:
You see how the order is different from what you see in the top sequence. Because the order of the string in memory is in the order which was typed by the user. In the final display the first word is written left to right and second word is written right to left. Before applying the OpenType features every segment of scripts will be separated to avoid problems with directions. I'm not sure why this would happen with scripts with same direction though. This behavior could defer in different shaping engines.
You could try Kent's suggestion (putting the relevant lookup under the DFLT script tag), but I'm not hopeful that it will work reliably. It may work if the DFLT script is the only one in the font, but if the font also contains latn and grek scripts, these will probably override anything in DFLT.
Firefox is able to handle OpenType features across space for a few years now (though fonts having such features will not benefit from shaped work caching in Firefox and Chrome which might negatively affect text rendering speed, especially for large amounts of text).
It is still good to be aware the layout engines don't produce 100% identical output, so better test specific features within web browsers, word processors, and type design software.