I should know this, but I'm not finding this clearly specified in the OpenType spec. It does say this (https://docs.microsoft.com/en-us/typography/opentype/spec/chapter2#lookupTbl
"During text processing, a client applies a lookup to each glyph in the string before moving to the next lookup. A lookup is finished for a glyph after the client makes the substitution/positioning operation."
I have always understood this to mean that, for a given glyph-sequence position, lookup subtables are evaluated in order, and once a subtable is found to match and is processed, then processing continues at the "next" glyph position. But I can't find text in the spec that says exactly that.
Also, I can't find text to explain what is expected if a subtable defines multiple actions that could operate on different positions in a sequence. In particular, in contextual substitution subtables, there is an array
of substitution lookup records each of which specifies a position in the input sequence and a lookup index (for the action to be applied at that position). It's clear that the records are processed in order. But it's not completely clear whether processing of the lookup subtable stops after the first record or if all records are processed. It seems to me it would have to be the latter, else it would always be the very first record gets process and remaining records would always be ignored. Can anyone confirm that?