From 4999209f9ce01c824020f5b68403c5b4b52d3e8c Mon Sep 17 00:00:00 2001
From: jvoisin <julien.voisin@dustri.org>
Date: Sat, 13 Jul 2019 21:26:05 +0200
Subject: [PATCH] Add support for svg

---
 README.md                |   1 +
 libmat2/images.py        |  34 ++-
 tests/data/dirty.svg     | 636 +++++++++++++++++++++++++++++++++++++++
 tests/data/embedded.docx | Bin 24601 -> 24316 bytes
 tests/data/embedded.odt  | Bin 33019 -> 32651 bytes
 tests/test_libmat2.py    |  28 +-
 6 files changed, 695 insertions(+), 4 deletions(-)
 create mode 100644 tests/data/dirty.svg

diff --git a/README.md b/README.md
index d82d12b..5af5220 100644
--- a/README.md
+++ b/README.md
@@ -30,6 +30,7 @@ metadata.
 - `python3-mutagen` for audio support
 - `python3-gi-cairo` and `gir1.2-poppler-0.18` for PDF support
 - `gir1.2-gdkpixbuf-2.0` for images support
+- `gir1.2-rsvg-2.0` for svg support
 - `FFmpeg`, optionally, for video support
 - `libimage-exiftool-perl` for everything else
 - `bubblewrap`, optionally, for sandboxing
diff --git a/libmat2/images.py b/libmat2/images.py
index 32a329f..8bef3f8 100644
--- a/libmat2/images.py
+++ b/libmat2/images.py
@@ -1,18 +1,48 @@
 import imghdr
 import os
-from typing import Set
+from typing import Set, Dict, Union
 
 import cairo
 
 import gi
 gi.require_version('GdkPixbuf', '2.0')
-from gi.repository import GdkPixbuf, GLib
+gi.require_version('Rsvg', '2.0')
+from gi.repository import GdkPixbuf, GLib, Rsvg
 
 from . import exiftool
 
 # Make pyflakes happy
 assert Set
 
