Skip to content

Commit

Permalink
[instancer.avar] Instantiate varStore a second time?
Browse files Browse the repository at this point in the history
Untested.
  • Loading branch information
behdad committed May 2, 2024
1 parent 64d3ccf commit 9594b5d
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions Lib/fontTools/varLib/instancer/avar.py
Expand Up @@ -123,6 +123,9 @@ def VarStore_getExtremes(
varIdxMap = avar.table.VarIdxMap
varStore = avar.table.VarStore

pinnedAxes = limits.pinnedLocation()
unpinnedAxes = [axis for axis in fvar.axes if axis.axisTag not in pinnedAxes]

for axis in fvar.axes:
if axis.axisTag in limits:
continue
Expand All @@ -134,18 +137,27 @@ def VarStore_getExtremes(

defaultDeltas = instancer.instantiateItemVariationStore(varStore, fvar.axes, limits)

axes = fvar.axes

for axisIdx, axis in enumerate(axes):
for axisIdx, axis in enumerate(fvar.axes):
if axis.axisTag in pinnedAxes:
limits[axis.axisTag] = instancer.NormalizedAxisTripleAndDistances(0, 0, 0)
continue
varIdx = axisIdx
if varIdxMap is not None:
varIdx = varIdxMap[varIdx]
# Only for public axes
private = axis.flags & 0x1
identityAxisIndex = None if private else axisIdx
minV, maxV = varStore.getExtremes(varIdx, axes, limits, identityAxisIndex)
minV, maxV = varStore.getExtremes(varIdx, unpinnedAxes, limits, identityAxisIndex)
limits[axis.axisTag] = instancer.NormalizedAxisTripleAndDistances(
max(-1, min(minV / 16384, +1)),
0,
max(-1, min(maxV / 16384, +1)),
)
print(
"%s%s" % (axis.axisTag, "*" if private else ""),
defaultDeltas[varIdx] / 16384,
(minV / 16384, maxV / 16384),
)

defaultDeltas = instancer.instantiateItemVariationStore(varStore, unpinnedAxes, limits)
print(defaultDeltas)

0 comments on commit 9594b5d

Please sign in to comment.