Sort out mis-matches between PrivateDict and Instance spaces in variable fonts
(Forgive my lack of accurate terminology in much of this.)
Suppose you take a set of UFOs, each at a different point in design space and each with its own PrivateDict(s), and build a variable font. Then you hint that font and as a result hint the default and region masters. In that case the deltas in the dictionaries should match up with the deltas in the glyphs and simply extracting the right dictionary is enough to get the right (e.g. Blue) values for the corresponding (embedded) master.
According to the spec a PrivateDict can contain a vsindex (although some code I've read is skeptical this works at present) which is the default for every CharString that "references" it (via FDSelect), but importantly the CharString can override that value with its own vsindex. Because the delta locations of the CharString's space could be quite different than those of ifs dictionary's space, you may need to interpolate the latter to get the correct values. This means that instead of needing just a two-dimensional structure of extracted Dicts (FontDict Index x instances in "DictSpace") you may need a third dimension (x number of spaces).
This is inconvenient from the perspective of the current implementation of fonttools, which doesn't even include code to extract one instance of a blended dict, let alone to interpolate values to a particular location in design space.
Until this is sorted out psautohint won't be able to accurately hint already-built variable fonts in the general case.
Rather than pursue a partial implementation in the code of this repo, it may make more sense to put off this problem and potentially address it by completing the relevant parts of fonttools' not-yet-written CFF2 instancer. In the mean time variable fonts could be built from masters already hinted with appropriate values pulled from the correspondng UFO, instance OTF, or fontinfo file.
((x number of spaces) is a simplification, as each of the space-specific structures would have as many instances as that space, not as the PrivateDict's space.)