+class SVGParser(exiftool.ExiftoolParser):
+    mimetypes = {'image/svg+xml', }
+    meta_allowlist = {'Directory', 'ExifToolVersion', 'FileAccessDate',
+                      'FileInodeChangeDate', 'FileModifyDate', 'FileName',
+                      'FilePermissions', 'FileSize', 'FileType',
+                      'FileTypeExtension', 'ImageHeight', 'ImageWidth',
+                      'MIMEType', 'SVGVersion', 'SourceFile', 'ViewBox'
+                      }
+
+    def remove_all(self) -> bool:
+        svg = Rsvg.Handle.new_from_file(self.filename)
+        dimensions = svg.get_dimensions()
+        surface = cairo.SVGSurface(self.output_filename,
+                                   dimensions.height,
+                                   dimensions.width)
+        context = cairo.Context(surface)
+        svg.render_cairo(context)
+        surface.finish()
+        return True
+
+    def get_meta(self) -> Dict[str, Union[str, dict]]:
+        meta = super().get_meta()
+
+        # The namespace is mandatory, but thereis only one bossible.
+        ns = 'http://www.w3.org/2000/svg'
+        if meta.get('Xmlns', ns) == ns:
+            meta.pop('Xmlns')
+        return meta
+
 class PNGParser(exiftool.ExiftoolParser):
     mimetypes = {'image/png', }
     meta_allowlist = {'SourceFile', 'ExifToolVersion', 'FileName',
diff --git a/tests/data/dirty.svg b/tests/data/dirty.svg
new file mode 100644
index 0000000..e2bde85
--- /dev/null
+++ b/tests/data/dirty.svg
@@ -0,0 +1,636 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="384"
+   inkscape:export-xdpi="384"
+   inkscape:export-filename="mat2.png"
+   width="128"
+   height="128"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="dirty.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0"
+   style="display:inline;enable-background:new"
+   viewBox="0 0 128 128">
+  <script
+     id="script4600" />
+  <title
+     id="title4162">Adwaita Icon Template</title>
+  <defs
+     id="defs3" />
+  <sodipodi:namedview
+     stroke="#ef2929"
+     fill="#f57900"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="4.0446508"
+     inkscape:cx="61.536232"
+     inkscape:cy="41.548134"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1366"
+     inkscape:window-height="747"
+     inkscape:window-x="0"
+     inkscape:window-y="21"
+     width="400px"
+     height="300px"
+     inkscape:snap-nodes="true"
+     inkscape:snap-bbox="false"
+     objecttolerance="7"
+     gridtolerance="12"
+     guidetolerance="13"
+     inkscape:window-maximized="1"
+     inkscape:pagecheckerboard="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:locked="false"
+     inkscape:measure-start="0,0"
+     inkscape:measure-end="0,0"
+     inkscape:object-nodes="true"
+     inkscape:bbox-nodes="true"
+     inkscape:snap-global="true"
+     inkscape:object-paths="true"
+     inkscape:snap-intersection-paths="true"
+     inkscape:snap-bbox-edge-midpoints="true"
+     inkscape:snap-bbox-midpoints="true"
+     showborder="false"
+     inkscape:snap-center="true"
+     inkscape:snap-object-midpoints="true"
+     inkscape:snap-midpoints="true"
+     inkscape:snap-smooth-nodes="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid5883"
+       spacingx="2"
+       spacingy="2"
+       enabled="true"
+       visible="true"
+       empspacing="4"
+       originx="0"
+       originy="0" />
+    <sodipodi:guide
+       position="64,8"
+       orientation="0,1"
+       id="guide1073"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="12,64"
+       orientation="1,0"
+       id="guide1075"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,104"
+       orientation="0,1"
+       id="guide1099"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,128"
+       orientation="0,1"
+       id="guide993"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="104,64"
+       orientation="1,0"
+       id="guide995"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="9.2651362e-08,64"
+       orientation="1,0"
+       id="guide867"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="120,64"
+       orientation="1,0"
+       id="guide869"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,116"
+       orientation="0,1"
+       id="guide871"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <inkscape:grid
+       type="xygrid"
+       id="grid873"
+       spacingx="1"
+       spacingy="1"
+       empspacing="8"
+       color="#000000"
+       opacity="0.49019608"
+       empcolor="#000000"
+       empopacity="0.08627451"
+       dotted="true" />
+    <sodipodi:guide
+       position="24,64"
+       orientation="1,0"
+       id="guide877"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="116,64"
+       orientation="1,0"
+       id="guide879"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,120"
+       orientation="0,1"
+       id="guide881"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,12"
+       orientation="0,1"
+       id="guide883"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="8,64"
+       orientation="1,0"
+       id="guide885"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="128,64"
+       orientation="1,0"
+       id="guide887"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,0"
+       orientation="0,1"
+       id="guide897"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,24"
+       orientation="0,1"
+       id="guide899"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="256,256"
+       orientation="-0.70710678,0.70710678"
+       id="guide950"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+    <sodipodi:guide
+       position="64,64"
+       orientation="0.70710678,0.70710678"
+       id="guide952"
+       inkscape:locked="false"
+       inkscape:label=""
+       inkscape:color="rgb(0,0,255)" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata4">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>GNOME Design Team</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:source>mat2's source code</dc:source>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+        <dc:title>Adwaita Icon Template</dc:title>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mat2</rdf:li>
+            <rdf:li>logo</rdf:li>
+            <rdf:li>metadata</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:date>2019 07 13</dc:date>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title>LGPL</dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>jvoisin</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:identifier>mat2-testdata-svg</dc:identifier>
+        <dc:relation />
+        <dc:language>English</dc:language>
+        <dc:coverage />
+        <dc:description>This is a test svg image for mat2's testsuite</dc:description>
+        <dc:contributor>
+          <cc:Agent>
+            <dc:title>jvoisin, and Rose for the design</dc:title>
+          </cc:Agent>
+        </dc:contributor>
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Reproduction" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#Distribution" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Notice" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#Attribution" />
+        <cc:permits
+           rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Icon"
+     inkscape:groupmode="layer"
+     style="display:inline"
+     transform="translate(0,-172)">
+    <g
+       inkscape:groupmode="layer"
+       id="layer2"
+       inkscape:label="baseplate"
+       style="display:none">
+      <text
+         xml:space="preserve"
+         style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:5.33333349px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.33264872;enable-background:new"
+         x="7.9499588"
+         y="148.65199"
+         id="context"
+         inkscape:label="context"><tspan
+           sodipodi:role="line"
+           id="tspan2716"
+           x="7.9499588"
+           y="148.65199"
+           style="font-size:5.33333349px;stroke-width:0.33264872">apps</tspan></text>
+      <text
+         inkscape:label="icon-name"
+         id="text3021"
+         y="157.23398"
+         x="7.7533054"
+         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:5.33333349px;line-height:125%;font-family:Cantarell;-inkscape-font-specification:'Cantarell, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.33264872;enable-background:new"
+         xml:space="preserve"><tspan
+           y="157.23398"
+           x="7.7533054"
+           id="tspan3023"
+           sodipodi:role="line"
+           style="font-size:5.33333349px;stroke-width:0.33264872">org.gnome.</tspan></text>
+      <g
+         style="display:inline;fill:#000000;enable-background:new"
+         transform="matrix(7.9911709,0,0,8.0036407,-167.7909,-4846.0776)"
+         id="g12027"
+         inkscape:export-xdpi="12"
+         inkscape:export-ydpi="12" />
+      <rect
+         style="display:inline;overflow:visible;visibility:visible;fill:#f0f0f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;enable-background:accumulate"
+         id="rect13805"
+         width="128"
+         height="128"
+         x="9.2651362e-08"
+         y="172"
+         inkscape:label="512x512" />
+      <g
+         id="g883"
+         style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1"
+         transform="translate(-24,24)" />
+      <g
+         id="g900"
+         style="fill:none;fill-opacity:0.25098039;stroke:#a579b3;stroke-opacity:1"
+         transform="translate(-24,24)" />
+      <g
+         id="g1168"
+         transform="matrix(0.25,0,0,0.25,6.9488522e-8,225)">
+        <circle
+           cx="256"
+           cy="44"
+           r="240"
+           id="path1142"
+           style="opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
+        <rect
+           ry="32"
+           rx="32"
+           y="-180"
+           x="96"
+           height="448"
+           width="319.99979"
+           id="rect1110"
+           style="opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal" />
+        <rect
+           ry="32"
+           rx="32"
+           y="-164"
+           x="48"
+           height="416"
+           width="416"
+           id="rect1110-8"
+           style="display:inline;opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
+        <rect
+           ry="32"
+           rx="32"
+           y="-116"
+           x="32"
+           height="320"
+           width="448"
+           id="rect1110-8-9"
+           style="display:inline;opacity:0.1;fill:#2864b0;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new" />
+      </g>
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer9"
+       inkscape:label="hires"
+       style="display:none" />
+    <g
+       id="g944"
+       transform="matrix(1,0,0,0.93868822,0,14.545966)">
+      <path
+         style="fill:#99c1f1;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.41013032;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         d="m 50.53899,195.25817 6.396029,-11.43484 1.082405,-0.87215 4.821622,-10.46578 0.885604,-0.38763 2.558412,4.74837 2.755213,9.59364 1.672808,1.35667 3.542417,-0.87215 5.707227,12.59771 12.988859,9.59364 3.050415,3.87621 v 2.71335 l -16.334476,-1.25977 -7.084833,1.45359 -4.428021,-0.38763 -7.084833,0.29072 -11.414452,-0.58143 -3.640817,0.96905 -9.052843,-1.64739 -2.066409,0.0969 -1.476008,-0.48452 1.377607,-1.45358 1.869609,-1.06596 6.002428,-11.04722 1.279206,0.48453 5.412025,-6.49267 z"
+         id="path3455"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 49.358184,215.31759 -3.444016,0.9206 -9.003641,-1.74429 -1.918809,0.24226 -1.623608,-0.58143 1.574407,-1.50204 1.722008,-0.96905 5.953228,-11.09567 1.279205,0.53298 5.510426,-6.54112 0.344401,0.29072 -4.969223,10.27197 2.214011,1.93811 -0.246001,4.45765 z"
+         id="path3459"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#241f31;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 50.438601,195.22912 6.470906,-11.5803 1.113274,-0.6167 4.870575,-10.62099 0.904535,-0.41113 -0.417479,3.3576 0.626218,0.89079 0.834954,15.89722 1.391594,3.70021 -3.687722,5.34476 0.208739,1.37044 -0.347898,5.68737 1.87865,3.28908 7.375442,2.19272 1.252433,2.19272 -0.487057,0.13704 -4.244358,-0.54818 -6.540486,0.41114 -2.435287,-2.19272 -0.626216,-4.24839 -2.087389,-6.16703 -4.035619,-3.42612 -2.087388,-4.38544"
+         id="path3461"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 32.069579,218.11563 c -0.06958,-0.27409 0.695796,-1.23341 0.695796,-1.23341 l 2.783185,-0.0685 1.739491,2.26124 4.661836,5.13919 0.139158,1.57602 -4.174778,5.96145 -0.487057,6.16703 -2.922344,2.26124 -0.06958,1.57601 h -1.113274 l -1.322013,-3.08351 2.017809,-14.86938 z"
+         id="path3400"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 48.83827,222.43255 1.600331,-3.01499 -0.695796,-0.75375 -5.635951,-1.16488 -3.200663,0.82227 -0.06958,1.50749 1.53075,0.75375 1.461174,2.67237 -0.208739,1.71307 1.739489,1.02783 2.296129,-0.54818 z"
+         id="path3402"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 51.203977,217.70449 1.113274,-0.68522 2.365707,1.02784 1.322013,2.67237 -2.226548,2.26125 -1.322013,-0.82227 -1.322013,-0.61671 0.834956,-1.71306 z"
+         id="path3404"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 43.758957,226.61242 1.948228,0.68522 0.417479,1.91863 -0.626216,1.30193 -1.182854,0.34261 -1.113275,1.02784 -0.765376,3.63169 0.626218,3.01499 -1.252435,0.68522 -0.487057,-0.41113 -0.278319,-1.5075 -1.80907,-1.37045 -0.765376,-3.49464 3.618141,-3.42613 1.669912,-2.67237"
+         id="path3406"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 50.57776,223.25481 0.13916,0.68523 -2.783187,3.83726 0.06958,1.64454 -0.626218,1.50749 -1.60033,1.43897 -0.06958,0.75375 1.600333,1.91863 1.182854,3.08351 0.974114,0.68523 1.669911,-2.80942 -0.278318,-3.22056 3.966039,-3.3576 0.695796,-1.09636 -3.270243,-4.45396 z"
+         id="path3408"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 51.839954,236.39856 -0.834826,1.58948 0.166966,1.26061 1.057445,1.97315 0.500896,-0.32886 0.389584,-1.7539 1.447031,-1.151 2.337512,-4.0559 -0.22262,-1.04138 -1.947927,-1.69909 -2.114892,1.31542 0.278276,3.39819 z"
+         id="path3410"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 57.593778,229.84236 -1.043694,1.09636 0.765375,0.89079 1.043695,-0.20556 v -1.43898 z"
+         id="path3412"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 59.344793,218.25267 -0.765376,2.19272 -0.695796,0.27409 -0.695796,1.91863 -2.226548,2.26124 2.574446,3.56317 h 1.182854 l 0.487057,0.75375 0.626217,1.09636 1.948229,1.30193 2.922346,-0.6167 1.53075,-2.26125 -1.043694,-3.3576 -1.043693,-1.64454 1.322011,-2.60385 -0.904535,-1.37045 -2.226548,0.0685 z"
+         id="path3416"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 72.150522,238.17554 -0.518261,1.78635 1.036524,2.16915 1.684349,-2.04155 -0.647826,-2.16915 z"
+         id="path3418"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 66.789813,223.66595 1.600333,-0.75375 1.739489,-4.11135 2.922346,0.75375 1.322013,0.41114 0.139159,6.7152 -1.461172,1.02784 -2.226548,4.17987 -0.834956,-0.41114 -0.626216,0.95932 -2.574448,-0.61671 0.904537,-3.08351 z"
+         id="path3422"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 77.505077,218.59529 1.182854,-0.20557 2.435287,1.30193 -0.974115,1.02783 -2.087389,3.63169 -1.391593,0.0685 -1.113274,-0.61671 1.043695,-2.19271 z"
+         id="path3426"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 73.539038,231.06638 1.043695,-1.30193 1.043694,-2.80942 4.522676,1.71306 -0.974115,2.87795 -1.94823,-0.41114 -1.80907,1.09636 z"
+         id="path3428"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 78.200873,225.6531 7.932079,-7.94861 3.339822,1.09636 0.974115,0.13705 1.600331,-1.02784 3.339822,0.0685 -5.079314,12.81371 -3.200663,-1.98715 0.139161,-1.16489 -0.695798,-0.6167 -0.208737,-1.16488 -1.043696,0.27409 -3.200663,2.39829 z"
+         id="path3430"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 81.401536,230.99786 c 0,-0.2741 2.156968,-1.98716 2.156968,-1.98716 l 2.017811,1.30193 -0.904535,2.32976 -1.182855,0.75375 z"
+         id="path3432"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 81.679855,237.8501 0.765375,-1.91863 0.208739,-1.2334 2.156969,0.20557 2.156968,-2.87795 3.409403,1.02784 -0.904535,2.80942 -0.904535,0.34261 -0.626218,2.80943 1.043694,4.72805 -0.904535,1.09636 -1.80907,-2.19272 -0.626217,-1.37045 z"
+         id="path3434"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 78.131294,238.60385 0.626216,3.08351 -0.626216,3.22056 0.765375,0.95931 -0.626216,5.68737 2.504866,2.32976 1.87865,-0.47965 0.417478,-3.35761 1.669911,-0.0685 3.757301,-1.8501 -0.20874,-1.98716 -2.226548,-0.20556 -1.182854,-3.01499 -3.200662,-2.05568 -1.252434,-2.39828 z"
+         id="path3436"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 84.532619,251.41755 -0.278318,1.43898 -0.695797,0.6167 1.322013,2.67238 2.365709,-0.20557 1.53075,-2.94647 -2.365707,-1.98715 z"
+         id="path3438"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 64.993183,249.51154 -1.14959,2.51583 0.766392,1.69818 2.618509,0.25159 0.702526,1.19502 1.021857,2.39003 -0.574794,2.32714 3.89583,1.88688 0.95799,-1.06923 0.510928,-4.59139 -4.023561,-2.70451 -0.127732,-4.21402 z"
+         id="path3440"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 72.912822,251.00642 h 1.391592 l 2.574446,0.75375 1.391593,1.98715 1.461172,1.30193 -0.139159,3.42612 -3.409402,1.57602 -0.974115,-1.85011 0.626217,-3.3576 -3.270243,-1.85011 z"
+         id="path3442"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 72.147446,264.77944 1.80907,-1.98715 3.339822,-1.85011 1.322013,-0.0685 4.661835,-3.63169 1.391594,0.34261 0.556637,4.52248 -3.200664,4.04283 -2.852765,-0.82227 -1.80907,0.54818 -0.765376,1.43897 -2.087389,0.68522 z"
+         id="path3444"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 75.06979,272.93361 0.765376,-1.30192 1.252433,-0.41114 0.904535,-2.87794 1.94823,-0.61671 0.556637,2.60386 -3.339822,6.0985 -1.391593,-0.0685 z"
+         id="path3446"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 71.451649,268.20556 -1.252433,1.85011 2.504867,1.98715 0.765376,0.82227 1.73949,-2.39829 -2.296127,-2.80942 -1.461173,0.27409 z"
+         id="path3448"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 62.24531,254.0948 1.461172,1.02784 1.948229,0.54818 0.487058,1.64454 -1.461173,2.67237 -0.06958,1.78159 -1.669911,1.85011 -1.252433,-2.05568 0.487057,-2.80942 -1.391593,-0.34261 -0.904535,-2.80942 z"
+         id="path3450"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 47.585836,246.55246 -0.695796,3.70021 -0.139159,1.37045 1.87865,0.68523 1.391592,0.95931 1.809071,-1.64454 -0.417478,-0.95931 z"
+         id="path3452"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 54.682958,247.78586 -1.043694,1.02784 0.208739,1.98715 1.600331,0.89079 0.626217,-0.47965 0.06958,-2.26125 z"
+         id="path3454"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 48.629531,258.95503 4.800994,-6.16703 3.409402,0.82227 0.556637,1.78159 3.131083,4.79657 -1.669911,5.82441 -3.200663,-1.37045 -0.417478,-3.49464 -2.087388,1.30192 z"
+         id="path3456"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 45.915924,252.71948 -0.487056,1.98715 1.60033,1.57602 1.461174,-0.20557 -0.347899,-2.19272 z"
+         id="path3458"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 67.555189,261.6274 -1.80907,2.80943 -2.435287,8.42826 2.783185,3.76874 1.461172,-0.0685 1.113274,-2.12419 1.043696,-0.20557 0.487057,-1.09636 -1.043694,-4.45396 1.182853,-4.31692 z"
+         id="path3460"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 58.718577,267.79443 1.600331,-1.23341 2.017809,1.71306 -0.904535,1.85011 z"
+         id="path3462"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 58.509838,276.49678 2.156968,-4.591 1.391593,-0.27409 0.834955,1.50749 -2.017809,5.13919 z"
+         id="path3464"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 71.242911,274.02997 1.391592,0.20557 1.043694,3.01499 2.01781,0.68522 1.530751,1.57602 -0.904535,2.87795 -2.365707,2.32976 -0.139159,3.56317 -1.322013,1.98715 -2.504867,-1.85011 -0.278318,-2.67237 -1.530752,-1.78159 -1.113274,-3.08351 3.61814,-4.17987 z"
+         id="path3466"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 62.893354,276.5653 3.270244,1.16489 0.06958,3.70021 -0.556637,0.68523 0.974115,3.70021 1.252433,1.64454 0.06958,3.08351 -2.017809,1.37045 -2.574447,8.08566 -2.574447,-1.30193 -1.948229,-9.79872 z"
+         id="path3468"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 58.440258,283.5546 h 0.556637 l 0.417478,0.95931 -0.208739,1.30193 -1.461172,0.13704 z"
+         id="path3472"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 56.700767,279.16916 -1.113274,0.95931 0.834956,2.80943 1.600331,0.20556 0.487058,-2.05567 -0.695796,-1.91863 z"
+         id="path3474"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 53.152207,272.17987 0.139159,5.13918 1.87865,1.23341 0.834955,-0.54818 0.904535,-3.63169 1.530752,-1.57602 -1.669911,-3.97431 -3.548561,3.08352 z"
+         id="path3476"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 45.915924,258.33832 -0.208739,3.83726 -4.731414,3.97431 1.948229,2.80942 8.488716,0.82227 0.417478,1.98715 1.043694,-0.75375 0.487057,-2.19272 1.182854,-1.64454 -0.417478,-1.09635 -1.87865,-2.60386 -3.757299,-1.37045 -1.461174,-3.22056 z"
+         id="path3480"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 40.279975,263.68308 1.669912,0.6167 3.061502,-6.37259 -0.904535,-5.61884 -2.504867,-0.34262 -1.391592,-1.2334 2.156968,-7.606 -2.087388,-4.45396 -3.409402,1.57602 -0.834956,3.42612 -1.87865,0.20557 -0.347898,2.1242 1.530752,1.64454 h 1.322013 l 0.626217,3.90578 2.296127,5.61884 -0.347898,2.19272 z"
+         id="path3482"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 66.531337,247.61066 -0.590018,-0.31657 -0.420783,-1.71262 0.427793,-0.66945 1.306823,-1.13114 2.316342,-1.38746 1.06612,0.23465 -0.01701,2.21105 -2.36166,3.35302 z"
+         id="path4284"
+         inkscape:connector-curvature="0"
+         inkscape:transform-center-x="4.9927099"
+         inkscape:transform-center-y="-9.3161687" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 72.373733,232.22199 -0.815102,1.03206 4.017286,4.12827 1.571981,0.17201 1.339096,-0.86006 0.931544,0.63071 2.387083,-2.98152 -2.794634,-0.91739 -3.027519,0.22934 z"
+         id="path3601"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 57.407878,237.1102 -1.301737,2.34289 -1.301738,0.61888 -0.17955,1.45878 -4.488748,1.54719 -0.403989,1.50299 0.314213,0.30944 1.032412,0.0884 v 1.41457 l 1.660839,1.50299 2.154598,-1.94504 1.571064,0.35364 2.738136,-1.94504 -1.436399,-2.56392 0.987525,-3.44803 -0.583538,-1.37037 z"
+         id="path3603"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 62.104217,246.96003 5.843936,-6.55723 0.659867,-2.66044 2.221783,-0.40757 -0.386451,-3.39556 -2.000988,-0.60704 -6.246127,-0.36572 -2.624948,2.5137 1.519708,2.75102 -0.347742,5.51876 z"
+         id="path3605"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 71.024647,249.63275 5.822153,1.31875 1.047988,-3.89891 -1.280874,-1.43343 0.523995,-6.02038 -3.551515,5.275 0.34933,2.06413 -2.037753,0.80272 -1.164431,0.45869 z"
+         id="path3607"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 59.099222,247.24427 -2.095974,1.72011 -0.05822,1.60543 0.465772,1.72011 1.455539,0.97473 -0.407551,0.97473 2.328861,-0.34402 2.27064,-2.86685 -1.571981,-0.57337 -0.640437,-2.86685 -1.51376,-0.40136 z"
+         id="path3609"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 44.078067,234.34346 0.291107,4.47228 -1.863089,1.43342 2.095976,3.72691 2.037753,0.0573 2.27064,-3.55489 -2.969297,-4.98831 z"
+         id="path3611"
+         inkscape:connector-curvature="0" />
+      <path
+         style="fill:#1a5fb4;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.13671011px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+         d="m 44.660282,245.46683 -3.318627,4.30027 1.339096,1.26141 2.561747,-0.28668 1.222652,-3.15354 z"
+         id="path3613"
+         inkscape:connector-curvature="0" />
+    </g>
+  </g>
+</svg>
diff --git a/tests/data/embedded.docx b/tests/data/embedded.docx
index b134724ae59b939dff5432613800263cc7ed8098..615e522df5b4c962f94689ce3f0f315eb16314d5 100644
GIT binary patch
delta 770
zcmbPvfbq{>#tm|z^*lRP`Cb1jyvL7;fgyl}fkBvofuTIVC`CUvH6=4qzc{s|v_P+*
zvNb3$`?i5V-S_nte;&0g^NW<oVeD@;ZRyM5J-utXVN+6k&ely!UixL8y-`2^jmlbU
zuB**CcWdw8E&rvGoh`$xSbh4KM%SY1lcEycRRZ<1&+F|!b9q;XdwqkIdFz$bX%+Y8
z?)Pp};3&Il(zId9#iz?0PR-q-)7z%AB&dCn1kd6ZE30n(<+JJ&GfgYh{o!l#imAFp
zWJhGt#C`tylbi!8*7clzbUx1WiouS%(w;&558c1_{$9a*&1sd+zPB4*GFDzI`w>x*
zq#peEl=5PAv+nc&&RCNRSv=D98-zm~llL@BMT#`JF4$|5@vZ(r>J2sXS%IJ1q@~-^
zY918o-ib|o=dWBLJ|+Cjv}KP!9&J8xblX&GJ3gCtu~Tw)aGA>f`*umuk?mxA&ZK>{
zd$u^opQ=;S)&5!9;pM9{#p<JzRnudytn-UpWPkK84Bfor-o2!Ae;4EyDbBTQ>#J{F
zd*VIQ>`n77TCeOrt7&+kJ?1CVX2(MwJ|{Wa4l|pFH+j5M*|l%p525cXde#OSuZi5C
zKEp4O>A6AhHm*Dy$LCe@A}{%*4CeQ!E#A-{aZ1KCarWN0_=9Jn(!WJ)d4BY|bcB+i
zRm1`}b&)lH!cNNgE&0pR!>nrIz;^m**3S8J>Un=(U7x#P;}z94(n)Lhb02t#XBg(p
z`u$?6@lxT^yN{+jO^=&0cSGp&O!Jg*ht<pcf9I_^bNh%?@p~0}@3_o7X;FjEtuAxR
zS)cD}kalu^?7hU=%&hL+OyjlNrQeIB*3aX)_iIvf_KQiHD(h{IZ&dl@as2p)auMFe
z^#R_@EFuh>w?$O2@u4Qd$u{xw+OUMj#h?I8kqius3=#|tyirNT>{l5Zj7oT_ErB$I
wKe;Vln`v_R<jwK6n(HE<$+x(qGAFfIuOc@mz?+o~WCAx3J^`k3rWg<p06U~riU0rr

delta 1026
zcmV+d1pWK`y#blP0k9rbfBCJiOk8KZ8fyap0Ph9>022TJ0C#V4WG`)HWNBe9ZDDjW
zE^~Hgl~ucLR6z{w`3h@kXD8#=*hT~jBt%086m$^@0TFf)i3sBBIdgdlfsmNuj`#R=
z>}%h>|M2tsEBbWt@%ruYaJu6@c64!gbv%E2xIEoGfA)BvJG#C(e><F?T^$b>r@O;(
z_wd1;``4c?37&`R)7_h!n-BL+PHt~+`>pol$IBBLW1PTZ_j}+6cZlv^;(_z}?bX%k
z?ykg?Jlky;(tJF=TPcueGluzxvzs@NwsU^EdpgKj23-x>Z-OEf{k%5q&uhP-zwYlo
zUv_k|Q8~H%3!`}bf9mWa{(}*Xwq<*P_-{5M-yWZ6gSW?%9|T|0dx*wOYdXCm@#tL6
zZ7<4QIFuwt&zK3wtece)vr5}nB=H!1q-oo`SC6Pk@aa$`403i?FNCPJXU|D{p57xT
z9Bg<WmJTekr~1Nl<r1O26f%S`O&@)Z5Ckyc&caD^M%U80e=wIWZ~><ppy)o}%%i&b
zu(k(1^@SjE&GHQqAZ8O;CrGtr6BN=_7w?He3WbFAm}cC9`^?G2_QQj1MN?3hT199p
z?rxbt)L_kXwo(WVNM|%bP7a5^m^V%B;wq%Fnx)BYf{ukTxkTd;O6q;GaFY`Bxau3j
zwB~6@Iwqmaf0i)`jSOoF4vQUu(ok!GBr0XZ+8DV>*#Hb_UeQY|Xu5UdDCkqVX9?A`
z#&D&~9&XZ<p#dQRmtH!#IgnJa=dzX)KHeoF8>5C9x`=^l1UF9ZoXI4i%|eM;Hvq3{
zO~(up^Iqn7!4tZ{Hc2Y+@?rh&)p#||FU~LiYgu`Ue{ajWgg=&bf#0vcE$hPn&FJ-Z
z{%2V;88xrLRI%zMW6~qy)tq5oO-J#X3n6wx!z2=zdba{e&a5>bhSg<(yJLq^y0P-M
zh!!%@SVWV_MyhB$%S1Gl9yMF}ntCQ-n3Q^BlU`L!>Il8^E{!|F=p0?Mh^x9!69m?!
zV<(k?f52l=8rg>=ub-o*ZC?qPX|e!Q?lW>FEJTzlIJ80Hwn`<-Xp<+UF0*PDqjM?M
znmB3B2*mE73#LPbOh8wIn}FP4K?tvI1HKZ8s*Ncln@iGItF1VYShLSL1EP#Xe(j;A
zzzy+4NT#l#o<M37$OE=H*T<7bpyPWHba$+q8IiNHwhs=o`KI$;slyjGqJAId`}jY?
z^%amBv#nQT1`heHuS{HLy&7u+008d>lOJ9mD{WzPGA?s=X9@ry000000096P008$4
wn}zJt0f6K|$w2_r0RZ<5n}zJtlWATn0<c(<mR>yq%UP4vULgh_T>t<80Q;NiUH||9

diff --git a/tests/data/embedded.odt b/tests/data/embedded.odt
index 62bf8cc7ccae13d1e2b16ba2f478d33ebed76e0e..c5fffc8951c672d3dd257b0fcc6324693d048823 100644
GIT binary patch
delta 1137
zcmey}$khFxadJVT)a0Oq@X4#<MJCtRb4{KUFELr5o@KIhqVME=@k*1W5=18NO;DNq
zAU<yLw0MolZ|b-v|4)zri|g0&OfE{4*!-h%C*$VB+-v>onHd;37<hK9^1J?5c#j_w
z1494{1A`y~kj_jlDJ@DZ)-O&iDJ{?|sB8@i%)V_PQ1^Yk#h*tl%lslGav1wtO<VeM
zcu((|ZrGF*pR;w-l9zs&XK&Qcf1|S2n(JzF&fVJkcgugNWM|7TD^{OArqQ*i`lP5t
zca=c>?DKm2&s?tG)#2V?W!`!vby~%}x%<7_6gbMRnlx>ga`EXhhf{O6==8SfED35~
zB*C-z#mcH%fBCHX#7xr)b$|HUyke>@5!n%0G;yE5{v_vsigi7wADxf$ykfB9uC!+m
z|3mlhy}wuRUUOQdv+wPOmyDIy%6>#tB&i2KKBc@^-K;x3fHT(QLVXsG^akM&$K*ZD
zQjsD}t_${>WPGcCka|PSd{*G+Hfia$w3-Knx_4p|-}x(7h))SWGi}-9k4KwN9Njk6
z+K$iWUF?+H9bBfe|Gr&PbYwf(o-=7*?Vc^p@u%w4bhUq$c6j;fOtJdtWYzT8E9?9s
z7ug^E3qv>WxOXq<+}{PcMT&FlE!+B9*PeLKG<(y$i`FZ<&uSVTXpi~HwAt~HhtEll
zw!_Tk;Y}XzRCeu~_e1FWik`KB#%m%ssL$|AWO{B8yp1c*#_@TTyvR#FDTDbvYKu4Y
zN1T!|O`N?qF8<(|sPu0UTb>`iE*+sHXce)*O<iQopRkiMeoOwc^f0ShIIx{QnpMAZ
z{v6)lSJ&q**my;Cjdao){@e#%;u(fHvwpvrYP?jq^zNhSPSfM2%-s<BJkvZS++p=H
z|KE9Q&fGpCRs3GX-a9TcPg>OAbF0hTa@Oa&8l;`vAA2vcHZ!YxH`93ScIo#bsrB=C
z?){q7oc&^wrpkJo;~P~zc^p6fp<IM_aeaU{^TvR3?#*S1{j8fsGp!gmv!?%HoXF-o
zxhzp+vwzk^{>j318jK8+AI1w$_OCOZ99z%F7!Kyu*9%PkSt9~W_<W4LU=i&^!O70`
z8jPpFynXRplfTtTP3EoTV`5;OygET{@&+LHK|IUk`L$e37C@m|52hl<$udA0kV2r*
zOsg0t->NeM>v_O9S+-VX@~Q?UCJCm==Ncp@XVmdcwyu$4ddWQbF1LARfHxzPJ+lao
z?4ttAKp>#du%&TwFqX{3#h?IIz{nuM(7+p&RLp*rvB9W>r`i%oL-`;pL>MLpO7Vb|
zf(e1J$$~XXll$wHxLXn#7?ShzN>cMmCV#5e6ZoITz>u4mmzkDYT%uQ$k~aB3y%vvU
z22e1yBvG#-H)rztYAqhmETBLpP^hvXb+SQ&7UQ(Z(G8YdYK068#U+(Fsl}5YHi)p<
ISAlE;0Frvu)Bpeg

delta 1414
zcma)6Yc$k(7@q&%xQ?A9X)rF$kTGP&xDA`+HcMD!jmwbhxC|3v-Db>0orJ>pp_<A`
zSelNFhKyRp=2D?Fva4-Vv4vcwi|Ayr)7f)6`*EKy?|a_&eV+5YU!KxUXsrMSUaUZ|
zHa!ysjPfyJWu(9l6i06d3P?@9od=CfCR6O(tf}&9L!sD{Y1TA%8&?|#vWEkO>S0H<
z%*aZp4)RUK+pBla1Z#|4p=moCmy}XD1pj3z<EdNf@kOdj_X-YOdFl2ozv%^-VWE8&
z8y{DqX=rFT_q2SI>nI)Cn0ueIx5e}U^U`_}XVR$_JwI3eoPU<T=6-r+B&pM()^F`&
zrlX&s?9d?+N%_}%V@xNfJ<j}%*0Andw_XR2%rxEEzu(L}$LIM$Znj${rw8?LefpiG
zmZzC2wI3VL%H=t3b|0fI?nsdEC-*pqXBTJ9&vm+1H;%TA{$in3H#<MWUR|`l9XfOM
z=FnNbY1nRmdXdbC|9)*TUMAb;ZnFE)M&J6DV56b=S86f2>z@^0L@uj(Pd7Xwvb{tJ
zW%rY`Us){dpEAi#)!!vf(WVU(lhCrh#=oS#W8ukhtBJ>~br^5UC)3AuB{=DDhrO_C
ze4+d0k!oS-N40aSe|DhHm4)DJyp0M`fmcjAr#|)XIv*+t<R{nKwtvH@wxGg30f;tw
zD={3$*j*FfGv;U^aR__dk83?+>&`}0A1?>qbbX1QrmFE&O}CEZ@PiinUDrvb69a6u
zSxvmEZ*NzathKrK9K*XV<cBluxte`(SE(dA$Qn5i<jJgPyb!2>&4?9E6{Al4F4U9y
zUWBpVg>U6&d3Wd)YWqjv>THm>Xa24)u*M1p0=&zNi1pz@Oq<t}C_*JG2W_R?)l8^&
z9F9m|+^IF9sdnixXN6T+)uylyX`$2bp<>4y#bs<wg@(t-)Z{jN(QC&ekmy^}B|@l7
zT{V$ntT<<(RK;qpcPJ>w5@LmVD{2h9YV+XBb^i2k6E)9xo%~>Nx|=>tY+1T#KOe(g
z<2HpBtq-19Iz8hwqDHLvpz%|QqNwoNhPue*`!-!Klt?Y&$O6mAXP?+r`Xq)RTE%=O
zw=Y#pjds>m4&3*~3sE<aZ$_jOp4<Dx7vpB5nz6VRw~x(R?wGW@{!xi9-02+dG*xyX
zjDPsl^~w(A`v%SDPnFC~#FEVt_Zpn)Z>;a76%3}#UiVRzxJ=g<Sp^AKw`%l0dL?OT
zDC~;G2VGmbd>HS!;}CRDYZ%{%DLI-};L%0zQIx`}LWHHJC!D5;)d(4)E0Hkf($N6@
z^Fec%lZov9qub3JN*oFstI9qJBdi8#o@>WrV6U;AtmPX6*Dk(!>%oc6Da)FO5vfe*
zf1qKk>IW%l7`LP+M}NLqGk^EpC;D*b^yci+YiECNWtH%RZru_E1VW~SK!6v}UXTN6
zfz~{vV3q<7KnDd%$>5}XVhI_4nS#3zMbH$W5}%S9oyklmRp^RqqdAJ=z{I~Hfs&la
zLW=bh>>zO~ORz-%W5g7=3jz;$1a*WQ>?AfbGdGP1Ci97qFEFR;0Zcv-?nMDbq&+a^
zX$1b)jqMl8S0pnK2>+zm%pcR486+!t%#i<Q>VQoS5e|t2e?tZU;_Ax3K*JT0Adq9H
zf&Hrfr5T6>FFBqtA_|nrPhIi|Ff~emH3L<7SfIy6!{t%({Wd^?P@t3Zug+i;$l%(6
z6}jYkl;AQRm~jZOV>IZ=!vPB(4oU-lJOj|g(^Z*|m%q=<j0T}ROL#326!Q#$7GDRl
p1(tjVbblHGk&&63!pyMDVW)s`E)ky01yH^Y$mXM!u5!NE`v)G2TnhjI

diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index 64e679f..796d2f1 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -73,13 +73,13 @@ class TestParameterInjection(unittest.TestCase):
 
 
 class TestUnsupportedEmbeddedFiles(unittest.TestCase):
-    def test_odt_with_svg(self):
+    def test_odt_with_py(self):
         shutil.copy('./tests/data/embedded.odt', './tests/data/clean.odt')
         p = office.LibreOfficeParser('./tests/data/clean.odt')
         self.assertFalse(p.remove_all())
         os.remove('./tests/data/clean.odt')
 
-    def test_docx_with_svg(self):
+    def test_docx_with_py(self):
         shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx')
         p = office.MSOfficeParser('./tests/data/clean.docx')
         self.assertFalse(p.remove_all())
@@ -862,3 +862,27 @@ class TestCleaning(unittest.TestCase):
         os.remove('./tests/data/dirty.tar.xz')
         os.remove('./tests/data/dirty.cleaned.tar.xz')
         os.remove('./tests/data/dirty.cleaned.cleaned.tar.xz')
+
+    def test_svg(self):
+        shutil.copy('./tests/data/dirty.svg', './tests/data/clean.svg')
+        p = images.SVGParser('./tests/data/clean.svg')
+
+        meta = p.get_meta()
+        self.assertEqual(meta['WorkCreatorAgentTitle'], 'GNOME Design Team')
+        self.assertEqual(meta['WorkSubject'], ['mat2', 'logo', 'metadata'])
+        self.assertEqual(meta['ID'], 'svg11300')
+        self.assertEqual(meta['Output_extension'],
+                         'org.inkscape.output.svg.inkscape')
+
+        ret = p.remove_all()
+        self.assertTrue(ret)
+
+        p = images.SVGParser('./tests/data/clean.cleaned.svg')
+        self.assertEqual(p.get_meta(), {})
+        self.assertTrue(p.remove_all())
+
+        os.remove('./tests/data/clean.svg')
+        os.remove('./tests/data/clean.cleaned.svg')
+        os.remove('./tests/data/clean.cleaned.cleaned.svg')
+
+
-- 
GitLab