[varStore] Micro-optimize storeDeltas()

Also speed up the test slightly by skipping rounding.
This commit is contained in:
Behdad Esfahbod 2023-10-23 15:13:32 -06:00
parent c7ce5b0f3c
commit 9e36b9465d
2 changed files with 6 additions and 3 deletions

View File

@ -95,7 +95,8 @@ class OnlineVarStoreBuilder(object):
return base, self.storeDeltas(deltas, round=noRound) return base, self.storeDeltas(deltas, round=noRound)
def storeDeltas(self, deltas, *, round=round): def storeDeltas(self, deltas, *, round=round):
deltas = [round(d) for d in deltas] if round != noRound:
deltas = [round(d) for d in deltas]
if len(deltas) == len(self._supports) + 1: if len(deltas) == len(self._supports) + 1:
deltas = tuple(deltas[1:]) deltas = tuple(deltas[1:])
else: else:
@ -121,7 +122,8 @@ class OnlineVarStoreBuilder(object):
def VarData_addItem(self, deltas, *, round=round): def VarData_addItem(self, deltas, *, round=round):
deltas = [round(d) for d in deltas] if round != noRound:
deltas = [round(d) for d in deltas]
countUs = self.VarRegionCount countUs = self.VarRegionCount
countThem = len(deltas) countThem = len(deltas)

View File

@ -1,6 +1,7 @@
import pytest import pytest
from io import StringIO from io import StringIO
from fontTools.misc.xmlWriter import XMLWriter from fontTools.misc.xmlWriter import XMLWriter
from fontTools.misc.roundTools import noRound
from fontTools.varLib.models import VariationModel from fontTools.varLib.models import VariationModel
from fontTools.varLib.varStore import OnlineVarStoreBuilder, VarStoreInstancer from fontTools.varLib.varStore import OnlineVarStoreBuilder, VarStoreInstancer
from fontTools.ttLib import TTFont, newTable from fontTools.ttLib import TTFont, newTable
@ -269,7 +270,7 @@ def test_optimize_overflow():
for data in range(0, 0xFFFF * 2): for data in range(0, 0xFFFF * 2):
data = [0, data] data = [0, data]
builder.storeMasters(data) builder.storeMasters(data, round=noRound)
varStore = builder.finish() varStore = builder.finish()
varStore.optimize() varStore.optimize()