In UFO lib.plist, the UVS sequences are separated for each VS codepoint. Eg:
<key>public.unicodeVariationSequences</key>
<dict>
<key>FE00</key>
<dict>
<key>3001</key>
<string>uni3001</string>
</dict>
<key>FE01</key>
<dict>
<key>3001</key>
<string>uni3001.cpct</string>
</dict>
<key>FE00</key>
<dict>
<key>3002</key>
<string>uni3002</string>
</dict>
<key>FE01</key>
<dict>
<key>3002</key>
<string>uni3002.cpct</string>
</dict>
</dict>
This is inefficient and could not be resolved correctly by other major UFO editors/compilers. The UFO standard specified:
This key is a dictionary for Unicode Variation Sequences. Keys are Variation Selector code points as a hexadecimal numbers and values are dictionaries. These dictionaries contain > code points as hexidecimal numbers as keys and glyph names as values> .
The dictonaries for each VS codepoint should in theory contain all the Unicodes (since it mention “code points” and “glyph names” as plural). The suggested format should be as:
<key>public.unicodeVariationSequences</key>
<dict>
<key>FE00</key>
<dict>
<key>3001</key>
<string>uni3001</string>
<key>3002</key>
<string>uni3002</string>
</dict>
<key>FE01</key>
<dict>
<key>3001</key>
<string>uni3001.cpct</string>
<key>3002</key>
<string>uni3002.cpct</string>
</dict>
</dict>
See implementation of this format https://github.com/lxgw/LxgwWenkaiTC/blob/af1621dc5a9bd08c50746861a3ad3bfdad9d8a56/sources/LXGWWenKaiTC-Light.ufo/lib.plist#L1826-L1850.