From 9e36b9465dbc9143d58fb57e36655abe50c89e63 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Mon, 23 Oct 2023 15:13:32 -0600 Subject: [PATCH] [varStore] Micro-optimize storeDeltas() Also speed up the test slightly by skipping rounding. --- Lib/fontTools/varLib/varStore.py | 6 ++++-- Tests/varLib/varStore_test.py | 3 ++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Lib/fontTools/varLib/varStore.py b/Lib/fontTools/varLib/varStore.py index 1fe8e61b9..24647d184 100644 --- a/Lib/fontTools/varLib/varStore.py +++ b/Lib/fontTools/varLib/varStore.py @@ -95,7 +95,8 @@ class OnlineVarStoreBuilder(object): return base, self.storeDeltas(deltas, round=noRound) 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: deltas = tuple(deltas[1:]) else: @@ -121,7 +122,8 @@ class OnlineVarStoreBuilder(object): 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 countThem = len(deltas) diff --git a/Tests/varLib/varStore_test.py b/Tests/varLib/varStore_test.py index f248f5df1..7eb9d740b 100644 --- a/Tests/varLib/varStore_test.py +++ b/Tests/varLib/varStore_test.py @@ -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()