diff --git a/scour.py b/scour.py index 5a32f43..5fd8245 100755 --- a/scour.py +++ b/scour.py @@ -215,12 +215,13 @@ def removeUnreferencedIDs(referencedIDs, identifiedElements): # returns the number of unreferenced children removed from defs elements def vacuumDefs(doc): global numElemsRemoved + keepTags = ['font', 'style', 'metadata' ] num = 0 defs = doc.documentElement.getElementsByTagNameNS(NS['SVG'], 'defs') for aDef in defs: elemsToRemove = [] for elem in aDef.childNodes: - if elem.nodeType == 1 and elem.getAttribute('id') == '' : + if elem.nodeType == 1 and elem.getAttribute('id') == '' and not elem.nodeName in keepTags: elemsToRemove.append(elem) for elem in elemsToRemove: aDef.removeChild(elem) diff --git a/testscour.py b/testscour.py index 2a5c16b..aa70a9c 100755 --- a/testscour.py +++ b/testscour.py @@ -195,6 +195,19 @@ class NoInkscapeAttributes(unittest.TestCase): findInkscapeAttr), False, 'Found Inkscape attributes' ) +class KeepReferencedFonts(unittest.TestCase): + def runTest(self): + doc = scour.scourXmlFile('unittests/referenced-font.svg') + fonts = doc.documentElement.getElementsByTagNameNS('http://www.w3.org/2000/svg','font') + self.assertEquals(len(fonts), 1, + "Font wrongly removed from " ) +class RemoveUnreferencedFonts(unittest.TestCase): + def runTest(self): + doc = scour.scourXmlFile('unittests/unreferenced-font.svg') + fonts = doc.documentElement.getElementsByTagNameNS('http://www.w3.org/2000/svg','font') + self.assertEquals(len(fonts), 0, + "Font was not removed from " ) + if __name__ == '__main__': unittest.main() diff --git a/unittests/referenced-font.svg b/unittests/referenced-font.svg new file mode 100644 index 0000000..f2643e3 --- /dev/null +++ b/unittests/referenced-font.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + Text + diff --git a/unittests/unreferenced-font.svg b/unittests/unreferenced-font.svg new file mode 100644 index 0000000..92f9a52 --- /dev/null +++ b/unittests/unreferenced-font.svg @@ -0,0 +1,16 @@ + + + + + + + + + + + + Text +