[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,6 +95,7 @@ class OnlineVarStoreBuilder(object):
return base, self.storeDeltas(deltas, round=noRound)
def storeDeltas(self, deltas, *, round=round):
if round != noRound:
deltas = [round(d) for d in deltas]
if len(deltas) == len(self._supports) + 1:
deltas = tuple(deltas[1:])
@ -121,6 +122,7 @@ class OnlineVarStoreBuilder(object):
def VarData_addItem(self, deltas, *, round=round):
if round != noRound:
deltas = [round(d) for d in deltas]
countUs = self.VarRegionCount

View File

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