From c3dfe10cce493b6f39fd5956d480681090830b9a Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Wed, 20 Dec 2023 17:51:31 -0700 Subject: [PATCH] [VARC] Use TupleVariations tuple encoding for axisValues Free improvement. --- Lib/fontTools/ttLib/tables/otTables.py | 11 +++-------- Tests/ttLib/data/varc-6868.ttf | Bin 9880 -> 9864 bytes Tests/ttLib/data/varc-ac00-ac01.ttf | Bin 3404 -> 3404 bytes 3 files changed, 3 insertions(+), 8 deletions(-) diff --git a/Lib/fontTools/ttLib/tables/otTables.py b/Lib/fontTools/ttLib/tables/otTables.py index a4b18a281..3406415d0 100644 --- a/Lib/fontTools/ttLib/tables/otTables.py +++ b/Lib/fontTools/ttLib/tables/otTables.py @@ -11,6 +11,7 @@ from functools import reduce from math import radians import itertools from collections import defaultdict, namedtuple +from fontTools.ttLib.tables.TupleVariation import TupleVariation from fontTools.ttLib.tables.otTraverse import dfs_base_table from fontTools.misc.arrayTools import quantizeRect from fontTools.misc.roundTools import otRound @@ -140,10 +141,7 @@ class VarComponent: axisIndices = localState["AxisIndicesList"].Item[self.axisIndicesIndex] numAxes = len(axisIndices) - axisValues = array.array("h", data[i : i + 2 * numAxes]) - i += 2 * numAxes - if sys.byteorder != "big": - axisValues.byteswap() + axisValues, i = TupleVariation.decompileDeltas_(numAxes, data, i) assert len(axisValues) == numAxes self.axisValues = tuple(axisValues) @@ -217,10 +215,7 @@ class VarComponent: if axisIndicesIndexSize: data.append(_packer[axisIndicesIndexSize](self.axisIndicesIndex)) - axisValues = array.array("h", self.axisValues) - if sys.byteorder != "big": - axisValues.byteswap() - data.append(axisValues.tobytes()) + data.append(TupleVariation.compileDeltaValues_(self.axisValues)) if self.axisValuesVarIndex != NO_VARIATION_INDEX: flags |= VarComponentFlags.AXIS_VALUES_HAVE_VARIATION diff --git a/Tests/ttLib/data/varc-6868.ttf b/Tests/ttLib/data/varc-6868.ttf index 62e071c17b3326812097f84b861f28b1018d30da..5e02bb1466860fbcdda27df91095d397e0d0a8e0 100644 GIT binary patch delta 436 zcmXAkPiqrl5Ql#=@9dl1H3=$7tfmD)*5(q>E~&O6z9BKLN<};rkDj783F}2XbkkB= z5d6b>kX~$i5HAL$AHgqB>8Xc;L7^1Ii=afX^^G2$%gk?{nRz+0JTnRckVOIoGh4sa zc=qYa6Tm+M9QyTq^a54h-yZSA4c`9Qc;K!1N4`?bIX!^VCcl&*zMck!Y9(pPK9A8o z#h1#~$QHHV$Ex(DhXEv0_dlv;_iFm65Rge%3&p9+-ip)Bb+S8%bL+{!5e6T;z?y)1 zDx@D6zdL~A8RtXNbkE9;JVs34lJt9_JZCEC*7Gg3J8x{sxN+A$01F+QL#?xw7?~QX z#p2)^h1oCER-F^Hg}|n@-^vH7d1`TTsrI?_MoVJScg3+{l;5U@Wv<-}xwI!PR}E~Z wUpzi-PQuEBHhCHm`Fal-{$I0tuBtX7d$T7CHl-~Y+O!`;yn>DMr8|fJ0(i-1Pyhe` delta 423 zcmYLFyDvjg82_E`ocmOb$Zd(%BawOx71~rh7E+NL2@we~nrg8~B_ak4QetT28l+o0 znHu6xFbiVpPz#B8BnB3d;JZ3F)0f}#`_A6<@pKddKmgm27+V;hOMl%>t^jsFgXUp$ zR1BRhHd`vud)jfnW)APvY3cE^5S)~ce*=8N z%=)tz4MoDq-6lIRlPYzW8}q`gNtkj&ty_jIAN7i_*KPqd{6|VCK2pP!NCqB6My`rm z#JF9zgE2YLxjUFk-G@(f1&pzWExhCR5cR#RQ(j)mOV|dB>w*=r5uwyjbw)~tfsuiMfrp`iftkS}%rVH>LO=>A!WzK9!05G6rhtVd=-$Dk%@bI98SCW? zJQFH_s@Z{<8Hibdm<5R07#tZmm>hU7{{PGn$iTtiaHgTbLGA}ohT;D&hK~%Kj81n8 znfmYDX#|RZG%@}E#$W)H;9_t*7xq%O0Vu=<#LNs?|BOKD8JynNG8^B!0~7<9&j?g5 M!N9P24%-Gc0PdD6JOBUy delta 180 zcmX>jbw)~tfsuiMfrp`iftkS}%rVG$>Xj8P3=FIR3=E8(8)XVuSf+@R5O&@ophg z|GhgP0U!WrV*3A$!2l@5#c(d{r7l>Q4M;LGWc@P&>0o$Y%WMqR0WzKus9FL@Z=S=p GfeiqAwkkaU