Skip to content

Commit

Permalink
[instancer/avar2] Experiment with limiting axes
Browse files Browse the repository at this point in the history
  • Loading branch information
behdad committed Apr 18, 2024
1 parent 486a1f6 commit 0b52637
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions Lib/fontTools/varLib/instancer/avar.py
@@ -1,6 +1,7 @@
from fontTools.varLib.varStore import VarStoreInstancer, NO_VARIATION_INDEX
from fontTools.ttLib.tables.otTables import VarStore
from fontTools.ttLib.tables._f_v_a_r import Axis
from fontTools.varLib import instancer


def VarStore_getExtremes(self, varIdx, nullAxes=set(), cache=None):
Expand Down Expand Up @@ -48,8 +49,8 @@ def VarStore_getExtremes(self, varIdx, nullAxes=set(), cache=None):
location[str(i)] = peak

Check warning on line 49 in Lib/fontTools/varLib/instancer/avar.py

View check run for this annotation

Codecov / codecov/patch

Lib/fontTools/varLib/instancer/avar.py#L46-L49

Added lines #L46 - L49 were not covered by tests
if skip:
continue
instancer = VarStoreInstancer(varStore, fvar_axes, location)
v = instancer[varIdx]
varStoreInstancer = VarStoreInstancer(varStore, fvar_axes, location)
v = varStoreInstancer[varIdx]

Check warning on line 53 in Lib/fontTools/varLib/instancer/avar.py

View check run for this annotation

Codecov / codecov/patch

Lib/fontTools/varLib/instancer/avar.py#L51-L53

Added lines #L51 - L53 were not covered by tests

assert thisAxes, "Empty region in VarStore!"
minOther, maxOther = self.getExtremes(varIdx, nullAxes | thisAxes, cache)

Check warning on line 56 in Lib/fontTools/varLib/instancer/avar.py

View check run for this annotation

Codecov / codecov/patch

Lib/fontTools/varLib/instancer/avar.py#L55-L56

Added lines #L55 - L56 were not covered by tests
Expand All @@ -70,12 +71,21 @@ def VarStore_getExtremes(self, varIdx, nullAxes=set(), cache=None):
from fontTools.ttLib import TTFont

font = TTFont(sys.argv[1])

limits = sys.argv[2:]
limits = instancer.parseLimits(limits)
limits = instancer.AxisLimits(limits).limitAxesAndPopulateDefaults(font)
limits = limits.normalize(font, usingAvar=True)
print(limits)

fvar = font["fvar"]
avar = font["avar"]

varIdxMap = avar.table.VarIdxMap
varStore = avar.table.VarStore

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

for axisIdx, axis in enumerate(fvar.axes):
varIdx = axisIdx
if varIdxMap is not None:
Expand Down

0 comments on commit 0b52637

Please sign in to comment.