Current behaviour is to evaluate all ItemVariationStores in the font when a SamsaInstance is created. This is almost certainly a bad idea, since only a tiny number of the values will get used in the session, and some fonts may struggle to generate instances quickly.
Therefore it makes sense to evaluate all the IVS scalars upon instantiation (since that’s cheap), and create an array of empty arrays to hold the interpolated delta values at column:row, or outer:inner. Thus initially an IVS would populate a scalars array for each IVD. Then when an outer:inner pair was requested, the relevant deltaSet is add-multiplied by the relevant scalar set, yielding a value that is stored and returned. Whether it’s worth storing the result should be tested.
Current behaviour is to evaluate all ItemVariationStores in the font when a SamsaInstance is created. This is almost certainly a bad idea, since only a tiny number of the values will get used in the session, and some fonts may struggle to generate instances quickly.
Therefore it makes sense to evaluate all the IVS scalars upon instantiation (since that’s cheap), and create an array of empty arrays to hold the interpolated delta values at column:row, or outer:inner. Thus initially an IVS would populate a scalars array for each IVD. Then when an outer:inner pair was requested, the relevant deltaSet is add-multiplied by the relevant scalar set, yielding a value that is stored and returned. Whether it’s worth storing the result should be tested.