Revert "[ttGlyphSet] Must deep copy var components when instantiating"
This reverts commit fe6f5bd14386d0a1f546d079f1ec38e4d2414fbf. Better fix.
This commit is contained in:
parent
fe6f5bd143
commit
51d7524a23
@ -2010,6 +2010,7 @@ class GlyphVarComponent(object):
|
|||||||
i += 1
|
i += 1
|
||||||
self.location = newLocation
|
self.location = newLocation
|
||||||
|
|
||||||
|
self.transform = DecomposedTransform()
|
||||||
if self.flags & (
|
if self.flags & (
|
||||||
VarComponentFlags.HAVE_TRANSLATE_X | VarComponentFlags.HAVE_TRANSLATE_Y
|
VarComponentFlags.HAVE_TRANSLATE_X | VarComponentFlags.HAVE_TRANSLATE_Y
|
||||||
):
|
):
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from collections.abc import Mapping
|
from collections.abc import Mapping
|
||||||
from contextlib import contextmanager
|
from contextlib import contextmanager
|
||||||
from copy import copy, deepcopy
|
from copy import copy
|
||||||
from types import SimpleNamespace
|
from types import SimpleNamespace
|
||||||
from fontTools.misc.fixedTools import otRound
|
from fontTools.misc.fixedTools import otRound
|
||||||
from fontTools.misc.loggingTools import deprecateFunction
|
from fontTools.misc.loggingTools import deprecateFunction
|
||||||
@ -288,14 +288,12 @@ def _setCoordinates(glyph, coord, glyfTable):
|
|||||||
|
|
||||||
if glyph.isComposite():
|
if glyph.isComposite():
|
||||||
assert len(coord) == len(glyph.components)
|
assert len(coord) == len(glyph.components)
|
||||||
# Shallow copy is enough: all attributes that we change are scalars
|
glyph.components = [copy(comp) for comp in glyph.components] # Shallow copy
|
||||||
glyph.components = [copy(comp) for comp in glyph.components]
|
|
||||||
for p, comp in zip(coord, glyph.components):
|
for p, comp in zip(coord, glyph.components):
|
||||||
if hasattr(comp, "x"):
|
if hasattr(comp, "x"):
|
||||||
comp.x, comp.y = p
|
comp.x, comp.y = p
|
||||||
elif glyph.isVarComposite():
|
elif glyph.isVarComposite():
|
||||||
# Deep copy needed because we mutate comp.transform and comp.location
|
glyph.components = [copy(comp) for comp in glyph.components] # Shallow copy
|
||||||
glyph.components = [deepcopy(comp) for comp in glyph.components]
|
|
||||||
for comp in glyph.components:
|
for comp in glyph.components:
|
||||||
coord = comp.setCoordinates(coord)
|
coord = comp.setCoordinates(coord)
|
||||||
assert not coord
|
assert not coord
|
||||||
|
Loading…
x
Reference in New Issue
Block a user