If you’re looking for a function to calculate missing master coordinates:
import itertools
axes_coords = [[] for axis in Font.axes]
for i, axis in enumerate(Font.axes):
for master in Font.masters:
if master.axes[i] in axes_coords[i]:
continue
axes_coords[i].append(master.axes[i])
necessary_masters = list(itertools.product(*axes_coords))
missing_masters = []
for master in necessary_masters:
if master not in [master.axes for master in Font.masters]:
if master not in missing_masters:
missing_masters.append(master)
print("Missing coordinate", master)
You can then use something like this to add the missing masters:
Font.disableUpdateInterface()
for missing_master in missing_masters:
missing_master_instance = GSInstance()
missing_master_instance.name = "Extreme " + str(missing_master)
Font.instances.append(missing_master_instance)
Font.instances[-1].axes = missing_master
Font.instances[-1].addAsMaster()
Font.instances.remove(Font.instances[-1])
Font.masters[-1].axes = missing_master
Font.enableUpdateInterface()
Hope this is what you’re looking for.