diff --git a/scour/scour.py b/scour/scour.py index c6f4c75..9b15637 100644 --- a/scour/scour.py +++ b/scour/scour.py @@ -2966,7 +2966,9 @@ def optimizeTransform(transform): # y1 * uniformscalefactor2 prevArgs[1] *= currArgs[0] del transform[i] - if prevArgs[0] == prevArgs[1] == 1: + # if prevArgs is [1] or [1, 1], then it is effectively an + # identity matrix and can be removed. + if prevArgs[0] == 1 and (len(prevArgs) == 1 or prevArgs[1] == 1): # Identity scale! i -= 1 del transform[i] diff --git a/testscour.py b/testscour.py index b52d98f..895a28d 100755 --- a/testscour.py +++ b/testscour.py @@ -2304,6 +2304,17 @@ class TransformIdentityTranslate(unittest.TestCase): 'Transform containing identity translation not removed') +class TransformIdentityScale(unittest.TestCase): + + def runTest(self): + try: + doc = scourXmlFile('unittests/transform-scale-is-identity.svg') + except IndexError: + self.fail("scour failed to handled scale(1) [See GH#190]") + self.assertEqual(doc.getElementsByTagName('line')[0].getAttribute('scale'), '', + 'Transform containing identity translation not removed') + + class DuplicateGradientsUpdateStyle(unittest.TestCase): def runTest(self): diff --git a/unittests/transform-scale-is-identity.svg b/unittests/transform-scale-is-identity.svg new file mode 100644 index 0000000..037d38a --- /dev/null +++ b/unittests/transform-scale-is-identity.svg @@ -0,0 +1,5 @@ + + + + +