varLib.merger: when flattening singlepos, copy valuerecords
to avoid modifying original master fonts' SinglePos tables
https://github.com/fonttools/fonttools/pull/1641/files#r293302141
diff --git a/Lib/fontTools/varLib/merger.py b/Lib/fontTools/varLib/merger.py
index d77f5c7..7c3c6cf 100644
--- a/Lib/fontTools/varLib/merger.py
+++ b/Lib/fontTools/varLib/merger.py
@@ -730,7 +730,6 @@
return lst
def _Lookup_SinglePos_subtables_flatten(lst, font, min_inclusive_rec_format):
- lst = list(lst)
glyphs, _ = _merge_GlyphOrders(font,
[v.Coverage.glyphs for v in lst], None)
num_glyphs = len(glyphs)
@@ -746,12 +745,12 @@
val_rec = singlePos.Value
for gname in singlePos.Coverage.glyphs:
i = glyphs.index(gname)
- new.Value[i] = val_rec
+ new.Value[i] = copy.deepcopy(val_rec)
elif singlePos.Format == 2:
for j, gname in enumerate(singlePos.Coverage.glyphs):
val_rec = singlePos.Value[j]
i = glyphs.index(gname)
- new.Value[i] = val_rec
+ new.Value[i] = copy.deepcopy(val_rec)
return [new]
@AligningMerger.merger(ot.Lookup)