From b3dc48a96793c742ce854bc17ded9eaf426bbbe4 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 14 May 2024 13:38:18 -0600 Subject: [PATCH] [instancer/CFF2] Micro-optimize commands --- Lib/fontTools/varLib/instancer/__init__.py | 10 +++++++++- .../test_results/CFF2Instancer-VF-2-instance-400.ttx | 1 - 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Lib/fontTools/varLib/instancer/__init__.py b/Lib/fontTools/varLib/instancer/__init__.py index 6a79fc9c2..7af8e5e0b 100644 --- a/Lib/fontTools/varLib/instancer/__init__.py +++ b/Lib/fontTools/varLib/instancer/__init__.py @@ -751,7 +751,10 @@ def instantiateCFF2( # Empty out the VarStore for i, varData in enumerate(varStore.VarData): - assert varDataCursor[i] == varData.ItemCount, (varDataCursor[i], varData.ItemCount) + assert varDataCursor[i] == varData.ItemCount, ( + varDataCursor[i], + varData.ItemCount, + ) varData.Item = [] varData.ItemCount = 0 @@ -779,6 +782,11 @@ def instantiateCFF2( if command[0] == "vsindex": command[1][0] = vsindexMapping[command[1][0]] + # Remove initial vsindex commands that are implied + for commands in allCommands: + if commands and commands[0] == ("vsindex", [0]): + commands.pop(0) + # Ship the charstrings! for cs, commands in zip(charStrings, allCommands): cs.program = commandsToProgram(commands) diff --git a/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx index bcee028c0..69d746ff6 100644 --- a/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx +++ b/Tests/varLib/instancer/data/test_results/CFF2Instancer-VF-2-instance-400.ttx @@ -183,7 +183,6 @@ - 0 vsindex 9 30 1 blend hmoveto 122 31 1 blend