From d43f2dc41f37d06ae09e5ee1666e1bb72ada2bdf Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Sat, 16 Mar 2024 10:42:01 -0600 Subject: [PATCH] [CFF2IndexOf] Fix data_base From the spec: "Offsets in the offset array are relative to the byte that precedes the object data." --- Lib/fontTools/ttLib/tables/otConverters.py | 6 +- Tests/ttLib/data/varc-6868.ttf | Bin 9836 -> 9836 bytes Tests/ttLib/data/varc-ac00-ac01-500upem.ttx | 303 ++++++++++---------- Tests/ttLib/data/varc-ac00-ac01.ttf | Bin 3372 -> 3284 bytes 4 files changed, 148 insertions(+), 161 deletions(-) diff --git a/Lib/fontTools/ttLib/tables/otConverters.py b/Lib/fontTools/ttLib/tables/otConverters.py index d214938bc7..b49c95d9f7 100644 --- a/Lib/fontTools/ttLib/tables/otConverters.py +++ b/Lib/fontTools/ttLib/tables/otConverters.py @@ -1859,7 +1859,7 @@ def getReadArray(reader, offSize): offsets = readArray(count + 1) items = [] lastOffset = offsets.pop(0) - reader.readData(lastOffset) # In case first offset is not 0 + reader.readData(lastOffset - 1) # In case first offset is not 1 for offset in offsets: assert lastOffset <= offset @@ -1880,7 +1880,7 @@ def getReadArray(reader, offSize): def get_read_item(): reader_copy = reader.copy() offset_pos = reader.pos - data_pos = offset_pos + (count + 1) * offSize + data_pos = offset_pos + (count + 1) * offSize - 1 readArray = getReadArray(reader_copy, offSize) def read_item(i): @@ -1922,7 +1922,7 @@ def write(self, writer, font, tableDict, values, repeatIndex=None): ] offsets = [len(item) for item in items] - offsets = [0] + list(accumulate(offsets)) + offsets = list(accumulate(offsets, initial=1)) lastOffset = offsets[-1] offSize = ( diff --git a/Tests/ttLib/data/varc-6868.ttf b/Tests/ttLib/data/varc-6868.ttf index 47f85e9b7ba7760f8ffd8046b312bf13e83aa18c..bb2c518b72e14b98e4e667857aa8f6c093e69b24 100644 GIT binary patch delta 157 zcmaFk^TtPnfsuiMfrp`iftkS}%rVG$rSAG;8%1I`S*~~8J-WGs(|}ouk(KekVlyL9 z1p`nu6Od$OWVCjTPMkk^AI~l}M#<2IZC5te@yapsGBUI=++&=;xQy`=Q_$v>d_7Ep zj0{B#w-`ehS212?VrLR>-bbXwAgS$jl|Bp=;sb862NqH@Q!^nUj&B5~w$U@zZ80 Hksu)e+G;6Q delta 157 zcmaFk^TtPnfsuiMfrp`iftkS}%rVG$uFUe?8%1I`S>CUCdwX*UrvbAR0}JDS#b!pJ z3I?ERCLqbm$YA9Xl`wDeKAv4{3=$#rTQ6^} - + @@ -215,9 +215,6 @@ 0013 - - 0014 - @@ -536,22 +533,27 @@ 1.0 271 - - - - 0014 - 0x0 - -1.0 - 0.0 - 1.0 - 272 - + + + + + + + + + + + + + + + @@ -582,21 +584,6 @@ - - - - - - - - - - - - - - - @@ -661,6 +648,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -730,29 +740,6 @@ - - - - - - - - - - - - - - - - - - - - - - - @@ -822,54 +809,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -894,30 +833,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - @@ -968,24 +883,71 @@ - - - - - - - + + + + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1066,6 +1028,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1094,6 +1081,21 @@ + + + + + + + + + + + + + + + @@ -1124,21 +1126,6 @@ - - - - - - - - - - - - - - - @@ -1170,14 +1157,14 @@ + - - + @@ -1187,7 +1174,7 @@ - + @@ -1202,14 +1189,14 @@ - + - + diff --git a/Tests/ttLib/data/varc-ac00-ac01.ttf b/Tests/ttLib/data/varc-ac00-ac01.ttf index 4b81eb6a8d4b4da76b5d169d3ad018775ca1ce36..3134c0ad3eeaf37f9f23f9ac49fc69e9c2ee59c4 100644 GIT binary patch delta 732 zcmZ8eO-NKx6h8O;zj<$Rv@7Wh+Wfq5DmSJC!32sD{TNAEkqPhH@E+Pn87%GCbY3Cv-CWwIwD#A^hM~fClLQd!Pv*|w0x#v6Iz2|-Bp2cXXb_y5( znBag2tryzPw(}L|G=Q82Ua5hrG#0L`j;5N9;=0^c$7CZc2%;pB$qGnx zNo7op)HWPB(Su3lN<{<|N;ZN)9>7Oi+AVhqCxs21HRIT;Rbx&v&{q!pjrIR_Ip(O) zM{*bhdJX!A0x~F0P!22gdR$V|#~p=pC~{tO)y>WNdf(^V_1reL!8QtBJHtQUJ$?s^wVt8_?MGNMxRDh*Gj3CRw$;+#tDn=%fV x30yHPu5!+Of2&B(-~;ESQqgzut-06oTp^Rm>^T1GQ)m`Q+MHVl$4?5VjD@j zvbW38p9~^|1R=TzBPdD;FTx88p)Mmvmr@a}_Z0LVp7(su`+V>FJs;m@!*b(11OO8` zIM914exlF4JevTN0YDra%_Orhmj?m)7w?LWUrAni@yYuLkS?&EnwY#ce&|_$1#rA# zePM!ix&K@97rU4rW8QKxnHg)(p0*Er#|G|Xr!G&kaSkP7>kJ>hF24U@I3Q%F z@Ic2ydMuXqL=fS@QP{WjKtdfXUL{sXq+Ve~B3;p1jkz864hRpG9dG5OO3k;Lmcv4a z>9HExA~7l}@x72;rX)FJnW3nVxj_?9-TuJg#4!C-&b#ZNaxo0U9)|A}mwoDSX;|6@ zy;NK2zS=@-YMAb-0s5vk^1s=W(~x4j;2xRH2^!EsbX7Z050vt8u`bq&r9MIbzMJ$w z+wB#mSF3qm7OlgS2XNh!xs4LSER8 zp|Nv~-$TjqfU{-`pJJLJ8Z!S*Tr~IfXqIJFt2-MTd94b|+T7fz=1X}g7K;@McFvay N_+8|*^*;rRr9YSMq+