summaryrefslogtreecommitdiffstats
path: root/share/extensions/tests/data/svg
diff options
context:
space:
mode:
Diffstat (limited to 'share/extensions/tests/data/svg')
-rw-r--r--share/extensions/tests/data/svg/colors.svg33
-rw-r--r--share/extensions/tests/data/svg/complextransform.test.svg70
-rw-r--r--share/extensions/tests/data/svg/css.svg94
-rw-r--r--share/extensions/tests/data/svg/curves.svg72
-rw-r--r--share/extensions/tests/data/svg/dash.svg34
-rw-r--r--share/extensions/tests/data/svg/default-inkscape-SVG.svg37
-rw-r--r--share/extensions/tests/data/svg/default-inkscape-SVG_scoured.svg12
-rw-r--r--share/extensions/tests/data/svg/default-plain-SVG.svg29
-rw-r--r--share/extensions/tests/data/svg/diff.svg281
-rw-r--r--share/extensions/tests/data/svg/edge3d.svg31
-rw-r--r--share/extensions/tests/data/svg/empty.svg13
-rw-r--r--share/extensions/tests/data/svg/font.svg27
-rw-r--r--share/extensions/tests/data/svg/font_layers.svg3
-rw-r--r--share/extensions/tests/data/svg/group_interpolate.svg110
-rw-r--r--share/extensions/tests/data/svg/guides.svg233
-rwxr-xr-xshare/extensions/tests/data/svg/hershey_input.svg1071
-rwxr-xr-xshare/extensions/tests/data/svg/hershey_trivial_input.svg124
-rw-r--r--share/extensions/tests/data/svg/hpgl_multipen.svg43
-rw-r--r--share/extensions/tests/data/svg/images.svg73
-rw-r--r--share/extensions/tests/data/svg/img/green.pngbin0 -> 128 bytes
-rw-r--r--share/extensions/tests/data/svg/inkweb-debug.js367
-rw-r--r--share/extensions/tests/data/svg/inkwebjs-move.svg128
-rw-r--r--share/extensions/tests/data/svg/interp_shapes.svg210
-rw-r--r--share/extensions/tests/data/svg/markers.svg55
-rw-r--r--share/extensions/tests/data/svg/mesh.svg240
-rw-r--r--share/extensions/tests/data/svg/minimal-blank-prepare.svg1
-rw-r--r--share/extensions/tests/data/svg/minimal-blank.svg1
-rw-r--r--share/extensions/tests/data/svg/multilayered-test.svg156
-rw-r--r--share/extensions/tests/data/svg/perspective.svg33
-rw-r--r--share/extensions/tests/data/svg/perspective_groups.svg78
-rw-r--r--share/extensions/tests/data/svg/shapes-clipboard.svg288
-rw-r--r--share/extensions/tests/data/svg/shapes.svg284
-rw-r--r--share/extensions/tests/data/svg/shapes_cmyk.svg302
-rw-r--r--share/extensions/tests/data/svg/simpletransform.test.svg8
-rw-r--r--share/extensions/tests/data/svg/single_box.svg62
-rw-r--r--share/extensions/tests/data/svg/slicer.svg75
-rw-r--r--share/extensions/tests/data/svg/symbol.svg46
-rw-r--r--share/extensions/tests/data/svg/with-lpe.svg30
38 files changed, 4754 insertions, 0 deletions
diff --git a/share/extensions/tests/data/svg/colors.svg b/share/extensions/tests/data/svg/colors.svg
new file mode 100644
index 0000000..5a91107
--- /dev/null
+++ b/share/extensions/tests/data/svg/colors.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="100" width="300" id="color_svg" version="1.1">
+ <defs id="defs6">
+ <linearGradient id="lg1">
+ <stop id="stop849" offset="0" style="stop-color:#729fcf;stop-opacity:1"/>
+ <stop id="stop851" offset="1" style="stop-color:#3465a4;stop-opacity:1"/>
+ </linearGradient>
+ <linearGradient id="lg2">
+ <stop id="stop841" offset="0" style="stop-color:#75507b;stop-opacity:1"/>
+ <stop id="stop843" offset="1" style="stop-color:#cc0000;stop-opacity:1"/>
+ </linearGradient>
+ <linearGradient gradientUnits="userSpaceOnUse" y2="55" x2="235" y1="15" x1="195" id="slg1" xlink:href="#lg2"/>
+ <linearGradient gradientUnits="userSpaceOnUse" y2="15" x2="235" y1="55" x1="195" id="slg2" xlink:href="#lg1"/>
+ <linearGradient gradientUnits="userSpaceOnUse" y2="15" x2="265" y1="55" x1="195" id="slg3" xlink:href="#lg1"/>
+ <style id="style0"><![CDATA[
+#r2 {
+ fill:#3465a4;
+ stroke:#729fcf;
+ stop-color:blue;
+}
+ ]]></style>
+ </defs>
+ <!--Regular shape with style properties-->
+ <rect y="15" x="10" height="40" width="40" id="r1" style="opacity:1;fill:#75507b;fill-opacity:0.9;stroke:#5c3566;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.5;paint-order:markers fill stroke;stop-color:red"/>
+ <!--Regular shape with css styles-->
+ <rect y="15" x="60" height="40" width="40" id="r2" style="opacity:1;fill-opacity:1;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers fill stroke"/>
+ <!--Regular shape with element attributes-->
+ <rect y="15" x="110" height="40" width="40" id="r3" fill="#cc0000" fill-opacity="0.9" stroke="#2e3436" stroke-opacity="0.5" style="opacity:0.81;stroke:#2e3436;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;paint-order:markers fill stroke;stop-color:red"/>
+ <!--Regular shape with gradients-->
+ <rect y="15" x="160" height="40" width="40" id="r4" style="opacity:1;fill:url(#slg1);fill-opacity:1;stroke:url(#slg2);stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.5;paint-order:markers fill stroke;stop-color:#000000"/>
+ <!--A copy of the gradient to test url hygiene-->
+ <rect y="15" x="210" height="40" width="40" id="r5" style="opacity:1;fill:url(#slg1);fill-opacity:1;stroke:url(#slg3);stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.5;paint-order:markers fill stroke;stop-color:#000000"/>
+</svg>
diff --git a/share/extensions/tests/data/svg/complextransform.test.svg b/share/extensions/tests/data/svg/complextransform.test.svg
new file mode 100644
index 0000000..c992c19
--- /dev/null
+++ b/share/extensions/tests/data/svg/complextransform.test.svg
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="mydoc"
+ version="1.1">
+ <defs>
+ <path d="M 0 0 L 10 10 Z" id="path1"/>
+ <pattern patternTransform="scale(2.0, 1.0)"></pattern>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.9494022"
+ inkscape:cx="337.21073"
+ inkscape:cy="650.51398"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="3060"
+ inkscape:window-height="1685"
+ inkscape:window-x="140"
+ inkscape:window-y="41"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g transform="matrix(1.4498514,0,0,1.3641667,-107.03035,-167.3624)" style="fill:#fff;stroke:#d88;" id="A" inkscape:groupmode='layer'>
+ <g transform="rotate(-45.759928,361.64932,382.80575)" style="fill:#eee;joker:url(#path1)" id="B">
+ <g transform="matrix(1,0,0.50642107,1,-193.8609,0)" style="fill:#ddd;" id="C">
+ <path id="D" fill="#C00" opacity="0.2" transform="translate(30,10)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <rect transform="rotate(16.097889)"
+ y="200" x="200" height="100" width="100"
+ style="fill:#0000ff;stroke-width:1px;" id="E"/>
+ <circle cx="100" cy="100" r="50" style="stroke:#f00;" id="F"/>
+ <use xlink:href="#path1" id="G"/>
+ <line x1="0" y1="80" x2="100" y2="20" id="H" />
+ <polyline points="0,100 50,25 50,75 100,0" id="I" />
+ <polygon points="0,100 50,25 50,75 100,0" id="J" />
+ </g>
+ </g>
+ <g id="K" inkscape:label="Key">
+ <g id="L" inkscape:label="Elm">
+ <line x1="5" y1="5" x2="5.5" y2="10" id="M" transform="translate(10, 10);" inkscape:label="Mine" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/css.svg b/share/extensions/tests/data/svg/css.svg
new file mode 100644
index 0000000..9ba3bfe
--- /dev/null
+++ b/share/extensions/tests/data/svg/css.svg
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg0"
+ version="1.1"
+ viewBox="0 0 140 140"
+ height="140mm"
+ width="140mm">
+ <defs
+ id="defs2">
+ <style id="style1">
+// Not in a CDATA for testing.
+#layer1 {
+ stroke: yellow;
+}
+circle {
+ fill: red;
+}
+.two {
+ fill: green;
+}
+#rect3.three {
+ fill: cyan;
+}
+#layer1 .four {
+ fill: grey;
+}
+#rect1 {
+ fill: blue;
+}
+#circle1, #circle2, .two {
+ font: Homie;
+}
+ </style>
+ <style id="style2"></style>
+ <style id="style3"><![CDATA[
+#layer1 {
+ stroke-width: 2px;
+}
+.rule {
+}
+ ]]></style>
+ </defs>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <rect
+ y="0"
+ x="0"
+ class="one"
+ height="70"
+ width="70"
+ id="rect1"/>
+ <rect
+ id="rect2"
+ class="two"
+ width="70"
+ height="70"
+ x="70"
+ y="0" />
+ <rect
+ y="70"
+ x="0"
+ class="three"
+ height="70"
+ width="70"
+ id="rect3"/>
+ <rect
+ id="rect4"
+ class="four"
+ width="70"
+ height="70"
+ style="stroke: red;"
+ x="70"
+ y="70" />
+ <circle
+ r="35"
+ cy="70"
+ cx="70"
+ id="circle1"/>
+ <circle
+ r="10"
+ cy="20"
+ cx="20"
+ id="circle2"/>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/curves.svg b/share/extensions/tests/data/svg/curves.svg
new file mode 100644
index 0000000..6dc5ad8
--- /dev/null
+++ b/share/extensions/tests/data/svg/curves.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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"
+ width="1000"
+ height="1000"
+ viewBox="0 0 1000 1000"
+ version="1.1"
+ id="svg8">
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ id="base"
+ showgrid="true"
+ inkscape:snap-text-baseline="true"
+ inkscape:zoom="0.73528362"
+ inkscape:cx="-359.63313"
+ inkscape:cy="481.16986"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="layer0">
+ <inkscape:grid
+ type="xygrid"
+ id="grid27"
+ spacingx="10"
+ spacingy="10"
+ empspacing="10"
+ color="#8080ff"
+ opacity="0.25098039"
+ empcolor="#0000ff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <g
+ inkscape:groupmode="layer"
+ id="layer0"
+ inkscape:label="Curves"
+ style="display:inline">
+ <path
+ inkscape:connector-curvature="0"
+ id="quad"
+ d="m 100,502.88647 q 200,-250 400,0 200,250 400,0"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10" />
+ <path
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:7.35712767;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
+ d="m 417.79599,626.87967 a 128.83041,128.83041 0 0 1 -128.83041,128.83041 128.83041,128.83041 0 0 1 -128.83041,-128.83041 128.83041,128.83041 0 0 1 128.83041,-128.83041 128.83041,128.83041 0 0 1 128.83041,128.83041 z"
+ id="arc"
+ inkscape:connector-curvature="0" />
+ <path
+ inkscape:connector-curvature="0"
+ id="curve"
+ d="m 833.96193,373.12033 c 0,71.15107 -57.67934,128.83041 -128.83041,128.83041 -71.15107,0 -128.83041,-57.67934 -128.83041,-128.83041 0,-71.15107 57.67934,-128.83041 128.83041,-128.83041 71.15107,0 128.83041,57.67934 128.83041,128.83041 z"
+ style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;stroke:#000000;stroke-width:7.35712767;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:stroke markers fill"
+ sodipodi:nodetypes="zzzzz" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/dash.svg b/share/extensions/tests/data/svg/dash.svg
new file mode 100644
index 0000000..997ba7d
--- /dev/null
+++ b/share/extensions/tests/data/svg/dash.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 210 297"
+ height="297mm"
+ width="210mm">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <path
+ id="dashme"
+ d="M 39.817243,184.34654 145.92741,65.030315"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.26499999;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2.1199999,0.26499999;stroke-dashoffset:0" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/default-inkscape-SVG.svg b/share/extensions/tests/data/svg/default-inkscape-SVG.svg
new file mode 100644
index 0000000..259e13c
--- /dev/null
+++ b/share/extensions/tests/data/svg/default-inkscape-SVG.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<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"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:cc="http://web.resource.org/cc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ width="793.7007874"
+ height="1122.519685">
+ <defs />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="375"
+ inkscape:cy="520"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1" />
+ <metadata>
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" />
+</svg>
diff --git a/share/extensions/tests/data/svg/default-inkscape-SVG_scoured.svg b/share/extensions/tests/data/svg/default-inkscape-SVG_scoured.svg
new file mode 100644
index 0000000..f46f0b3
--- /dev/null
+++ b/share/extensions/tests/data/svg/default-inkscape-SVG_scoured.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg width="793.7" height="1122.5" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <metadata>
+ <rdf:RDF>
+ <cc:Work rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+</svg>
diff --git a/share/extensions/tests/data/svg/default-plain-SVG.svg b/share/extensions/tests/data/svg/default-plain-SVG.svg
new file mode 100644
index 0000000..9c08847
--- /dev/null
+++ b/share/extensions/tests/data/svg/default-plain-SVG.svg
@@ -0,0 +1,29 @@
+<?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"
+ version="1.1"
+ width="793.7007874"
+ height="1122.519685">
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1" />
+</svg>
diff --git a/share/extensions/tests/data/svg/diff.svg b/share/extensions/tests/data/svg/diff.svg
new file mode 100644
index 0000000..cf7f6f3
--- /dev/null
+++ b/share/extensions/tests/data/svg/diff.svg
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1000"
+ height="1000"
+ viewBox="0 0 1000 1000"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
+ sodipodi:docname="test.svg">
+ <defs
+ id="defs33">
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path859"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ id="base"
+ showgrid="true"
+ inkscape:snap-text-baseline="true"
+ inkscape:zoom="0.6675088"
+ inkscape:cx="202.7349"
+ inkscape:cy="481.16986"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="webslicer-layer">
+ <inkscape:grid
+ type="xygrid"
+ id="grid27"
+ spacingx="10"
+ spacingy="10"
+ empspacing="10"
+ color="#8080ff"
+ opacity="0.25098039"
+ empcolor="#0000ff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <g
+ inkscape:groupmode="layer"
+ id="webslicer-layer"
+ inkscape:label="Slide3"
+ style="display:inline">
+ <rect
+ height="201.49811"
+ width="248.69112"
+ y="353.92661"
+ x="651.3089"
+ id="slicerect1"
+ style="opacity:0.5;fill:#ff0000;stroke-width:1.11927199">
+ <desc
+ id="desc51">format: png
+dpi: 96
+layout-disposition: bg-el-norepeat
+layout-position-anchor: tl</desc>
+ </rect>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Slide2"
+ style="display:inline">
+ <circle
+ style="display:inline;fill:#000080;stroke:none"
+ id="c1"
+ cx="150"
+ cy="450"
+ r="50"
+ inkscape:label="#path3736" />
+ <ellipse
+ style="display:inline;fill:none;stroke:#ff0000;stroke-width:16"
+ id="c2"
+ cx="400"
+ cy="450"
+ rx="100"
+ ry="50"
+ inkscape:label="#path3738" />
+ <path
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="c3"
+ sodipodi:type="arc"
+ sodipodi:cx="700"
+ sodipodi:cy="450"
+ sodipodi:rx="100"
+ sodipodi:ry="50"
+ sodipodi:start="0.59013865"
+ sodipodi:end="5.6484511"
+ d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z"
+ inkscape:label="#path3740" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10;marker-start:url(#Arrow2Lstart)"
+ d="M 100,600 200,700 300,600 400,700"
+ id="p1"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3746" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10"
+ d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100"
+ id="p2"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3748" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:10"
+ id="s1"
+ sodipodi:sides="5"
+ sodipodi:cx="189.03001"
+ sodipodi:cy="847.93945"
+ sodipodi:r1="69.364868"
+ sodipodi:r2="34.682434"
+ sodipodi:arg1="0.63598373"
+ sodipodi:arg2="1.2643023"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#s1"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137"
+ id="u1"
+ transform="translate(200,2.9962152)"
+ width="100%"
+ height="100%"
+ inkscape:label="#use3808" />
+ </g>
+ <g
+ inkscape:label="Slide1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="100"
+ y="100"
+ id="t1"
+ inkscape:label="#text12"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ x="100"
+ y="100">*Hello World*</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="t4"
+ style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)"
+ inkscape:label="#flowRoot14"><flowRegion
+ id="flowRegion16"><rect
+ id="rect18"
+ width="264.5675"
+ height="262.16187"
+ x="105.71429"
+ y="219.66254" /></flowRegion><flowPara
+ id="flowPara20"
+ style="font-size:55.43307114px">flaw tux whatch wryps</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="200"
+ y="100"
+ id="t2"
+ inkscape:label="#text3727"><tspan
+ sodipodi:role="line"
+ id="tspan3725"
+ x="200"
+ y="100"
+ style="font-size:14.66666698px">*PER</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="300"
+ y="100"
+ id="t3"
+ inkscape:label="#text3735"><tspan
+ sodipodi:role="line"
+ id="tspan3733"
+ x="300"
+ y="100"
+ style="font-size:14.66666698px">Multi*</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="118.33334"
+ id="tspan3737"
+ style="font-size:14.66666698px">text</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="136.66667"
+ id="tspan3739"
+ style="font-size:14.66666698px">FOO</tspan></text>
+ <g
+ id="t5"
+ transform="translate(445.71038,-129.64807)"
+ inkscape:label="#g3772">
+ <text
+ id="text3762"
+ y="229.64807"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="229.64807"
+ x="54.289616"
+ id="tspan3760"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">Grouped</tspan></text>
+ <text
+ id="text3766"
+ y="259.64807"
+ x="54.289619"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="259.64807"
+ x="54.289619"
+ z="f"
+ id="tspan3764"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">text</tspan></text>
+ </g>
+ <rect
+ style="fill:#000080;stroke:none"
+ id="r1"
+ width="100"
+ height="110"
+ x="100"
+ y="200"
+ inkscape:label="#rect3732" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:16"
+ id="r2"
+ width="200"
+ height="100"
+ x="300"
+ y="200"
+ inkscape:label="#rect3734" />
+ <rect
+ style="fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="r3"
+ width="200"
+ height="100"
+ x="600"
+ y="200"
+ ry="38.950798"
+ rx="44.943226"
+ inkscape:label="#rect3744" />
+ <rect></rect>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/edge3d.svg b/share/extensions/tests/data/svg/edge3d.svg
new file mode 100644
index 0000000..cfb8570
--- /dev/null
+++ b/share/extensions/tests/data/svg/edge3d.svg
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg1956"
+ version="1.1"
+ viewBox="0 0 210 297"
+ height="297mm"
+ width="210mm">
+ <defs
+ id="defs1950" />
+ <metadata
+ id="metadata1953">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path
+ id="edgeme"
+ d="m 32.902386,76.94136 h 55.408947 v 38.8335 H 32.902386 Z"
+ style="fill:#870000;fill-opacity:1;stroke:none;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+</svg>
diff --git a/share/extensions/tests/data/svg/empty.svg b/share/extensions/tests/data/svg/empty.svg
new file mode 100644
index 0000000..d6c680b
--- /dev/null
+++ b/share/extensions/tests/data/svg/empty.svg
@@ -0,0 +1,13 @@
+<?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"
+ version="1.1"
+ width="793.7007874"
+ height="1122.519685">
+</svg>
diff --git a/share/extensions/tests/data/svg/font.svg b/share/extensions/tests/data/svg/font.svg
new file mode 100644
index 0000000..cc2b68f
--- /dev/null
+++ b/share/extensions/tests/data/svg/font.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns:svg="http://www.w3.org/2000/svg">
+ <defs>
+ <font id="test_font" horiz-adv-x="1200">
+ <font-face units-per-em="1200" ascent="960" descent="-240"/>
+ <missing-glyph horiz-adv-x="500"/>
+ <glyph/>
+ <glyph unicode="A" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z"/>
+ <glyph unicode="B" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z"/>
+ <glyph unicode="C" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z"/>
+ <glyph unicode="D" d="M200 400h900v300h-900v-300z"/>
+ <glyph unicode="E" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z"/>
+ <glyph unicode="F" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z"/>
+ <glyph unicode="G" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z"/>
+ <glyph unicode="H" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z"/>
+ <glyph unicode="I" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z"/>
+ <glyph unicode="J" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z"/>
+ </font>
+ </defs>
+</svg>
diff --git a/share/extensions/tests/data/svg/font_layers.svg b/share/extensions/tests/data/svg/font_layers.svg
new file mode 100644
index 0000000..251e025
--- /dev/null
+++ b/share/extensions/tests/data/svg/font_layers.svg
@@ -0,0 +1,3 @@
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:svg="http://www.w3.org/2000/svg" width="1200">
+<g inkscape:label="GlyphLayer-A" inkscape:groupmode="layer"><path d="M 100 700 L 100 500 L 359 500 l -183 -183 l 141 -141 l 183 183 L 500 100 L 700 100 L 700 359 l 183 -183 l 141 141 l -183 183 L 1100 500 L 1100 700 L 841 700 l 183 183 l -141 141 l -183 -183 L 700 1100 L 500 1100 L 500 841 l -183 183 l -141 -141 l 183 -183 L 100 700 z"/></g><g inkscape:label="GlyphLayer-B" inkscape:groupmode="layer" style="display:none"><path d="M 0 800 L 0 500 L 400 500 L 400 100 L 700 100 L 700 500 L 1100 500 L 1100 800 L 700 800 L 700 1200 L 400 1200 L 400 800 L 0 800 z"/></g><g inkscape:label="GlyphLayer-C" inkscape:groupmode="layer" style="display:none"><path d="M 100 700 l 100 -100 L 313 600 q 0 -47 5 -100 L 100 500 l 100 -100 L 335 400 q 37 -167 112 -257 q 117 -141 297 -141 q 242 0 354 189 q 60 103 66 209 L 983 400 q 0 -55 -25.5 -99 t -63.5 -68 t -75 -36.5 t -67 -12.5 q -24 0 -52.5 10 t -62.5 32 t -65.5 67 t -50.5 107 L 900 400 l -100 100 L 500 500 q -6 46 -6 100 L 900 600 l -100 100 L 500 700 q 9 74 33 132 t 52.5 91 t 62 54.5 t 59 29 t 46.5 7.5 q 29 0 66 -13 t 75 -37 t 63.5 -67.5 t 25.5 -96.5 L 1157 800 q -31 172 -128 278 q -107 117 -274 117 q -205 0 -324 -158 q -36 -46 -69 -131.5 t -45 -205.5 L 100 700 z"/></g></svg>
diff --git a/share/extensions/tests/data/svg/group_interpolate.svg b/share/extensions/tests/data/svg/group_interpolate.svg
new file mode 100644
index 0000000..c3d9f44
--- /dev/null
+++ b/share/extensions/tests/data/svg/group_interpolate.svg
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="110mm"
+ height="10mm"
+ viewBox="0 0 110 10"
+ version="1.1"
+ id="svg8">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1">
+ <g
+ id="g53">
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect10"
+ width="10"
+ height="10"
+ x="-3.5527137e-15"
+ y="0" />
+ <rect
+ y="0"
+ x="10"
+ height="10"
+ width="10"
+ id="rect12"
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986" />
+ <rect
+ y="0"
+ x="20"
+ height="10"
+ width="10"
+ id="rect14"
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986" />
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect16"
+ width="10"
+ height="10"
+ x="30"
+ y="0" />
+ <rect
+ y="0"
+ x="40"
+ height="10"
+ width="10"
+ id="rect18"
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986" />
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect20"
+ width="10"
+ height="10"
+ x="50"
+ y="0" />
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect22"
+ width="10"
+ height="10"
+ x="60"
+ y="0" />
+ <rect
+ y="0"
+ x="70"
+ height="10"
+ width="10"
+ id="rect24"
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986" />
+ <rect
+ y="0"
+ x="80"
+ height="10"
+ width="10"
+ id="rect26"
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986" />
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect28"
+ width="10"
+ height="10"
+ x="90"
+ y="0" />
+ <rect
+ style="fill:#0000ff;fill-rule:evenodd;stroke-width:0.0593986"
+ id="rect30"
+ width="10"
+ height="10"
+ x="100"
+ y="0" />
+ </g>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/guides.svg b/share/extensions/tests/data/svg/guides.svg
new file mode 100644
index 0000000..f67b40d
--- /dev/null
+++ b/share/extensions/tests/data/svg/guides.svg
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="ref_guides.svg"
+ inkscape:version="0.0"
+ inkscape:export-ydpi="96"
+ inkscape:export-xdpi="96"
+ inkscape:export-filename="{tempdir}/guides.png"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 1000 1000"
+ height="1000"
+ width="1000">
+ <style
+ id="style872"></style>
+ <metadata
+ id="metadata41">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs33" />
+ <sodipodi:namedview
+ inkscape:bbox-nodes="true"
+ inkscape:bbox-paths="true"
+ inkscape:snap-page="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-global="true"
+ inkscape:guide-bbox="true"
+ showguides="true"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer2"
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="0"
+ inkscape:cy="465.64169"
+ inkscape:cx="544.90051"
+ inkscape:zoom="0.77183614"
+ inkscape:snap-text-baseline="true"
+ showgrid="true"
+ id="base"
+ inkscape:window-height="1017"
+ inkscape:window-width="1920"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff">
+ <inkscape:grid
+ originy="0"
+ originx="0"
+ empopacity="0.25098039"
+ empcolor="#ff0000"
+ opacity="0.25098039"
+ color="#8080ff"
+ empspacing="2"
+ spacingy="100"
+ spacingx="100"
+ id="grid27"
+ type="xygrid" />
+ <sodipodi:guide
+ id="guide880"
+ orientation="1,0"
+ position="46.936577,700" />
+ <sodipodi:guide
+ id="guide882"
+ orientation="0,-1"
+ position="46.936577,951.0227" />
+ <sodipodi:guide
+ id="guide884"
+ orientation="1,0"
+ position="953.01659,951.0227" />
+ <sodipodi:guide
+ id="guide886"
+ orientation="0,-1"
+ position="953.01659,49.024128" />
+ <sodipodi:guide
+ id="guide888"
+ orientation="0.70710678,-0.70710678"
+ position="46.936577,49.024128" />
+ <sodipodi:guide
+ id="guide890"
+ orientation="-0.70710678,-0.70710678"
+ position="953.01659,49.024128" />
+ </sodipodi:namedview>
+ <g
+ style="display:inline"
+ inkscape:label="Slide3"
+ id="webslicer-layer"
+ inkscape:groupmode="layer" />
+ <g
+ style="display:inline"
+ inkscape:label="Slide2"
+ id="layer2"
+ inkscape:groupmode="layer">
+ <use
+ transform="matrix(1.8978616,0,0,1.8909129,-450.29818,-444.94362)"
+ inkscape:label="#use3808"
+ height="100%"
+ width="100%"
+ id="u1"
+ inkscape:transform-center-y="-0.31067244"
+ inkscape:transform-center-x="12.274064"
+ xlink:href="#s1"
+ y="0"
+ x="0"
+ style="display:inline;stroke-width:0.527876" />
+ <path
+ inkscape:transform-center-y="-0.16430137"
+ inkscape:transform-center-x="6.4673011"
+ d="M 558.40487,540.93476 513.066,532.8003 480.66172,565.53783 474.38757,519.90431 433.23885,499.20247 474.70009,479.13386 481.67306,433.60189 513.57167,466.83233 559.02991,459.39386 537.2831,500.00001 Z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.2643023"
+ sodipodi:arg1="0.63598373"
+ sodipodi:r2="34.682434"
+ sodipodi:r1="69.364868"
+ sodipodi:cy="499.73415"
+ sodipodi:cx="502.60169"
+ sodipodi:sides="5"
+ id="s1"
+ style="display:inline;fill:#fcaf3e;stroke:#a40000;stroke-width:10"
+ sodipodi:type="star" />
+ <rect
+ ry="2.1866901"
+ y="100"
+ x="300"
+ height="100"
+ width="100"
+ id="rect900"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect902"
+ width="100"
+ height="100"
+ x="500"
+ y="100"
+ ry="2.1866901" />
+ <rect
+ ry="2.1866901"
+ y="100"
+ x="697.91248"
+ height="100"
+ width="100"
+ id="rect904"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect906"
+ width="100"
+ height="100"
+ x="700"
+ y="800"
+ ry="2.1866901" />
+ <rect
+ ry="2.1866901"
+ y="796"
+ x="504"
+ height="100"
+ width="100"
+ id="rect908"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <rect
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="rect910"
+ width="100"
+ height="100"
+ x="300"
+ y="800"
+ ry="2.1866901" />
+ <circle
+ r="50"
+ cy="350"
+ cx="150"
+ id="path912"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle914"
+ cx="149.5"
+ cy="549.5"
+ r="50" />
+ <circle
+ r="50"
+ cy="749"
+ cx="146.91245"
+ id="circle916"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle918"
+ cx="852"
+ cy="752"
+ r="50" />
+ <circle
+ r="50"
+ cy="554"
+ cx="854"
+ id="circle920"
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:16;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000" />
+ <circle
+ style="vector-effect:none;fill:#fcaf3e;fill-opacity:0.5;stroke:#a40000;stroke-width:32;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;paint-order:stroke fill markers;stop-color:#000000"
+ id="circle922"
+ cx="842"
+ cy="358"
+ r="50" />
+ </g>
+ <g
+ style="display:inline"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Slide1" />
+</svg>
diff --git a/share/extensions/tests/data/svg/hershey_input.svg b/share/extensions/tests/data/svg/hershey_input.svg
new file mode 100755
index 0000000..be62e14
--- /dev/null
+++ b/share/extensions/tests/data/svg/hershey_input.svg
@@ -0,0 +1,1071 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ sodipodi:docname="hershey_input.svg"
+ inkscape:version="1.0alpha2 (e9298ea, 2019-07-05)"
+ version="1.1"
+ id="svg2"
+ viewBox="0 0 2220.1786 1530.4364"
+ height="17.004848in"
+ width="24.668652in">
+ <style
+ id="style1418"></style>
+ <sodipodi:namedview
+ inkscape:document-rotation="0"
+ fit-margin-bottom="0"
+ fit-margin-right="0"
+ fit-margin-left="0"
+ fit-margin-top="0"
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.45932702"
+ inkscape:cx="1188.9042"
+ inkscape:cy="794.44408"
+ inkscape:document-units="px"
+ inkscape:current-layer="svg2"
+ showgrid="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="1005"
+ inkscape:window-x="0"
+ inkscape:window-y="23"
+ inkscape:window-maximized="1"
+ units="in"
+ showguides="false" />
+ <defs
+ id="defs4" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(16.650407,434.42922)"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4136-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(0.56498356,0,0,0.56498356,104.66429,-178.31547)"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion4138-3"><rect
+ id="rect4140-1"
+ width="168.74548"
+ height="238.84306"
+ x="58.688175"
+ y="293.76318"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.25px;line-height:300%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.25px;line-height:300%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ id="flowPara4144-3">This text has both a smaller bounding box, a smaller font size, and a large line spacing. The software must handle unusual cases like this.</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.25px;line-height:300%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ id="flowPara43266">The real problem is that flowing into a text box (flowroot region) is SVG-renderer dependent-- even different web browsers may render flowed text differently. In this particular case, we're dealing with an Inkscape extension which does not have access to information about how the text was flowed before we got to it, so we essentially have to re-flow it from scratch. </flowPara></flowRoot> <text
+ id="text4169-3"
+ y="-0.17828369"
+ x="326.43045"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="-0.17828369"
+ x="326.43045"
+ id="tspan4171-9"
+ sodipodi:role="line">This data,</tspan><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ id="tspan4173-8"
+ y="18.571716"
+ x="326.43045"
+ sodipodi:role="line">is also text.</tspan><tspan
+ id="tspan27231"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="37.321716"
+ x="326.43045"
+ sodipodi:role="line"> </tspan><tspan
+ id="tspan27205"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="56.071716"
+ x="326.43045"
+ sodipodi:role="line">However, it has</tspan><tspan
+ id="tspan27209"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="74.821716"
+ x="326.43045"
+ sodipodi:role="line">many returns</tspan><tspan
+ id="tspan27211"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="93.571716"
+ x="326.43045"
+ sodipodi:role="line">each</tspan><tspan
+ id="tspan27233"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="112.32172"
+ x="326.43045"
+ sodipodi:role="line">on</tspan><tspan
+ id="tspan27235"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="131.07172"
+ x="326.43045"
+ sodipodi:role="line">its</tspan><tspan
+ id="tspan27237"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="149.82172"
+ x="326.43045"
+ sodipodi:role="line">own</tspan><tspan
+ id="tspan27213"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="168.57172"
+ x="326.43045"
+ sodipodi:role="line">line</tspan><tspan
+ id="tspan27215"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="187.32172"
+ x="326.43045"
+ sodipodi:role="line">in order to make</tspan><tspan
+ id="tspan27217"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="206.07172"
+ x="326.43045"
+ sodipodi:role="line">it take up more vertical</tspan><tspan
+ id="tspan27219"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="224.82172"
+ x="326.43045"
+ sodipodi:role="line">space so that we</tspan><tspan
+ id="tspan27221"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="243.57172"
+ x="326.43045"
+ sodipodi:role="line">can see how it handles</tspan><tspan
+ id="tspan27223"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="262.32172"
+ x="326.43045"
+ sodipodi:role="line">weird edge cases</tspan><tspan
+ id="tspan27225"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="281.07172"
+ x="326.43045"
+ sodipodi:role="line">like</tspan><tspan
+ id="tspan27227"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="299.82175"
+ x="326.43045"
+ sodipodi:role="line">this</tspan><tspan
+ id="tspan27229"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="318.57175"
+ x="326.43045"
+ sodipodi:role="line">one.</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot43268"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion43270"><rect
+ style="font-family:sans-serif"
+ id="rect43272"
+ width="215.35278"
+ height="148.35414"
+ x="752.70923"
+ y="410.40579" /></flowRegion><flowPara
+ style="font-size:112.332px;line-height:1.25;font-family:sans-serif"
+ id="flowPara43274"> </flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot69852"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion69854"><rect
+ style="font-family:sans-serif"
+ id="rect69856"
+ width="147.67105"
+ height="138.53676"
+ x="286.20779"
+ y="314.00693" /></flowRegion><flowPara
+ style="font-size:112.332px;line-height:1.25;font-family:sans-serif"
+ id="flowPara69858"> </flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot4136-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="translate(653.45509,-223.95601)"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion4138-9"><rect
+ style="font-family:sans-serif"
+ id="rect4140-6"
+ width="727.76221"
+ height="536.07629"
+ x="58.688175"
+ y="293.76318" /></flowRegion><flowPara
+ id="flowPara43951"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">We are testing an Inkscape extension called Hershey Text 3.0. The purpose of this extension is to take a block of flowed text, and replace it with stroke-based engraving fonts. We've got a number of different single-stroke fonts built in as well, that help to provide some options. However, we need to test that it handles a variety of different formats of text including different input fonts, alignment, flowed and regular text, variations of font size with a given span, returns, non-breaking spaces, transforms, nested groups and so forth. SVG allows text to be formatted in many different ways.</flowPara><flowPara
+ id="flowPara24519"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start" /><flowPara
+ id="flowPara24521"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">This text is in Layer 1.</flowPara></flowRoot> <text
+ id="text4169-3-2"
+ y="37.446014"
+ x="1593.2249"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ id="tspan4173-8-8"
+ y="37.446014"
+ x="1593.2249"
+ sodipodi:role="line">Text, non-flowed,</tspan><tspan
+ id="tspan11633"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="56.196014"
+ x="1593.2249"
+ sodipodi:role="line">align left.</tspan><tspan
+ id="tspan27231-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="74.946014"
+ x="1593.2249"
+ sodipodi:role="line"> </tspan><tspan
+ id="tspan27205-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="93.696014"
+ x="1593.2249"
+ sodipodi:role="line">However, it has</tspan><tspan
+ id="tspan27209-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="112.44601"
+ x="1593.2249"
+ sodipodi:role="line">many returns</tspan><tspan
+ id="tspan27211-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="131.19601"
+ x="1593.2249"
+ sodipodi:role="line">each</tspan><tspan
+ id="tspan27233-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="149.94601"
+ x="1593.2249"
+ sodipodi:role="line">on</tspan><tspan
+ id="tspan27235-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="168.69601"
+ x="1593.2249"
+ sodipodi:role="line">its</tspan><tspan
+ id="tspan27237-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="187.44601"
+ x="1593.2249"
+ sodipodi:role="line">own</tspan><tspan
+ id="tspan27213-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="206.19601"
+ x="1593.2249"
+ sodipodi:role="line">line</tspan><tspan
+ id="tspan27215-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="224.94601"
+ x="1593.2249"
+ sodipodi:role="line">in order to make</tspan><tspan
+ id="tspan27217-6"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="243.69601"
+ x="1593.2249"
+ sodipodi:role="line">it take up more vertical</tspan><tspan
+ id="tspan27219-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="262.44601"
+ x="1593.2249"
+ sodipodi:role="line">space so that we</tspan><tspan
+ id="tspan27221-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="281.19601"
+ x="1593.2249"
+ sodipodi:role="line">can see how it handles</tspan><tspan
+ id="tspan27223-3"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="299.94601"
+ x="1593.2249"
+ sodipodi:role="line">weird edge cases</tspan><tspan
+ id="tspan27225-2"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="318.69601"
+ x="1593.2249"
+ sodipodi:role="line">like</tspan><tspan
+ id="tspan27227-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="337.44601"
+ x="1593.2249"
+ sodipodi:role="line">this</tspan><tspan
+ id="tspan27229-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ y="356.19601"
+ x="1593.2249"
+ sodipodi:role="line">one.</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="1879.6267"
+ y="37.446014"
+ id="text37640"><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="37.446014"
+ id="tspan37644"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">Text, non-flowed,</tspan><tspan
+ id="tspan11637"
+ sodipodi:role="line"
+ x="1879.6267"
+ y="56.196014"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">align center</tspan><tspan
+ sodipodi:role="line"
+ x="1882.0144"
+ y="74.946014"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37646"> </tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="93.696014"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37648">However, it has</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="112.44601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37650">many returns</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="131.19601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37652">each</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="149.94601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37654">on</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="168.69601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37656">its</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="187.44601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37658">own</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="206.19601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37660">line</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="224.94601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37662">in order to make</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="243.69601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37664">it take up more vertical</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="262.44601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37666">space so that we</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="281.19601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37668">can see how it handles</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="299.94601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37670">weird edge cases</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="318.69601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37672">like</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="337.44601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37674">this</tspan><tspan
+ sodipodi:role="line"
+ x="1879.6267"
+ y="356.19601"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="tspan37676">one.</tspan></text>
+ <text
+ id="text37678"
+ y="37.446014"
+ x="2166.0283"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ id="tspan37682"
+ y="37.446014"
+ x="2166.0283"
+ sodipodi:role="line">Text, non-flowed,</tspan><tspan
+ id="tspan37684"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="56.196014"
+ x="2166.0283"
+ sodipodi:role="line">align right.</tspan><tspan
+ id="tspan11650"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="74.946014"
+ x="2170.8037"
+ sodipodi:role="line"> </tspan><tspan
+ id="tspan37686"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="93.696014"
+ x="2166.0283"
+ sodipodi:role="line">However, it has</tspan><tspan
+ id="tspan37688"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="112.44601"
+ x="2166.0283"
+ sodipodi:role="line">many returns</tspan><tspan
+ id="tspan37690"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="131.19601"
+ x="2166.0283"
+ sodipodi:role="line">each</tspan><tspan
+ id="tspan37692"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="149.94601"
+ x="2166.0283"
+ sodipodi:role="line">on</tspan><tspan
+ id="tspan37694"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="168.69601"
+ x="2166.0283"
+ sodipodi:role="line">its</tspan><tspan
+ id="tspan37696"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="187.44601"
+ x="2166.0283"
+ sodipodi:role="line">own</tspan><tspan
+ id="tspan37698"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="206.19601"
+ x="2166.0283"
+ sodipodi:role="line">line</tspan><tspan
+ id="tspan37700"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="224.94601"
+ x="2166.0283"
+ sodipodi:role="line">in order to make</tspan><tspan
+ id="tspan37702"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="243.69601"
+ x="2166.0283"
+ sodipodi:role="line">it take up more vertical</tspan><tspan
+ id="tspan37704"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="262.44601"
+ x="2166.0283"
+ sodipodi:role="line">space so that we</tspan><tspan
+ id="tspan37706"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="281.19601"
+ x="2166.0283"
+ sodipodi:role="line">can see how it handles</tspan><tspan
+ id="tspan37708"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="299.94601"
+ x="2166.0283"
+ sodipodi:role="line">weird edge cases</tspan><tspan
+ id="tspan37710"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="318.69601"
+ x="2166.0283"
+ sodipodi:role="line">like</tspan><tspan
+ id="tspan37712"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="337.44601"
+ x="2166.0283"
+ sodipodi:role="line">this</tspan><tspan
+ id="tspan37714"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:end;writing-mode:lr-tb;text-anchor:end"
+ y="356.19601"
+ x="2166.0283"
+ sodipodi:role="line">one.</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4136-1-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(0.55234048,0,0,0.55234048,1617.5409,226.3572)"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion4138-9-2"><rect
+ style="font-family:sans-serif"
+ id="rect4140-6-1"
+ width="386.64426"
+ height="495.14215"
+ x="58.688175"
+ y="293.76318" /></flowRegion><flowPara
+ id="flowPara11690"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">Test: Flowed text, aligned left. </flowPara><flowPara
+ id="flowPara11732"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start" /><flowPara
+ id="flowPara37749"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">Can we handle text that is aligned left, aligned right, centered, justified and so forth? Not all of these cases are necessarily useful for all applications (for example justified with stroke based fonts in the styles of handwriting), but that's not really for us to decide.</flowPara><flowPara
+ id="flowPara11736"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start">Rather, we need to handle these cases because the text that is handed to us just might be in some unusual format.. </flowPara></flowRoot> <text
+ transform="matrix(1.0356004,-0.4690583,0.81335056,0.59722955,0,0)"
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="109.79303"
+ y="1398.9264"
+ id="text4345-3"><tspan
+ sodipodi:role="line"
+ id="tspan4347-3"
+ x="109.79303"
+ y="1398.9264"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24.8214px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">This transformed text...</tspan><tspan
+ sodipodi:role="line"
+ x="109.79303"
+ y="1429.9531"
+ id="tspan4349-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24.8214px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"> </tspan><tspan
+ sodipodi:role="line"
+ x="109.79303"
+ y="1460.9799"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24.8214px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start"
+ id="tspan4351-2">is text with a gap...</tspan></text>
+ <flowRoot
+ transform="matrix(0.55234048,0,0,0.55234048,1873.5798,226.3572)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="flowRoot11766"
+ xml:space="preserve"><flowRegion
+ id="flowRegion11756"
+ style="font-family:sans-serif"><rect
+ y="293.76318"
+ x="58.688175"
+ height="495.14215"
+ width="386.64426"
+ id="rect11754"
+ style="font-family:sans-serif" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="flowPara11758">Test: Flowed text, aligned center. </flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="flowPara11760" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="flowPara11762">Can we handle text that is aligned left, aligned right, centered, justified and so forth? Not all of these cases are necessarily useful for all applications (for example justified with stroke based fonts in the styles of handwriting), but that's not really for us to decide.</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="flowPara11764">Rather, we need to handle these cases because the text that is handed to us just might be in some unusual format.. </flowPara></flowRoot> <flowRoot
+ transform="matrix(0.55234048,0,0,0.55234048,1617.5409,526.47821)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="flowRoot11780"
+ xml:space="preserve"><flowRegion
+ id="flowRegion11770"
+ style="font-family:sans-serif"><rect
+ y="293.76318"
+ x="58.688175"
+ height="495.14215"
+ width="386.64426"
+ id="rect11768"
+ style="font-family:sans-serif" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end"
+ id="flowPara11772">Test: Flowed text, aligned right. </flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end"
+ id="flowPara11774" /><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end"
+ id="flowPara11776">Can we handle text that is aligned left, aligned right, centered, justified and so forth? Not all of these cases are necessarily useful for all applications (for example justified with stroke based fonts in the styles of handwriting), but that's not really for us to decide.</flowPara><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:end;writing-mode:lr-tb;text-anchor:end"
+ id="flowPara11778">Rather, we need to handle these cases because the text that is handed to us just might be in some unusual format.. </flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot11794"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:0.01%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(0.55234048,0,0,0.55234048,1873.5798,526.47821)"><flowRegion
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start"
+ id="flowRegion11784"><rect
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.49993515px;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start"
+ id="rect11782"
+ width="386.64426"
+ height="495.14215"
+ x="58.688175"
+ y="293.76318" /></flowRegion><flowPara
+ id="flowPara11786"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start">Test: Flowed text, justified. </flowPara><flowPara
+ id="flowPara11788"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start" /><flowPara
+ id="flowPara11790"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start">Can we handle text that is aligned left, aligned right, centered, justified and so forth? Not all of these cases are necessarily useful for all applications (for example justified with stroke based fonts in the styles of handwriting), but that's not really for us to decide.</flowPara><flowPara
+ id="flowPara11792"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.4999px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:justify;writing-mode:lr-tb;text-anchor:start">Rather, we need to handle these cases because the text that is handed to us just might be in some unusual format.. </flowPara></flowRoot> <rect
+ y="-195.96283"
+ x="1844.2212"
+ height="119.80688"
+ width="131.40111"
+ id="rect24509"
+ style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:2.535;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <circle
+ r="43.478306"
+ cy="-142.82268"
+ cx="2077.0715"
+ id="path24511"
+ style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:2.535;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+ <g
+ transform="translate(1143.9626,-33.997658)"
+ id="text24525"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:20px;line-height:125%;font-family:'Brandon Text';-inkscape-font-specification:'Brandon Text';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#636365;fill-opacity:1;stroke:none;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ aria-label="Text already converted into a path">
+ <path
+ inkscape:connector-curvature="0"
+ id="path24529"
+ style="stroke-width:0.9375"
+ d="m 681.45013,-233.84283 c 0,0.2 0.18,0.38 0.38,0.38 h 0.76 c 0.2,0 0.38,-0.18 0.38,-0.38 v -12.28 h 3.48 c 0.22,0 0.38,-0.18 0.38,-0.38 v -0.58 c 0,-0.2 -0.16,-0.38 -0.38,-0.38 h -8.48 c -0.22,0 -0.38,0.18 -0.38,0.38 v 0.58 c 0,0.2 0.16,0.38 0.38,0.38 h 3.48 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24531"
+ style="stroke-width:0.9375"
+ d="m 686.76107,-238.08283 c 0,2.64 1.68,4.84 4.48,4.84 1.6,0 2.82,-0.62 3.38,-1.06 0.34,-0.26 0.26,-0.36 0.08,-0.64 l -0.24,-0.34 c -0.24,-0.36 -0.38,-0.28 -0.7,-0.06 -0.52,0.34 -1.28,0.76 -2.5,0.76 -1.68,0 -2.98,-1.62 -3.02,-3.16 h 6.72 c 0.2,0 0.4,-0.16 0.42,-0.4 0.02,-0.16 0.04,-0.4 0.04,-0.56 0,-2.42 -1.76,-4.2 -4.18,-4.2 -2.8,0 -4.48,2.22 -4.48,4.82 z m 1.5,-0.84 c 0.18,-1.44 1.42,-2.64 2.98,-2.64 1.58,0 2.66,1.28 2.7,2.64 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24533"
+ style="stroke-width:0.9375"
+ d="m 697.38888,-233.46283 h 0.76 c 0.14,0 0.28,-0.08 0.36,-0.18 l 2.5,-3.5 h 0.04 l 2.52,3.48 c 0.08,0.1 0.22,0.2 0.36,0.2 h 0.76 c 0.36,0 0.52,-0.3 0.3,-0.6 l -3.02,-4.14 3,-3.9 c 0.22,-0.3 0.08,-0.6 -0.3,-0.6 h -0.86 c -0.16,0 -0.28,0.08 -0.36,0.18 l -2.4,3.2 h -0.04 l -2.32,-3.2 c -0.06,-0.1 -0.2,-0.18 -0.36,-0.18 h -0.86 c -0.38,0 -0.52,0.3 -0.3,0.6 l 3,3.94 -3.08,4.1 c -0.22,0.28 -0.1,0.6 0.3,0.6 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24535"
+ style="stroke-width:0.9375"
+ d="m 707.98013,-241.42283 v 5.62 c 0,1.44 0.36,2.56 2.12,2.56 1.24,0 2.2,-0.46 2.6,-0.74 0.24,-0.16 0.28,-0.3 0.16,-0.6 l -0.18,-0.42 c -0.1,-0.22 -0.22,-0.4 -0.58,-0.18 -0.38,0.24 -0.96,0.6 -1.82,0.6 -0.52,0 -0.82,-0.36 -0.82,-1.32 v -5.52 h 2.72 c 0.26,0 0.46,-0.2 0.46,-0.44 v -0.4 c 0,-0.26 -0.2,-0.44 -0.46,-0.44 h -2.72 v -2.6 c 0,-0.24 -0.18,-0.46 -0.42,-0.44 l -0.62,0.04 c -0.22,0.02 -0.44,0.2 -0.44,0.44 v 2.56 h -1.22 c -0.28,0 -0.46,0.18 -0.46,0.44 v 0.4 c 0,0.24 0.18,0.44 0.46,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24537"
+ style="stroke-width:0.9375"
+ d="m 719.04295,-236.26283 c 0,1.86 1.24,3.02 2.86,3.02 1.42,0 2.38,-0.7 2.86,-1.18 l 0.18,0.62 c 0.06,0.2 0.14,0.34 0.38,0.34 h 0.38 c 0.24,0 0.44,-0.2 0.44,-0.44 v -5.12 c 0,-2.72 -0.5,-3.88 -2.86,-3.88 -1.52,0 -2.72,0.4 -3.18,0.6 -0.22,0.1 -0.36,0.22 -0.28,0.5 l 0.2,0.54 c 0.08,0.22 0.2,0.34 0.44,0.24 0.42,-0.14 1.48,-0.54 2.74,-0.54 1.32,0 1.54,0.84 1.52,2.54 0,0 -1,-0.3 -1.98,-0.3 -2.38,0 -3.7,1.3 -3.7,3.06 z m 1.46,0 c 0,-1.18 0.96,-1.8 2.24,-1.8 0.92,0 1.66,0.2 1.96,0.36 v 1.88 c -0.4,0.6 -1.4,1.24 -2.54,1.24 -1.02,0 -1.66,-0.74 -1.66,-1.68 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24539"
+ style="stroke-width:0.9375"
+ d="m 729.27701,-233.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -13.12 c 0,-0.22 -0.22,-0.44 -0.44,-0.44 h -0.6 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24541"
+ style="stroke-width:0.9375"
+ d="m 733.9817,-233.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -6.4 c 0,0 0.72,-1.18 2.5,-1.18 0.44,0 0.78,0.16 1,0.26 0.22,0.1 0.44,0.08 0.54,-0.22 l 0.26,-0.72 c 0.22,-0.64 -0.92,-0.74 -1.62,-0.74 -1.92,0 -2.84,1.18 -2.84,1.18 l -0.16,-0.66 c -0.06,-0.22 -0.22,-0.32 -0.4,-0.32 h -0.32 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24543"
+ style="stroke-width:0.9375"
+ d="m 740.82357,-238.08283 c 0,2.64 1.68,4.84 4.48001,4.84 1.6,0 2.82,-0.62 3.38,-1.06 0.34,-0.26 0.26,-0.36 0.08,-0.64 l -0.24,-0.34 c -0.24,-0.36 -0.38,-0.28 -0.7,-0.06 -0.52,0.34 -1.28,0.76 -2.5,0.76 -1.68001,0 -2.98001,-1.62 -3.02001,-3.16 h 6.72001 c 0.2,0 0.4,-0.16 0.42,-0.4 0.02,-0.16 0.04,-0.4 0.04,-0.56 0,-2.42 -1.76,-4.2 -4.18,-4.2 -2.80001,0 -4.48001,2.22 -4.48001,4.82 z m 1.5,-0.84 c 0.18,-1.44 1.42,-2.64 2.98001,-2.64 1.58,0 2.66,1.28 2.7,2.64 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24545"
+ style="stroke-width:0.9375"
+ d="m 751.19139,-236.26283 c 0,1.86 1.24,3.02 2.86,3.02 1.42,0 2.38,-0.7 2.86,-1.18 l 0.18,0.62 c 0.06,0.2 0.14,0.34 0.38,0.34 h 0.38 c 0.24,0 0.44,-0.2 0.44,-0.44 v -5.12 c 0,-2.72 -0.5,-3.88 -2.86,-3.88 -1.52,0 -2.72,0.4 -3.18,0.6 -0.22,0.1 -0.36,0.22 -0.28,0.5 l 0.2,0.54 c 0.08,0.22 0.2,0.34 0.44,0.24 0.42,-0.14 1.48,-0.54 2.74,-0.54 1.32,0 1.54,0.84 1.52,2.54 0,0 -1,-0.3 -1.98,-0.3 -2.38,0 -3.7,1.3 -3.7,3.06 z m 1.46,0 c 0,-1.18 0.96,-1.8 2.24,-1.8 0.92,0 1.66,0.2 1.96,0.36 v 1.88 c -0.4,0.6 -1.4,1.24 -2.54,1.24 -1.02,0 -1.66,-0.74 -1.66,-1.68 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24547"
+ style="stroke-width:0.9375"
+ d="m 760.74545,-238.10283 c 0,2.64 1.8,4.86 4.14,4.86 1.74,0 2.92,-1.2 2.92,-1.2 l 0.12,0.6 c 0.08,0.22 0.2,0.38 0.4,0.38 h 0.36 c 0.24,0 0.46,-0.2 0.46,-0.44 v -13.12 c 0,-0.22 -0.22,-0.44 -0.46,-0.44 h -0.56 c -0.24,0 -0.44,0.22 -0.44,0.44 v 4.7 c 0,0 -1.04,-0.58 -2.56,-0.58 -2.78,0 -4.38,2.1 -4.38,4.8 z m 1.5,0.02 c 0,-1.84 1.1,-3.48 3.08,-3.48 1.28,0 2.36,0.52 2.36,0.52 v 4.98 c 0,0 -0.96,1.48 -2.62,1.48 -1.68,0 -2.82,-1.7 -2.82,-3.5 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24549"
+ style="stroke-width:0.9375"
+ d="m 774.66295,-233.48283 -1.78,4.22 c -0.14,0.32 0.02,0.56 0.38,0.56 h 0.72 c 0.16,0 0.34,-0.14 0.4,-0.28 l 5.78,-13.2 c 0.14,-0.3 0,-0.52 -0.36,-0.52 h -0.74 c -0.18,0 -0.34,0.1 -0.4,0.26 l -3.12,7.34 h -0.04 l -2.62,-7.34 c -0.06,-0.16 -0.22,-0.26 -0.4,-0.26 h -0.84 c -0.36,0 -0.48,0.2 -0.36,0.5 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24551"
+ style="stroke-width:0.9375"
+ d="m 785.99889,-238.06283 c 0,2.78 1.92,4.82 4.66,4.82 1.54,0 2.78,-0.84 3.48,-1.86 0.16,-0.24 0.08,-0.44 -0.12,-0.64 l -0.12,-0.12 c -0.26,-0.26 -0.52,-0.34 -0.78,-0.04 -0.52,0.6 -1.12,1.32 -2.52,1.32 -1.72,0 -3.1,-1.54 -3.1,-3.5 0,-1.92 1.4,-3.48 3.16,-3.48 0.94,0 1.68,0.28 2.32,1 0.18,0.2 0.36,0.4 0.66,0.14 l 0.32,-0.3 c 0.22,-0.18 0.26,-0.44 0.08,-0.66 -0.86,-0.98 -1.98,-1.52 -3.36,-1.52 -2.68,0 -4.68,2.12 -4.68,4.84 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24553"
+ style="stroke-width:0.9375"
+ d="m 795.88171,-238.10283 c 0,2.64 2.08,4.86 4.64,4.86 2.56,0 4.64,-2.22 4.64,-4.86 0,-2.6 -2.08,-4.8 -4.64,-4.8 -2.56,0 -4.64,2.2 -4.64,4.8 z m 1.46,0 c 0,-1.88 1.36,-3.46 3.18,-3.46 1.82,0 3.16,1.58 3.16,3.46 0,1.92 -1.34,3.52 -3.16,3.52 -1.82,0 -3.18,-1.6 -3.18,-3.52 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24555"
+ style="stroke-width:0.9375"
+ d="m 807.69264,-233.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -6.38 c 0,0 1.10001,-1.28 2.84001,-1.28 1.36,0 1.96,0.82 1.96,2.58 v 5.08 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -4.88 c 0,-2.38 -0.66,-4.12 -3.34,-4.12 -1.92,0 -3.10001,1.18 -3.10001,1.18 l -0.2,-0.7 c -0.04,-0.2 -0.16,-0.28 -0.36,-0.28 h -0.32 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24557"
+ style="stroke-width:0.9375"
+ d="m 821.09952,-233.48283 c 0.04,0.12 0.18,0.24 0.38,0.24 h 0.12 c 0.22,0 0.34,-0.12 0.38,-0.24 l 3.98,-8.7 c 0.12,-0.28 0,-0.52 -0.36,-0.52 h -0.64 c -0.16,0 -0.3,0.1 -0.36,0.26 l -3.04,6.8 h -0.04 l -2.86,-6.8 c -0.06,-0.16 -0.2,-0.26 -0.42,-0.26 h -0.7 c -0.34,0 -0.48,0.24 -0.34,0.52 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24559"
+ style="stroke-width:0.9375"
+ d="m 827.22983,-238.08283 c 0,2.64 1.68,4.84 4.48,4.84 1.6,0 2.82,-0.62 3.38,-1.06 0.34,-0.26 0.26,-0.36 0.08,-0.64 l -0.24,-0.34 c -0.24,-0.36 -0.38,-0.28 -0.7,-0.06 -0.52,0.34 -1.28,0.76 -2.5,0.76 -1.68,0 -2.98,-1.62 -3.02,-3.16 h 6.72 c 0.2,0 0.4,-0.16 0.42,-0.4 0.02,-0.16 0.04,-0.4 0.04,-0.56 0,-2.42 -1.76,-4.2 -4.18,-4.2 -2.8,0 -4.48,2.22 -4.48,4.82 z m 1.5,-0.84 c 0.18,-1.44 1.42,-2.64 2.98,-2.64 1.58,0 2.66,1.28 2.7,2.64 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24561"
+ style="stroke-width:0.9375"
+ d="m 838.31764,-233.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -6.4 c 0,0 0.72001,-1.18 2.50001,-1.18 0.44,0 0.78,0.16 1,0.26 0.22,0.1 0.44,0.08 0.54,-0.22 l 0.26,-0.72 c 0.22,-0.64 -0.92,-0.74 -1.62,-0.74 -1.92,0 -2.84001,1.18 -2.84001,1.18 l -0.16,-0.66 c -0.06,-0.22 -0.22,-0.32 -0.4,-0.32 h -0.32 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24563"
+ style="stroke-width:0.9375"
+ d="m 846.65202,-241.42283 v 5.62 c 0,1.44 0.36,2.56 2.12,2.56 1.24,0 2.2,-0.46 2.6,-0.74 0.24,-0.16 0.28,-0.3 0.16,-0.6 l -0.18,-0.42 c -0.1,-0.22 -0.22,-0.4 -0.58,-0.18 -0.38,0.24 -0.96,0.6 -1.82,0.6 -0.52,0 -0.82,-0.36 -0.82,-1.32 v -5.52 h 2.72 c 0.26,0 0.46,-0.2 0.46,-0.44 v -0.4 c 0,-0.26 -0.2,-0.44 -0.46,-0.44 h -2.72 v -2.6 c 0,-0.24 -0.18,-0.46 -0.42,-0.44 l -0.62,0.04 c -0.22,0.02 -0.44,0.2 -0.44,0.44 v 2.56 h -1.22 c -0.28,0 -0.46,0.18 -0.46,0.44 v 0.4 c 0,0.24 0.18,0.44 0.46,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24565"
+ style="stroke-width:0.9375"
+ d="m 853.05014,-238.08283 c 0,2.64 1.68,4.84 4.48001,4.84 1.6,0 2.82,-0.62 3.38,-1.06 0.34,-0.26 0.26,-0.36 0.08,-0.64 l -0.24,-0.34 c -0.24,-0.36 -0.38,-0.28 -0.7,-0.06 -0.52,0.34 -1.28,0.76 -2.5,0.76 -1.68,0 -2.98001,-1.62 -3.02001,-3.16 h 6.72001 c 0.2,0 0.4,-0.16 0.42,-0.4 0.02,-0.16 0.04,-0.4 0.04,-0.56 0,-2.42 -1.76,-4.2 -4.18,-4.2 -2.80001,0 -4.48001,2.22 -4.48001,4.82 z m 1.5,-0.84 c 0.18,-1.44 1.42001,-2.64 2.98001,-2.64 1.58,0 2.66,1.28 2.7,2.64 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24567"
+ style="stroke-width:0.9375"
+ d="m 863.55796,-238.10283 c 0,2.64 1.8,4.86 4.14,4.86 1.74,0 2.92,-1.2 2.92,-1.2 l 0.12,0.6 c 0.08,0.22 0.2,0.38 0.4,0.38 h 0.36 c 0.24,0 0.46,-0.2 0.46,-0.44 v -13.12 c 0,-0.22 -0.22,-0.44 -0.46,-0.44 h -0.56 c -0.24,0 -0.44,0.22 -0.44,0.44 v 4.7 c 0,0 -1.04,-0.58 -2.56,-0.58 -2.78,0 -4.38,2.1 -4.38,4.8 z m 1.5,0.02 c 0,-1.84 1.1,-3.48 3.08,-3.48 1.28,0 2.36,0.52 2.36,0.52 v 4.98 c 0,0 -0.96,1.48 -2.62,1.48 -1.68,0 -2.82,-1.7 -2.82,-3.5 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24569"
+ style="stroke-width:0.9375"
+ d="m 679.33013,-220.08283 c 0.62,0 1.1,-0.5 1.1,-1.08 0,-0.64 -0.48,-1.12 -1.1,-1.12 -0.6,0 -1.08,0.48 -1.08,1.12 0,0.58 0.48,1.08 1.08,1.08 z m -0.7,11.18 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -8.36 c 0,-0.22 -0.22,-0.44 -0.44,-0.44 h -0.6 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24571"
+ style="stroke-width:0.9375"
+ d="m 683.23951,-208.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -6.38 c 0,0 1.1,-1.28 2.84,-1.28 1.36,0 1.96,0.82 1.96,2.58 v 5.08 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -4.88 c 0,-2.38 -0.66,-4.12 -3.34,-4.12 -1.92,0 -3.1,1.18 -3.1,1.18 l -0.2,-0.7 c -0.04,-0.2 -0.16,-0.28 -0.36,-0.28 h -0.32 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24573"
+ style="stroke-width:0.9375"
+ d="m 694.50357,-216.42283 v 5.62 c 0,1.44 0.36,2.56 2.12,2.56 1.24,0 2.2,-0.46 2.6,-0.74 0.24,-0.16 0.28,-0.3 0.16,-0.6 l -0.18,-0.42 c -0.1,-0.22 -0.22,-0.4 -0.58,-0.18 -0.38,0.24 -0.96,0.6 -1.82,0.6 -0.52,0 -0.82,-0.36 -0.82,-1.32 v -5.52 h 2.72 c 0.26,0 0.46,-0.2 0.46,-0.44 v -0.4 c 0,-0.26 -0.2,-0.44 -0.46,-0.44 h -2.72 v -2.6 c 0,-0.24 -0.18,-0.46 -0.42,-0.44 l -0.62,0.04 c -0.22,0.02 -0.44,0.2 -0.44,0.44 v 2.56 h -1.22 c -0.28,0 -0.46,0.18 -0.46,0.44 v 0.4 c 0,0.24 0.18,0.44 0.46,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24575"
+ style="stroke-width:0.9375"
+ d="m 700.88169,-213.10283 c 0,2.64 2.08,4.86 4.64,4.86 2.56,0 4.64,-2.22 4.64,-4.86 0,-2.6 -2.08,-4.8 -4.64,-4.8 -2.56,0 -4.64,2.2 -4.64,4.8 z m 1.46,0 c 0,-1.88 1.36,-3.46 3.18,-3.46 1.82,0 3.16,1.58 3.16,3.46 0,1.92 -1.34,3.52 -3.16,3.52 -1.82,0 -3.18,-1.6 -3.18,-3.52 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24577"
+ style="stroke-width:0.9375"
+ d="m 716.77732,-211.26283 c 0,1.86 1.24,3.02 2.86,3.02 1.42,0 2.38,-0.7 2.86,-1.18 l 0.18,0.62 c 0.06,0.2 0.14,0.34 0.38,0.34 h 0.38 c 0.24,0 0.44,-0.2 0.44,-0.44 v -5.12 c 0,-2.72 -0.5,-3.88 -2.86,-3.88 -1.52,0 -2.72,0.4 -3.18,0.6 -0.22,0.1 -0.36,0.22 -0.28,0.5 l 0.2,0.54 c 0.08,0.22 0.2,0.34 0.44,0.24 0.42,-0.14 1.48,-0.54 2.74,-0.54 1.32,0 1.54,0.84 1.52,2.54 0,0 -1,-0.3 -1.98,-0.3 -2.38,0 -3.7,1.3 -3.7,3.06 z m 1.46,0 c 0,-1.18 0.96,-1.8 2.24,-1.8 0.92,0 1.66,0.2 1.96,0.36 v 1.88 c -0.4,0.6 -1.4,1.24 -2.54,1.24 -1.02,0 -1.66,-0.74 -1.66,-1.68 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24579"
+ style="stroke-width:0.9375"
+ d="m 733.17607,-209.00283 c 0,0 1.02,0.76 2.56,0.76 2.54,0 4.36,-2.14 4.36,-4.84 0,-2.64 -1.78,-4.82 -4.3,-4.82 -1.66,0 -2.78,0.94 -2.78,0.94 l -0.14,-0.44 c -0.1,-0.24 -0.16,-0.3 -0.38,-0.3 h -0.34 c -0.24,0 -0.44,0.22 -0.44,0.44 v 13.12 c 0,0.24 0.2,0.44 0.44,0.44 h 0.58 c 0.22,0 0.44,-0.2 0.44,-0.44 z m 0,-1.38 v -5.06 c 0,0 0.96,-1.12 2.44,-1.12 1.86,0 2.98,1.66 2.98,3.46 0,2.02 -1.3,3.52 -3.08,3.52 -1.28,0 -2.34,-0.8 -2.34,-0.8 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24581"
+ style="stroke-width:0.9375"
+ d="m 741.93357,-211.26283 c 0,1.86 1.24,3.02 2.86,3.02 1.42001,0 2.38001,-0.7 2.86001,-1.18 l 0.18,0.62 c 0.06,0.2 0.14,0.34 0.38,0.34 h 0.38 c 0.24,0 0.44,-0.2 0.44,-0.44 v -5.12 c 0,-2.72 -0.5,-3.88 -2.86,-3.88 -1.52001,0 -2.72001,0.4 -3.18001,0.6 -0.22,0.1 -0.36,0.22 -0.28,0.5 l 0.2,0.54 c 0.08,0.22 0.2,0.34 0.44,0.24 0.42,-0.14 1.48,-0.54 2.74001,-0.54 1.32,0 1.54,0.84 1.52,2.54 0,0 -1,-0.3 -1.98001,-0.3 -2.38,0 -3.7,1.3 -3.7,3.06 z m 1.46,0 c 0,-1.18 0.96,-1.8 2.24,-1.8 0.92001,0 1.66001,0.2 1.96001,0.36 v 1.88 c -0.4,0.6 -1.4,1.24 -2.54001,1.24 -1.02,0 -1.66,-0.74 -1.66,-1.68 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24583"
+ style="stroke-width:0.9375"
+ d="m 752.66764,-216.42283 v 5.62 c 0,1.44 0.36,2.56 2.12,2.56 1.24,0 2.2,-0.46 2.6,-0.74 0.24,-0.16 0.28,-0.3 0.16,-0.6 l -0.18,-0.42 c -0.1,-0.22 -0.22,-0.4 -0.58,-0.18 -0.38,0.24 -0.96,0.6 -1.82,0.6 -0.52,0 -0.82,-0.36 -0.82,-1.32 v -5.52 h 2.72 c 0.26,0 0.46,-0.2 0.46,-0.44 v -0.4 c 0,-0.26 -0.2,-0.44 -0.46,-0.44 h -2.72 v -2.6 c 0,-0.24 -0.18,-0.46 -0.42,-0.44 l -0.62,0.04 c -0.22,0.02 -0.44,0.2 -0.44,0.44 v 2.56 h -1.22 c -0.28,0 -0.46,0.18 -0.46,0.44 v 0.4 c 0,0.24 0.18,0.44 0.46,0.44 z" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path24585"
+ style="stroke-width:0.9375"
+ d="m 759.64576,-208.90283 c 0,0.24 0.2,0.44 0.44,0.44 h 0.6 c 0.22,0 0.44,-0.2 0.44,-0.44 v -6.34 c 0,0 1.08,-1.32 2.84,-1.32 1.42,0 1.94,1.02 1.94,2.78 v 4.88 c 0,0.24 0.2,0.44 0.44,0.44 h 0.62 c 0.22,0 0.44,-0.2 0.44,-0.44 v -4.88 c 0,-2.7 -1.04,-4.12 -3.34,-4.12 -1.86,0 -2.94,1.18 -2.94,1.18 v -5.3 c 0,-0.22 -0.22,-0.44 -0.44,-0.44 h -0.6 c -0.24,0 -0.44,0.22 -0.44,0.44 z" />
+ </g>
+ <text
+ id="text24590"
+ y="-341.72476"
+ x="950.47961"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:41.7038px;line-height:125%;font-family:'Brandon Text';-inkscape-font-specification:'Brandon Text';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#636365;fill-opacity:1;stroke:none;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.9375"
+ y="-341.72476"
+ x="950.47961"
+ id="tspan24588"
+ sodipodi:role="line">Tests of font face mapping:</tspan></text>
+ <g
+ transform="translate(75.000004)"
+ id="g24599">
+ <path
+ sodipodi:type="star"
+ style="opacity:1;fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:2.535;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path24513"
+ sodipodi:sides="5"
+ sodipodi:cx="1647.4819"
+ sodipodi:cy="-130.26225"
+ sodipodi:r1="79.438942"
+ sodipodi:r2="39.953239"
+ sodipodi:arg1="0.78539816"
+ sodipodi:arg2="1.4137167"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 1703.6537,-74.090438 -49.9217,-16.710466 -42.3146,31.319267 0.4659,-52.642223 -42.8623,-30.56538 50.2097,-15.82422 15.8242,-50.20971 30.5654,42.86232 52.6422,-0.46593 -31.3192,42.31459 z"
+ inkscape:transform-center-x="-2.2206671e-06"
+ inkscape:transform-center-y="1.2617427e-06" />
+ <text
+ id="text24594"
+ y="-322.40106"
+ x="1618.4456"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:41.7038px;line-height:125%;font-family:'Brandon Text';-inkscape-font-specification:'Brandon Text';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#636365;fill-opacity:1;stroke:none;stroke-width:0.9375;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.9375"
+ y="-322.40106"
+ x="1618.4456"
+ id="tspan24592"
+ sodipodi:role="line">Tests of non-text objects:</tspan></text>
+ </g>
+ </g>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot6566"
+ style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;line-height:0.01%;font-family:'Brandon Grotesque';-inkscape-font-specification:'Brandon Grotesque, Light';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="translate(753.8551,517.37858)"><flowRegion
+ id="flowRegion6568"><rect
+ style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:30.00000381px;line-height:125%;font-family:'Brandon Grotesque';-inkscape-font-specification:'Brandon Grotesque, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="rect6570"
+ width="551.43768"
+ height="284.185"
+ x="16.676867"
+ y="335.05359" /></flowRegion><flowPara
+ id="flowPara6611"
+ style="font-style:normal;font-variant:normal;font-weight:300;font-stretch:normal;font-size:30px;line-height:125%;font-family:'Brandon Grotesque';-inkscape-font-specification:'Brandon Grotesque, Light';text-align:center;writing-mode:lr-tb;text-anchor:middle">This is a test of centered text, one long line of text flowed into a box, centered, and in a different font.</flowPara></flowRoot> <flowRoot
+ transform="matrix(2.2532,-1.16191,1.16191,2.2532,535.21251,556.2299)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="flowRoot36077-6"
+ xml:space="preserve"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion36079-6"><rect
+ style="font-family:sans-serif"
+ y="293.76318"
+ x="58.688175"
+ height="317.35086"
+ width="618.39948"
+ id="rect36081-4" /></flowRegion><flowPara
+ id="flowPara36083-8"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">flow<flowSpan
+ id="flowSpan92598-9"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:35px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">St<flowSpan
+ id="flowSpan92741-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">yl</flowSpan>es</flowSpan>To<flowSpan
+ id="flowSpan92600-0"
+ style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Bold';text-align:start;writing-mode:lr-tb;text-anchor:start">Check</flowSpan></flowPara></flowRoot> <flowRoot
+ transform="matrix(1.2329448,0,0,1.2329448,-195.87118,762.16345)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="flowRoot98054-7"
+ xml:space="preserve"><flowRegion
+ style="font-family:sans-serif"
+ id="flowRegion98056-8"><rect
+ style="font-family:sans-serif"
+ y="-3.3340657"
+ x="259.82037"
+ height="377.92871"
+ width="212.37242"
+ id="rect98058-5" /></flowRegion><flowPara
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"
+ id="flowPara98070-1"> </flowPara><flowPara
+ id="flowPara110085"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"> </flowPara><flowPara
+ id="flowPara110087"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle"> </flowPara><flowPara
+ id="flowPara110089"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">Flowed text object with multiple returns before start and also       </flowPara><flowPara
+ id="flowPara110091"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">additional sections with more returns</flowPara><flowPara
+ id="flowPara110093"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110095"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">That was just one return, since the paragraph above this one.</flowPara><flowPara
+ id="flowPara110097"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110101"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110099"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">That was two returns, since the paragraph above this one.</flowPara><flowPara
+ id="flowPara110103"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110105"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110107"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">And that, that was three returns.</flowPara><flowPara
+ id="flowPara110109"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle">Just for good measure, this paragraph had a return before the word &quot;just&quot; above. And, we're going to finish with a few returns as well.</flowPara><flowPara
+ id="flowPara110111"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /><flowPara
+ id="flowPara110113"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12.4277px;line-height:125%;font-family:Arial;-inkscape-font-specification:'Arial, Normal';text-align:center;writing-mode:lr-tb;text-anchor:middle" /></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot4218"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.347873px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(2.874615,0,0,2.874615,214.65182,-1263.6317)"><flowRegion
+ style="font-family:sans-serif;stroke-width:0.347873px"
+ id="flowRegion4220"><rect
+ style="font-family:HersheySerifBold;stroke-width:0.34787267px"
+ id="rect4222"
+ width="441.57312"
+ height="267.5224"
+ x="269.13397"
+ y="396.44882" /></flowRegion><flowPara
+ style="font-size:20px;line-height:10;font-family:HersheySerifBold;stroke-width:0.347873px"
+ id="flowPara4224">Bold Serif Text</flowPara></flowRoot> <text
+ id="text69"
+ y="1036.6809"
+ x="481.34924"
+ style="font-style:normal;font-weight:normal;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.264583"
+ xml:space="preserve"><tspan
+ style="font-size:16.25px;line-height:2.55;stroke-width:0.264583"
+ y="1036.6809"
+ x="481.34924"
+ id="tspan67"
+ sodipodi:role="line">Dear Mike,</tspan><tspan
+ id="tspan71"
+ style="font-size:16.25px;line-height:2.55;stroke-width:0.264583"
+ y="1078.1184"
+ x="481.34924"
+ sodipodi:role="line">Thanks for pointing out that we need to handle text</tspan><tspan
+ id="tspan73"
+ style="font-size:16.25px;line-height:2.55;stroke-width:0.264583"
+ y="1119.5559"
+ x="481.34924"
+ sodipodi:role="line">that is shaped like this as well.</tspan><tspan
+ id="tspan75"
+ style="font-size:16.25px;line-height:2.55;stroke-width:0.264583"
+ y="1160.9934"
+ x="481.34924"
+ sodipodi:role="line">Have a great day!</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot134839"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:21.3333px;line-height:125%;font-family:'Brandon Text';-inkscape-font-specification:'Brandon Text';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#636365;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"
+ transform="matrix(0.9375,0,0,0.9375,-190.88742,970.40032)"><flowRegion
+ id="flowRegion134829"><rect
+ id="rect134827"
+ width="253.56715"
+ height="287.72461"
+ x="344.40945"
+ y="208.34642" /></flowRegion><flowPara
+ id="flowPara134837"
+ style="font-size:21.3333px">Flowed text object with multiple sizes before the <flowSpan
+ style="font-size:64px"
+ id="flowSpan137377">start</flowSpan> and also       additional sections with more returns and non-breaking spaces, which need to be tested.</flowPara><flowPara
+ id="flowPara139442"
+ style="font-size:21.3333px" /><flowPara
+ id="flowPara139444"
+ style="font-size:21.3333px">Hershey Text v 3.0 for Inkscape</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot7"
+ style="font-style:normal;font-weight:normal;font-size:18.6667px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.1405"
+ transform="matrix(0.84457622,0,0,0.9067526,47.462564,44.570655)"><flowRegion
+ id="flowRegion9"
+ style="font-size:18.6667px;stroke-width:1.1405"><rect
+ id="rect11"
+ width="668.19922"
+ height="424.13794"
+ x="-0.38314176"
+ y="1.5294836"
+ style="font-size:18.66666603px;stroke-width:1.14049613" /></flowRegion><flowPara
+ style="stroke-width:1.1405"
+ id="flowPara21846">This is an SVG document provided as an input for testing the Hershey Text extension.</flowPara><flowPara
+ id="flowPara11629"
+ style="stroke-width:1.1405" /><flowPara
+ style="stroke-width:1.1405"
+ id="flowPara21848">The purpose of this new extension is to take a block of flowed text, and replace it with stroke-based engraving fonts. It includes a small selection of such fonts, which need to be in the SVG format. Technically, it can work with any SVG font, even ones that are not stroke-based.</flowPara><flowPara
+ id="flowPara24515"
+ style="stroke-width:1.1405" /><flowPara
+ id="flowPara24517"
+ style="stroke-width:1.1405">This text is in the DOCUMENT ROOT.</flowPara></flowRoot> <flowRoot
+ transform="matrix(2.874615,0,0,2.874615,214.65182,-1167.0132)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.347873px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ id="flowRoot15954"
+ xml:space="preserve"><flowRegion
+ id="flowRegion15950"
+ style="font-family:sans-serif;stroke-width:0.347873px"><rect
+ y="396.44882"
+ x="269.13397"
+ height="267.5224"
+ width="441.57312"
+ id="rect15948"
+ style="font-family:HersheyScript1;stroke-width:0.34787267px" /></flowRegion><flowPara
+ id="flowPara15952"
+ style="font-size:20px;line-height:10;font-family:HersheyScript1;stroke-width:0.347873px">Scripty text</flowPara></flowRoot> <flowRoot
+ xml:space="preserve"
+ id="flowRoot15962"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0.01%;font-family:sans-serif;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.347873px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ transform="matrix(2.874615,0,0,2.874615,214.65182,-1078.1242)"><flowRegion
+ style="font-family:sans-serif;stroke-width:0.347873px"
+ id="flowRegion15958"><rect
+ style="font-family:EMSAllure;stroke-width:0.34787267px"
+ id="rect15956"
+ width="441.57312"
+ height="267.5224"
+ x="269.13397"
+ y="396.44882" /></flowRegion><flowPara
+ style="font-size:20px;line-height:10;font-family:EMSAllure;stroke-width:0.347873px"
+ id="flowPara15960">Hand-written text</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:63.1208px;line-height:125%;font-family:'Brandon Text';-inkscape-font-specification:'Brandon Text';font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:0px;word-spacing:0px;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;opacity:1;vector-effect:none;fill:#636365;fill-opacity:1;stroke:none;stroke-width:0.937499;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ x="503.58365"
+ y="1437.5557"
+ id="text5500"><tspan
+ sodipodi:role="line"
+ id="tspan5498"
+ x="503.58365"
+ y="1437.5557"
+ style="font-size:32.7786px;stroke-width:0.937499">Non-Flowed<tspan
+ style="font-size:87.4095px;stroke-width:0.937499"
+ id="tspan5504">S<tspan
+ style="font-size:15px;stroke-width:0.937499"
+ id="tspan40244">tyle</tspan>s</tspan>To<tspan
+ style="font-size:87.4095px;stroke-width:0.937499"
+ id="tspan5506">Check</tspan></tspan></text>
+ <text
+ id="text4781-0"
+ y="268.83087"
+ x="616.64929"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:24.279px;line-height:1.25;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.51744"
+ xml:space="preserve"><tspan
+ style="stroke-width:1.51744"
+ sodipodi:role="line"
+ id="tspan7325">Multi-line</tspan><tspan
+ style="stroke-width:1.51744"
+ sodipodi:role="line"
+ id="tspan7327">Text created</tspan><tspan
+ style="stroke-width:1.51744"
+ sodipodi:role="line"
+ id="tspan7329">Without x and y</tspan><tspan
+ style="stroke-width:1.51744"
+ sodipodi:role="line"
+ id="tspan7331">but with sodipodi:role</tspan><tspan
+ style="stroke-width:1.51744"
+ sodipodi:role="line"
+ id="tspan7333">attributes instead.</tspan></text>
+ <text
+ id="text56417"
+ y="264.82803"
+ x="379.84662"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:15.953px;line-height:1.25;font-family:Sans;-inkscape-font-specification:'Sans, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.997064"
+ xml:space="preserve"><tspan
+ sodipodi:role="line"
+ id="tspan56407"
+ x="379.84662"
+ y="264.82803"
+ style="stroke-width:0.997064">Multi-line</tspan><tspan
+ sodipodi:role="line"
+ id="tspan56409"
+ x="379.84662"
+ y="284.76929"
+ style="stroke-width:0.997064">Text created</tspan><tspan
+ sodipodi:role="line"
+ id="tspan56411"
+ x="379.84662"
+ y="304.71054"
+ style="stroke-width:0.997064">with tspan elements</tspan><tspan
+ sodipodi:role="line"
+ id="tspan56413"
+ x="379.84662"
+ y="324.65179"
+ style="stroke-width:0.997064">and x and y</tspan><tspan
+ sodipodi:role="line"
+ id="tspan56415"
+ x="379.84662"
+ y="344.59305"
+ style="stroke-width:0.997064">positions</tspan></text>
+</svg>
diff --git a/share/extensions/tests/data/svg/hershey_trivial_input.svg b/share/extensions/tests/data/svg/hershey_trivial_input.svg
new file mode 100755
index 0000000..946a616
--- /dev/null
+++ b/share/extensions/tests/data/svg/hershey_trivial_input.svg
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 744.09448819 1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="1.0alpha (8a5469a, 2019-05-29)"
+ sodipodi:docname="hershey_trivial_input.svg">
+ <style
+ id="style19"></style>
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ inkscape:document-rotation="0"
+ inkscape:window-maximized="0"
+ inkscape:window-y="23"
+ inkscape:window-x="0"
+ inkscape:window-height="993"
+ inkscape:window-width="1535"
+ showgrid="false"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="px"
+ inkscape:cy="256.44843"
+ inkscape:cx="217.50453"
+ inkscape:zoom="3.964414"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(-13.816235,24.138247)"
+ id="use1116"
+ xlink:href="#A"
+ y="0"
+ x="0" />
+ <use
+ height="100%"
+ width="100%"
+ transform="translate(-10.028187,24.138247)"
+ id="use1118"
+ xlink:href="#B"
+ y="0"
+ x="0" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#text31"
+ id="DEAD-LINK"
+ transform="translate(10.292023,-24.880699)"
+ width="100%"
+ height="100%"
+ style="fill:#ffffff;fill-opacity:0" />
+ <flowRoot
+ transform="translate(-18.75)"
+ xml:space="preserve"
+ id="A"
+ style="font-style:normal;font-weight:normal;font-size:37.5px;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:#e10000;stroke-width:0.9375;stroke-opacity:1"><flowRegion
+ id="flowRegion23"
+ style="fill:#ffffff;fill-opacity:1;stroke:#e10000;stroke-width:0.9375;stroke-opacity:1"><rect
+ id="rect25"
+ width="121.08263"
+ height="52.065529"
+ x="182.22934"
+ y="166.4886"
+ style="fill:#ffffff;fill-opacity:1;stroke:#e10000;stroke-width:0.878906;stroke-opacity:1" /></flowRegion><flowPara
+ style="stroke-width:0.9375"
+ id="flowPara27">Flow</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:37.50000000000000000px;font-family:sans-serif;fill:#ffffff;fill-opacity:1;stroke:#e10000;stroke-width:0.9375;stroke-opacity:1;"
+ x="156.80199"
+ y="308.15527"
+ id="B"><tspan
+ sodipodi:role="line"
+ id="tspan29"
+ x="156.80199"
+ y="308.15527"
+ style="fill:#ffffff;fill-opacity:1;stroke:#e10000;stroke-width:0.9375;stroke-opacity:1;">Text</tspan></text>
+ <use
+ x="0"
+ y="0"
+ xlink:href="#A"
+ id="use1120"
+ transform="translate(13.816235,-24.138247)"
+ width="100%"
+ height="100%" />
+ <use
+ x="0"
+ y="0"
+ xlink:href="#B"
+ id="use1122"
+ transform="translate(9.8485053,-24.138247)"
+ width="100%"
+ height="100%" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/hpgl_multipen.svg b/share/extensions/tests/data/svg/hpgl_multipen.svg
new file mode 100644
index 0000000..d27add9
--- /dev/null
+++ b/share/extensions/tests/data/svg/hpgl_multipen.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ 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"
+ width="210mm"
+ height="297mm"
+ viewBox="0 0 210 297">
+ <g
+ inkscape:label="pen1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="fill:none;stroke:#ff0000"
+ width="19.938889"
+ height="21.119028"
+ x="39.029922"
+ y="7.9519877" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Pen 2 ">
+ <rect
+ style="fill:none;stroke:#ff0000"
+ width="19.938889"
+ height="21.119028"
+ x="68.276741"
+ y="7.9519863" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="pEn3">
+ <rect
+ style="fill:none;stroke:#ff0000"
+ width="19.938889"
+ height="21.119028"
+ x="10.536871"
+ y="7.9519877" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/images.svg b/share/extensions/tests/data/svg/images.svg
new file mode 100644
index 0000000..3af6c56
--- /dev/null
+++ b/share/extensions/tests/data/svg/images.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="images.svg"
+ inkscape:version="1.0alpha2 (52cc60498f, 2019-06-14)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 0.79374997 0.79375003"
+ height="3"
+ width="3">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ units="px"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer1"
+ inkscape:document-units="px"
+ inkscape:cy="4.3003663"
+ inkscape:cx="6.7289885"
+ inkscape:zoom="44.500568"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <image
+ xlink:href="img/green.png"
+ y="0.26458332"
+ x="0.26458332"
+ width="0.26458332"
+ height="0.26458332"
+ preserveAspectRatio="none"
+ id="image174"
+ style="opacity:1;stop-opacity:1" />
+
+ <image
+ style="opacity:1;stop-opacity:1"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACXBIWXMAAAxOAAAMTgF/d4wjAAAA
+GXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAA1JREFUCJljMEld8h8ABEsCPWzH
+RAsAAAAASUVORK5CYII=
+"
+ height="0.31750003"
+ width="0.31750003"
+ x="0.38895562"
+ y="0.38188145"
+ id="embeded_image01" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/img/green.png b/share/extensions/tests/data/svg/img/green.png
new file mode 100644
index 0000000..bb606ff
--- /dev/null
+++ b/share/extensions/tests/data/svg/img/green.png
Binary files differ
diff --git a/share/extensions/tests/data/svg/inkweb-debug.js b/share/extensions/tests/data/svg/inkweb-debug.js
new file mode 100644
index 0000000..a79c460
--- /dev/null
+++ b/share/extensions/tests/data/svg/inkweb-debug.js
@@ -0,0 +1,367 @@
+/*
+** InkWeb Debugger - help the development with InkWeb.
+**
+** Copyright (C) 2009 Aurelio A. Heckert, aurium (a) gmail dot com
+**
+** ********* Bugs and New Fetures *************************************
+** If you found any bug on this script or if you want to propose a
+** new feature, please report it in the inkscape bug tracker
+** https://bugs.launchpad.net/inkscape/+filebug
+** and assign that to Aurium.
+** ********************************************************************
+**
+** This program is free software: you can redistribute it and/or modify
+** it under the terms of the GNU Lesser General Public License as published
+** by the Free Software Foundation, either version 3 of the License, or
+** (at your option) any later version.
+**
+** This program is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+** GNU Lesser General Public License for more details.
+**
+** You should have received a copy of the GNU Lesser General Public License
+** along with this program. If not, see <http://www.gnu.org/licenses/>.
+**
+** ********************************************************************
+**
+** This script extends InkWeb with methods like log() and viewProperties().
+** So, you must to call this script after the inkweb.js load.
+*/
+
+InkWeb.debugVersion = 0.1;
+
+// Prepare InkWeb Debug:
+(function (bli, xyz) {
+ // Add logging calls to all InkWeb methods:
+ for ( var att in InkWeb ) {
+ if ( typeof(InkWeb[att]) == "function" ) {
+ var code = InkWeb[att].toString()
+ beforeCode = 'this.log(this.__callMethodInfo("'+att+'", arguments));\ntry {';
+ afterCode = '} catch(e) { this.log( e, "Ups... There is a problem in InkWeb.'+att+'()" ) }';
+ code = code
+ .replace( /^(function [^{]+[{])/, "$1\n"+ beforeCode +"\n" )
+ .replace( /[}]$/, ";\n"+ afterCode +"\n}" );
+ eval( "InkWeb."+att+" = "+ code );
+ //alert( InkWeb[att] )
+ }
+ }
+})(123,456);
+
+InkWeb.__callMethodInfo = function (funcName, arg) {
+ var func = arg.callee;
+ var str = 'Called InkWeb.'+funcName+'() with:'
+ if ( ! func.argList ) {
+ func.argList = func.toString()
+ .replace( /^function [^(]*\(([^)]*)\)(.|\s)*$/, "$1" )
+ .split( /,\s*/ );
+ }
+ for ( var a,i=0; a=func.argList[i]; i++ ) {
+ str += "\n"+ a +" = "+ this.serialize( arg[i], {recursionLimit:2} );
+ }
+ return str;
+}
+
+
+InkWeb.copySerializeConf = function (conf) {
+ return {
+ recursionStep: conf.recursionStep,
+ recursionLimit: conf.recursionLimit,
+ showTagElements: conf.showTagElements
+ }
+}
+
+InkWeb.serialize = function (v, conf) {
+ try {
+ if ( ! conf ) { conf = {} }
+ if ( ! conf.showTagElements ) { conf.showTagElements = false }
+ if ( ! conf.recursionLimit ) { conf.recursionLimit = 10 }
+ if ( ! conf.recursionStep ) { conf.recursionStep = 0 }
+ if ( conf.recursionLimit == 0 ) {
+ return '"<<recursion limit>>"';
+ }
+ conf.recursionLimit--;
+ conf.recursionStep++;
+ switch ( typeof(v) ) {
+ case "undefined":
+ v = "undefined";
+ break;
+ case "string":
+ v = '"'+ v
+ .replace( /\n/g, "\\n" )
+ .replace( /\r/g, "\\r" )
+ .replace( /\t/g, "\\t" )
+ .replace( /"/g, '"' ) +
+ '"';
+ break;
+ case "boolean":
+ case "number":
+ case "function":
+ v = v.toString();
+ break;
+ case "object":
+ if ( v == null ) {
+ v = "null";
+ } else {
+ if ( v.constructor == Array ) {
+ try {
+ v = this.__serializeArray(v, conf);
+ } catch(e) {
+ this.log( e, "InkWeb.serialize(): Forced recursion limit in" +
+ " recursionLimit="+ conf.recursionLimit +
+ " and recursionStep="+ conf.recursionStep
+ );
+ v += '"<<forced recursion limit>>"'
+ }
+ } else {
+ // A Hash Object
+ if ( v.tagName && ! conf.showTagElements ) {
+ // Tags are not allowed.
+ v = '"<'+ v.tagName +' id=\\"'+ v.id +'\\">"';
+ } else {
+ // Ok, serialize this object:
+ try {
+ v = this.__serializeObject(v, conf);
+ } catch(e) {
+ this.log( e, "InkWeb.serialize(): Forced recursion limit in" +
+ " recursionLimit="+ conf.recursionLimit +
+ " and recursionStep="+ conf.recursionStep
+ );
+ v += '"<<forced recursion limit>>"'
+ }
+ }
+ }
+ }
+ break;
+ default:
+ v = '"<<unknown type '+typeof(v)+' : '+v+'>>"';
+ }
+ return v;
+ } catch(e) {
+ this.log( e, "Ups... There is a problem in InkWeb.serialize()." );
+ }
+}
+
+InkWeb.__serializeArray = function (v, conf) {
+ try {
+ var vStr = "[ ";
+ var size = v.length;
+ for ( var i=0; i<size; i++ ) {
+ if ( i>0 ) { vStr += ", " }
+ vStr += this.serialize(v[i], this.copySerializeConf(conf));
+ }
+ return vStr +" ]";
+ } catch(e) {
+ this.log( e, "Ups... There is a problem in InkWeb.__serializeArray()." );
+ }
+}
+
+InkWeb.__serializeObject = function (obj, conf) {
+ try {
+ var vStr = "{ ";
+ var first = true;
+ for ( var att in obj ) {
+ if ( !first ) { vStr += ", " }
+ vStr += this.serialize(att) +':'+
+ this.serialize( obj[att], this.copySerializeConf(conf) );
+ first = false;
+ }
+ return vStr +" }";
+ } catch(e) {
+ this.log( e, "Ups... There is a problem in InkWeb.__serializeObject()." );
+ }
+}
+
+// Allow log configuration:
+InkWeb.mustLog = {
+ error: true,
+ warning: true,
+ sequence: true
+ };
+
+// This will keep the log information:
+InkWeb.__log__ = [];
+
+InkWeb.log = function (type, msg) {
+ /* This method register what was happen with InkWeb
+ ** ( if mustLog allows that )
+ **
+ ** --- Usage ---
+ ** this.log( <"sequence"|"warning"|"warn"|errorObject>, <"logMessage"> );
+ ** this.log( <"logMessage"> ); // only for sequences
+ **
+ ** --- Examples ---
+ ** Sequence log:
+ ** function foo (bar) {
+ ** InkWeb.log( 'Call function foo with argument bar="'+bar+'"' );
+ **
+ ** Warning log:
+ ** if ( foo == bar ) {
+ ** foo = other;
+ ** InkWeb.log( "warn", "foo must not be bar." );
+ **
+ ** Error log:
+ ** try { ... some hard thing ... }
+ ** catch (e) { InkWeb.log( e, "Trying to do some hard thing." ) }
+ */
+ if ( this.mustLog ) {
+ if( type.constructor == ReferenceError ) {
+ // in a error logging the type argument is the error object.
+ var error = type;
+ type = "error";
+ this.addViewLogBt();
+ }
+ if( type == "warn" ) {
+ // that allows a little simplify in the log call.
+ type = "warning";
+ }
+ if( msg == undefined ) {
+ // that allows to log a sequence without tos say the type.
+ msg = type;
+ type = "sequence";
+ }
+ var logSize = this.__log__.length
+ if ( logSize > 0 &&
+ this.__log__[logSize-1].type == type &&
+ this.__log__[logSize-1].msg == msg ) {
+ this.__log__[logSize-1].happens++
+ } else {
+ if ( type == "error" && this.mustLog.error ) {
+ this.__log__[logSize] = this.__logError( error, msg )
+ }
+ if ( type == "warning" && this.mustLog.warning ) {
+ this.__log__[logSize] = this.__logWarning( msg )
+ }
+ if ( type == "sequence" && this.mustLog.sequence ) {
+ this.__log__[logSize] = this.__logSequence( msg )
+ }
+ }
+ }
+}
+
+InkWeb.__logError = function ( error, msg ) {
+ return { type:"error", date:new Date(), msg:msg, error:error, happens:1 };
+}
+
+InkWeb.__logWarning = function ( msg ) {
+ return { type:"warning", date:new Date(), msg:msg, happens:1 };
+}
+
+InkWeb.__logSequence = function ( msg ) {
+ return { type:"sequence", date:new Date(), msg:msg, happens:1 };
+}
+
+InkWeb.logToString = function (conf) {
+ /* Show the log in a formatted string.
+ ** conf attributes:
+ ** format: a string to format the log items.
+ ** formatError: to format the error log items.
+ ** sep: the log items separator string.
+ ** format variables:
+ ** $F: the item date in the format YYYY-MM-DD
+ ** $T: the item time in the format HH:MM:SS
+ ** $type: the log type
+ ** $logmsg: the text argument in the log call
+ ** $times: how much times this item happens in sequence
+ ** $error: the error text (if this is a error item)
+ ** $index: the position of the item in the log list
+ ** $oddeven: return odd or even based in the index.
+ */
+ if (!conf) { conf = {} }
+ if (!conf.sep) { conf.sep = "\n\n" }
+ if (!conf.format) { conf.format = "$F $T - $type - $logmsg - Happens $times." }
+ if (!conf.formatError) { conf.formatError = "$F $T - ERROR - $logmsg - Happens $times.\n$error" }
+ /* * * Helper * * */
+ function _2d(num) {
+ return ( ( num < 10 )? "0"+num : ""+num )
+ }
+ function _2dMonth(date) {
+ var m = date.getMonth() + 1;
+ return _2d( m )
+ }
+ var str = "";
+ var logSize = this.__log__.length;
+ if ( logSize == 0 ) {
+ str = "There are no errors.";
+ }
+ // View all items to mount the log string:
+ for ( var item,pos=0; item=this.__log__[pos]; pos++ ) {
+ var d = item.date;
+ // Add log line, converting variables:
+ var line = ( (item.type=="error")? conf.formatError : conf.format );
+ str += line
+ .replace( /\$index/g, pos )
+ .replace( /\$oddeven/g, (pos%2 == 1)? "odd" : "even" )
+ .replace( /\$type/g, item.type )
+ .replace( /\$logmsg/g, item.msg )
+ .replace( /\$error/g, (item.error)? item.error.message : "" )
+ .replace( /\$times/g, (item.happens>1)? item.happens+" times" : "one time" )
+ .replace( /\$F/g, d.getFullYear() +"-"+ _2dMonth(d) +"-"+ _2d(d.getDate()) )
+ .replace( /\$T/g, _2d(d.getHours()) +":"+ _2d(d.getMinutes()) +":"+ _2d(d.getSeconds()) )
+ // Add separator:
+ if ( pos < (logSize-1) ) { str += conf.sep }
+ }
+ return str;
+}
+
+InkWeb.addViewLogBt = function () {
+ var svg = document.getElementsByTagName("svg")[0];
+ if ( this.__viewLogBt ) {
+ svg.appendChild( this.__viewLogBt );
+ } else {
+ var g = this.el( "g", { onclick: "InkWeb.openLogWindow()", parent: svg } );
+ var rect = this.el( "rect", { x: 10, y: 10, width: 60, height: 17, ry: 5,
+ style: "fill:#C00; stroke:#800; stroke-width:2",
+ parent: g } );
+ var text = this.el( "text", { x: 40, y: 22, text: "View Log",
+ style: "fill:#FFF; font-size:10px;" +
+ "font-family:sans-serif;" +
+ "text-anchor:middle; text-align:center",
+ parent: g } );
+ this.__viewLogBt = g;
+ }
+}
+
+InkWeb.__openFormatedWindow = function (bodyHTML) {
+ var win = window.open("","_blank","width=500,height=500,scrollbars=yes");
+ var html =
+ '<html><head><title>InkWeb</title>' +
+ '<style type="text/css">' +
+ 'body { font-family:sans-serif; font-size:12px; padding:5px; margin:0px; }' +
+ 'h1 { font-size:13px; text-align:center; }' +
+ '.error { color: #C00 }' +
+ '.warning { color: #B90 }' +
+ '.sequence { color: #06A }' +
+ 'table { border: 2px solid #ABC }' +
+ 'th, td { padding:1px 2px; font-size:12px }' +
+ 'th { text-align:center; background:#CCC; color:#FFF }' +
+ '.odd { background: #F0F0F0 }' +
+ '.even { background: #F8F8F8 }' +
+ '</style><body>'+ bodyHTML +'</body></html>';
+ win.document.write(html);
+ win.document.close();
+ return win;
+}
+
+InkWeb.openLogWindow = function () {
+ var html = '<h1>InkWeb Log</h1>\n' +
+ '<table border="0" width="100%" cellpadding="2" cellspacing="0"><tr>\n' +
+ '<tr><th>Time</th><th>Message</th><th><small>Happens</small></th><tr>\n' +
+ this.logToString({
+ format: '<tr class="$type $oddeven" title="$type">' +
+ '<td>$T</td><td>$logmsg</td><td align="right">$times</td></tr>',
+ formatError: '<tr class="error $oddeven" title="ERROR">' +
+ '<td>$T</td><td>$logmsg</td><td align="right">$times</td></tr>\n'+
+ '<tr class="error $oddeven"><td colspan="3"><code>$error</code></td></tr>',
+ sep: '\n</tr><tr>\n'
+ }) +
+ '\n</tr></table>'
+ var win = this.__openFormatedWindow( html );
+ win.document.title = "InkWeb Log"
+}
+
+
+InkWeb.viewProperties = function () {
+ // Display object properties.
+ this.__openFormatedWindow( "coming soon..." );
+}
diff --git a/share/extensions/tests/data/svg/inkwebjs-move.svg b/share/extensions/tests/data/svg/inkwebjs-move.svg
new file mode 100644
index 0000000..b4aa50f
--- /dev/null
+++ b/share/extensions/tests/data/svg/inkwebjs-move.svg
@@ -0,0 +1,128 @@
+<svg
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ width="800" height="450">
+ <style type="text/css">
+ text { font-family:sans-serif; font-size:11px; text-anchor:middle; text-align:center }
+ .title tspan { font-weight: bold }
+ .pos { opacity: 0.3 }
+ .started { fill:#C80 }
+ </style>
+ <script type="text/javascript" xlink:href="../inkweb.js" />
+ <script type="text/javascript" xlink:href="inkweb-debug.js" />
+ <rect x="0%" y="0%" width="100%" height="100%" style="fill:#EEE; stroke:#999; stroke-width:4px" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-1" x="125" y="26" class="title">
+ <tspan>Test 1</tspan> - from left to right </text>
+ <text class="pos" x="80" y="80"> Start </text>
+ <circle id="t1-start" cx="80" cy="50" r="20" fill="#C00" opacity="0.2" />
+ <text class="pos" x="170" y="80"> End </text>
+ <circle id="t1-end" cx="170" cy="50" r="20" fill="#C00" opacity="0.2" />
+ <!-- The element to move -->
+ <circle id="t1-elem" cx="80" cy="50" r="20" fill="#C00" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-2" x="325" y="26" class="title">
+ <tspan>Test 2</tspan> - from right to left</text>
+ <text class="pos" x="370" y="80"> Start </text>
+ <circle id="t2-start" cx="370" cy="50" r="20" fill="#0A0" opacity="0.2" />
+ <text class="pos" x="280" y="80"> End </text>
+ <circle id="t2-end" cx="280" cy="50" r="20" fill="#0A0" opacity="0.2" />
+ <!-- The element to move -->
+ <circle id="t2-elem" cx="370" cy="50" r="20" fill="#0A0" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-3" x="125" y="120" class="title">
+ <tspan>Test 3</tspan> - pre-translated </text>
+ <text class="pos" x="80" y="190"> Start </text>
+ <path id="t3-start" fill="#C00" opacity="0.2" transform="translate(30,10)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <text class="pos" x="170" y="190"> End </text>
+ <path id="t3-end" fill="#C00" opacity="0.2" transform="translate(120,10)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <!-- The element to move -->
+ <path id="t3-elem" fill="#C00" transform="translate(30,10)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-4" x="350" y="120" class="title">
+ <tspan>Test 4</tspan> - pre-translated and scaled </text>
+ <text class="pos" x="300" y="190"> Start </text>
+ <path id="t4-start" fill="#C00" opacity="0.2"
+ transform="translate(235,-45) scale(1.4)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <text class="pos" x="400" y="190"> End </text>
+ <path id="t4-end" fill="#C00" opacity="0.2"
+ transform="translate(335,-45) scale(1.4)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <!-- The element to move -->
+ <path id="t4-elem" fill="#C00"
+ transform="translate(235,-45) scale(1.4)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-5" x="600" y="120" class="title">
+ <tspan>Test 5</tspan> - pre-translated and rotated </text>
+ <text class="pos" x="550" y="190"> Start </text>
+ <path id="t5-start" fill="#C00" opacity="0.2"
+ transform="translate(500,0) rotate(-15 90 140)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <text class="pos" x="650" y="190"> End </text>
+ <path id="t5-end" fill="#C00" opacity="0.2"
+ transform="translate(600,0) rotate(-15 90 140)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <!-- The element to move -->
+ <path id="t5-elem" fill="#C00"
+ transform="translate(500,0) rotate(-15 90 140)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <text id="test-6" x="125" y="220" class="title">
+ <tspan>Test 6</tspan> - with a transformation matrix </text>
+ <text class="pos" x="80" y="290"> Start </text>
+ <path id="t6-start" fill="#C00" opacity="0.2"
+ transform="matrix(1.2 0 -0.5 1.2 95 80)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <text class="pos" x="170" y="290"> End </text>
+ <path id="t6-end" fill="#C00" opacity="0.2"
+ transform="matrix(1.2 0 -0.5 1.2 185 80)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+ <!-- The element to move -->
+ <path id="t6-elem" fill="#C00"
+ transform="matrix(1.2 0 -0.5 1.2 95 80)"
+ d="M30,130 L60,130 L60,120 L70,140 L60,160 L60,150 L30,150" />
+
+ <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
+
+ <script type="text/javascript">
+
+ var titles = document.getElementsByClassName("title")
+ for ( var title,i=0; title=titles[i]; i++ ) {
+ title.className.baseVal += " started";
+ testeNum = title.id.replace( /^.*-/, "" );
+ var el = document.getElementById( "t"+testeNum+"-elem" );
+ var start = document.getElementById( "t"+testeNum+"-start" ).getBBox();
+ var end = document.getElementById( "t"+testeNum+"-end" ).getBBox();
+ InkWeb.moveElTo( { el:el, x:end.x, y:end.y } );
+ }
+
+ function testLog() {
+ try{ foo.lalala() }
+ catch(e){ InkWeb.log(e, "foo.lalala() is wrong?") }
+
+ InkWeb.log("This is a sequence log.");
+
+ InkWeb.log("warn", "Warning! Warning!!!");
+ }
+ setTimeout("testLog()", 2000);
+
+ </script>
+
+</svg>
diff --git a/share/extensions/tests/data/svg/interp_shapes.svg b/share/extensions/tests/data/svg/interp_shapes.svg
new file mode 100644
index 0000000..eaff106
--- /dev/null
+++ b/share/extensions/tests/data/svg/interp_shapes.svg
@@ -0,0 +1,210 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="412.29788mm"
+ height="582.05017mm"
+ viewBox="0 0 412.29789 582.05017"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="interp_shapes.svg">
+ <defs
+ id="defs2">
+ <linearGradient
+ id="linearGradient877"
+ inkscape:collect="always">
+ <stop
+ id="stop873"
+ offset="0"
+ style="stop-color:#008000;stop-opacity:1" />
+ <stop
+ style="stop-color:#7b0000;stop-opacity:1"
+ offset="0.48378384"
+ id="stop879" />
+ <stop
+ id="stop875"
+ offset="1"
+ style="stop-color:rgb(0, 0, 255);stop-opacity:1" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ id="linearGradient845">
+ <stop
+ style="stop-color:#008000;stop-opacity:1"
+ offset="0"
+ id="stop841" />
+ <stop
+ style="stop-color:blue;stop-opacity:1"
+ offset="1"
+ id="stop843" />
+ </linearGradient>
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient845"
+ id="linearGradient847"
+ x1="13.096875"
+ y1="138.45702"
+ x2="13.096875"
+ y2="104.24652"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(4.4701433,54.879607)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient845"
+ id="linearGradient855"
+ x1="184.80772"
+ y1="102.37889"
+ x2="184.80772"
+ y2="136.77472"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(151.22404,57.492066)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient845"
+ id="linearGradient863"
+ x1="-1.3985118"
+ y1="176.12321"
+ x2="40.708035"
+ y2="176.12321"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(-1.9554488,127.31579)" />
+ <linearGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient877"
+ id="linearGradient871"
+ x1="175.11636"
+ y1="193.24553"
+ x2="205.50565"
+ y2="154.314"
+ gradientUnits="userSpaceOnUse"
+ gradientTransform="translate(155.045,129.47026)" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient877"
+ id="radialGradient887"
+ cx="16.167852"
+ cy="249.2552"
+ fx="16.167852"
+ fy="249.2552"
+ r="36.377525"
+ gradientTransform="matrix(1,0,0,0.99765142,1.5314531,204.30066)"
+ gradientUnits="userSpaceOnUse" />
+ <radialGradient
+ inkscape:collect="always"
+ xlink:href="#linearGradient845"
+ id="radialGradient897"
+ cx="193.54523"
+ cy="249.20023"
+ fx="193.54523"
+ fy="249.20023"
+ r="39.397575"
+ gradientTransform="matrix(1,0,0,1.0243274,150.67686,197.70785)"
+ gradientUnits="userSpaceOnUse" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.24748737"
+ inkscape:cx="960.55908"
+ inkscape:cy="968.73534"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1016"
+ inkscape:window-x="0"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ fit-margin-top="5"
+ fit-margin-left="5"
+ fit-margin-right="5"
+ fit-margin-bottom="5" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(23.678219,83.72371)">
+ <path
+ style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 9.7209163,-78.632799 25.595916,-61.850656 9.7209163,-44.236966"
+ id="path1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#0000ff;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 352.20047,-78.632799 -15.87499,16.782143 15.87499,17.61369"
+ id="path2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#ff0000;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 9.7209153,40.095939 25.595916,56.878079 9.7209153,74.491769"
+ id="path4"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:#0000ff;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 361.41883,49.314289 344.63669,65.189299 327.023,49.314289"
+ id="path3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:url(#linearGradient855);stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 336.13003,159.30516 15.87501,16.78216 -15.87501,17.61369"
+ id="path6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:url(#linearGradient847);stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 17.699306,158.73377 v 35.52977"
+ id="path5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;vector-effect:none;fill:url(#linearGradient863);fill-opacity:1;stroke:#000000;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="M -3.0893787,283.40627 H 38.487996 v 40.06548 H -3.0893787 Z"
+ id="path8"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;vector-effect:none;fill:url(#linearGradient871);fill-opacity:1;stroke:#000000;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ d="m 368.97953,303.43901 a 24.757439,24.757439 0 0 1 -24.75744,24.75744 24.757439,24.757439 0 0 1 -24.75745,-24.75744 24.757439,24.757439 0 0 1 24.75745,-24.75744 24.757439,24.757439 0 0 1 24.75744,24.75744 z"
+ id="path7"
+ inkscape:connector-curvature="0" />
+ <path
+ style="opacity:1;vector-effect:none;fill:url(#radialGradient887);fill-opacity:1;stroke:#000000;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ inkscape:transform-center-x="0.84107606"
+ inkscape:transform-center-y="1.0141478"
+ d="m 22.320142,488.998 -12.6461927,-12.53232 -17.7372665,1.54089 1.9133905,-17.70096 -12.2637243,-12.90683 15.0321443,-9.54043 2.44466997,-17.63543 16.83138573,5.80424 15.312163,-9.0842 5.95626,16.7782 16.64929,6.30763 -9.40406,15.11782 5.44916,16.94968 -17.68292,2.07343 z"
+ id="path9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:url(#radialGradient897);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.26458332"
+ d="m 340.42091,452.01132 c 1.00441,2.06568 -2.28895,2.37306 -3.43329,1.6694 -3.10108,-1.90688 -2.15382,-6.39585 0.0945,-8.53597 4.02172,-3.82817 10.46972,-2.21056 13.63864,1.8584 4.65051,5.97136 2.2891,14.60614 -3.62229,18.74132 -7.87896,5.51154 -18.76571,2.37814 -23.844,-5.38619 -6.3905,-9.77061 -2.47286,-22.93654 7.15008,-28.94667 11.65466,-7.27907 27.11377,-2.5709 34.04935,8.91397 8.17333,13.53453 2.67105,31.295 -10.67787,39.15203 -15.41185,9.07125 -35.47888,2.77259 -44.2547,-12.44176 -9.97164,-17.28752 -2.87512,-39.66464 14.20565,-49.35738 19.16204,-10.87379 43.85176,-2.97835 54.46006,15.96955 11.77722,21.03575 3.0821,48.03989 -17.73344,59.56273"
+ id="path10"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/markers.svg b/share/extensions/tests/data/svg/markers.svg
new file mode 100644
index 0000000..bf9ca6f
--- /dev/null
+++ b/share/extensions/tests/data/svg/markers.svg
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg893"
+ height="106.22343"
+ width="159.59895"
+ version="1.1">
+ <defs
+ id="defs4">
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lend"
+ refX="0"
+ refY="0"
+ orient="auto">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2112" />
+ </marker>
+ <marker
+ style="overflow:visible"
+ id="Arrow1Lstart"
+ refX="0"
+ refY="0"
+ orient="auto">
+ <path
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path2109" />
+ </marker>
+ </defs>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path
+ id="dimension"
+ d="M 1.6186702,105.1461 157.98028,1.0773298"
+ style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00157;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Lstart);marker-end:url(#Arrow1Lend)" />
+</svg>
diff --git a/share/extensions/tests/data/svg/mesh.svg b/share/extensions/tests/data/svg/mesh.svg
new file mode 100644
index 0000000..cbf42af
--- /dev/null
+++ b/share/extensions/tests/data/svg/mesh.svg
@@ -0,0 +1,240 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ width="129.46957mm"
+ height="244.53642mm"
+ viewBox="0 0 129.46958 244.53642"
+ version="1.1"
+ id="svg8"
+ inkscape:version="1.0alpha2 (7d0ce1c2cf, 2019-07-29)"
+ sodipodi:docname="mesh.svg">
+ <defs
+ id="defs2">
+ <meshgradient
+ gradientTransform="translate(-8.0786691,-69.306275)"
+ inkscape:collect="always"
+ id="meshgradient136"
+ gradientUnits="userSpaceOnUse"
+ x="53.027382"
+ y="82.673904">
+ <meshrow
+ id="meshrow12882">
+ <meshpatch
+ id="meshpatch12884">
+ <stop
+ path="c 14.3267,0 28.6534,0 42.9801,0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12886" />
+ <stop
+ path="c 0,12.4193 -5.49795,38.9296 -5.49795,51.349"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12888" />
+ <stop
+ path="c -14.3267,0.000304944 -23.1553,-14.0909 -37.482,-14.0909"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12890" />
+ <stop
+ path="c 0,-12.4193 0,-24.8387 -0.00015,-37.2581"
+ style="stop-color:#75507b;stop-opacity:1"
+ id="stop12892" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12894">
+ <stop
+ path="c 14.3267,0 28.6534,0 42.9801,0"
+ id="stop12896" />
+ <stop
+ path="c 0,12.4193 15.5319,9.66032 15.5319,22.0797"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12898" />
+ <stop
+ path="c -14.3267,-7.11184e-05 -49.6832,29.2692 -64.01,29.2693"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12900" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12902">
+ <stop
+ path="c 14.3267,0 28.6534,0 42.9801,0"
+ id="stop12904" />
+ <stop
+ path="c 0,12.4193 0,24.8387 0,37.258"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12906" />
+ <stop
+ path="c -14.3267,0 -13.1216,-15.1784 -27.4482,-15.1783"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12908" />
+ </meshpatch>
+ </meshrow>
+ <meshrow
+ id="meshrow12910">
+ <meshpatch
+ id="meshpatch12912">
+ <stop
+ path="c 1.67781e-05,12.4193 26.2868,-1.18414 13.4216,12.5447"
+ id="stop12914" />
+ <stop
+ path="c -15.0543,14.5253 -36.577,10.6222 -50.9037,10.6222"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12916" />
+ <stop
+ path="c 0,-12.4193 0,-24.8387 0.0001,-37.2578"
+ style="stop-color:#5c3566;stop-opacity:1"
+ id="stop12918" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12920">
+ <stop
+ path="c -3.49494e-05,12.4193 1.58657,32.3389 1.58667,44.7583"
+ id="stop12922" />
+ <stop
+ path="c -14.3267,-1.01513e-05 -37.8486,-2.94455 -52.175,-2.9443"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12924" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12926">
+ <stop
+ path="c 0,12.4193 0,24.8387 0,37.258"
+ id="stop12928" />
+ <stop
+ path="c -14.3267,0 -11.5349,-7.67804 -25.8615,-7.678"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12930" />
+ </meshpatch>
+ </meshrow>
+ <meshrow
+ id="meshrow12932">
+ <meshpatch
+ id="meshpatch12934">
+ <stop
+ path="c 2.62829e-06,12.4193 -7.92356,35.461 -7.92356,47.8803"
+ id="stop12936" />
+ <stop
+ path="c -14.3267,0 -28.6534,0 -42.9801,0"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12938" />
+ <stop
+ path="c 0,-12.4193 0,-24.8387 -4e-05,-37.2581"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12940" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12942">
+ <stop
+ path="c -0.000121655,12.4193 -17.1186,32.5167 -17.1186,44.936"
+ id="stop12944" />
+ <stop
+ path="c -14.3267,0 -28.6534,0 -42.98,0"
+ style="stop-color:#204a87;stop-opacity:1"
+ id="stop12946" />
+ </meshpatch>
+ <meshpatch
+ id="meshpatch12948">
+ <stop
+ path="c 0,12.4193 0,24.8387 0,37.258"
+ id="stop12950" />
+ <stop
+ path="c -14.3267,0 -28.6534,0 -42.9801,-2.84217e-14"
+ style="stop-color:#ffffff;stop-opacity:1"
+ id="stop12952" />
+ </meshpatch>
+ </meshrow>
+ </meshgradient>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.32385032"
+ inkscape:cx="231.11511"
+ inkscape:cy="510.47668"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ inkscape:document-rotation="0"
+ showgrid="false" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(-44.684128,-13.103047)"
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="vector-effect:none;fill:url(#meshgradient136);fill-opacity:1;stroke:#204a87;stroke-width:0.529167;stop-color:#000000"
+ id="mesh1"
+ width="128.94041"
+ height="111.77415"
+ x="44.948711"
+ y="13.36763" />
+ <g
+ id="paths"
+ transform="translate(-8.0787795,63.059177)">
+ <path
+ id="path1"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 53.0274,82.6739 c 14.3267,0 28.6534,0 42.9801,0 0,12.4193 -5.498,38.9301 -5.498,51.3491 -14.3267,0 -23.1553,-14.091 -37.482,-14.091 0,-12.419 0,-24.8387 -1e-4,-37.2581 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path2"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 96.0075,82.6739 c 14.3265,0 28.6535,0 42.9805,0 0,12.4193 15.531,9.6603 15.531,22.0801 -14.326,0 -49.683,29.269 -64.0095,29.269 0,-12.419 5.498,-38.9298 5.498,-51.3491 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path3"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 138.988,82.6739 c 14.326,0 28.653,0 42.98,0 0,12.4193 0,24.8391 0,37.2581 -14.327,0 -13.122,-15.178 -27.449,-15.178 0,-12.4198 -15.531,-9.6608 -15.531,-22.0801 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path4"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 53.0275,119.932 c 14.3267,0 23.1553,14.091 37.482,14.091 0,12.419 26.2865,-1.184 13.4215,12.545 -15.0542,14.525 -36.5769,10.622 -50.9036,10.622 0,-12.419 0,-24.839 1e-4,-37.258 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path5"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 90.5095,134.023 c 14.3265,0 49.6835,-29.269 64.0095,-29.269 0,12.419 1.587,32.339 1.587,44.758 -14.327,0 -37.848,-2.945 -52.175,-2.944 12.865,-13.729 -13.4215,-0.126 -13.4215,-12.545 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path6"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 154.519,104.754 c 14.327,0 13.122,15.178 27.449,15.178 0,12.419 0,24.839 0,37.258 -14.327,0 -11.535,-7.678 -25.862,-7.678 0,-12.419 -1.587,-32.339 -1.587,-44.758 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 53.0274,157.19 c 14.3267,0 35.8494,3.903 50.9036,-10.622 0,12.419 -7.9234,35.461 -7.9234,47.88 -14.3267,0 -28.6534,0 -42.9801,0 0,-12.419 0,-24.839 -1e-4,-37.258 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path8"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 103.931,146.568 c 14.327,-0.001 37.848,2.944 52.175,2.944 0,12.419 -17.118,32.517 -17.118,44.936 -14.327,0 -28.654,0 -42.9804,0 0,-12.419 7.9234,-35.461 7.9234,-47.88 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path9"
+ style="fill:none;stroke:#000000;stroke-width:0.264583"
+ d="m 156.106,149.512 c 14.327,0 11.535,7.678 25.862,7.678 0,12.419 0,24.839 0,37.258 -14.327,0 -28.654,0 -42.98,0 0,-12.419 17.118,-32.517 17.118,-44.936 z"
+ inkscape:connector-curvature="0" />
+ </g>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/minimal-blank-prepare.svg b/share/extensions/tests/data/svg/minimal-blank-prepare.svg
new file mode 100644
index 0000000..1fc27fb
--- /dev/null
+++ b/share/extensions/tests/data/svg/minimal-blank-prepare.svg
@@ -0,0 +1 @@
+<svg width="100" height="100"></svg>
diff --git a/share/extensions/tests/data/svg/minimal-blank.svg b/share/extensions/tests/data/svg/minimal-blank.svg
new file mode 100644
index 0000000..1fc27fb
--- /dev/null
+++ b/share/extensions/tests/data/svg/minimal-blank.svg
@@ -0,0 +1 @@
+<svg width="100" height="100"></svg>
diff --git a/share/extensions/tests/data/svg/multilayered-test.svg b/share/extensions/tests/data/svg/multilayered-test.svg
new file mode 100644
index 0000000..c02d4ee
--- /dev/null
+++ b/share/extensions/tests/data/svg/multilayered-test.svg
@@ -0,0 +1,156 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48+devel "
+ sodipodi:docname="Nouveau document 1">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="30.714286"
+ inkscape:cy="520"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ inkscape:window-width="1251"
+ inkscape:window-height="670"
+ inkscape:window-x="119"
+ inkscape:window-y="69"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Bottom layer">
+ <g
+ id="g3930">
+ <path
+ class="oranger bee frog"
+ transform="matrix(-0.97176714,-0.23594199,0.23594199,-0.97176714,541.8979,1030.862)"
+ inkscape:transform-center-y="21.296232"
+ inkscape:transform-center-x="0.78818963"
+ d="M 431.42857,463.79076 283.13917,424.83761 166.98297,524.91176 158.20567,371.84296 27.135259,292.29647 170,236.6479 205.15023,87.411314 302.22279,206.0874 455.01724,193.40062 372.14664,322.39504 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.3436561"
+ sodipodi:arg1="0.71533758"
+ sodipodi:r2="115.44059"
+ sodipodi:r1="230.8812"
+ sodipodi:cy="312.36218"
+ sodipodi:cx="257.14285"
+ sodipodi:sides="5"
+ id="path3902"
+ style="fill:#ffccaa;fill-opacity:1"
+ sodipodi:type="star" />
+ <text
+ sodipodi:linespacing="125%"
+ class="frog apple"
+ id="text3926"
+ y="723.79077"
+ x="245.71429"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="723.79077"
+ x="245.71429"
+ id="tspan3928"
+ sodipodi:role="line">Bottom layer</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Middle layer">
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Middle sublayer">
+ <path
+ style="fill:#ffaaaa;fill-opacity:1"
+ d="m 522.85714,488.07648 c 0,73.37498 -71.63444,132.85715 -160,132.85715 -88.36556,0 -159.99999,-59.48217 -159.99999,-132.85715 0,-73.37497 71.63443,-132.85714 159.99999,-132.85714 88.36556,0 160,59.48217 160,132.85714 z"
+ id="path3900"
+ class="frog"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3918"
+ sodipodi:linespacing="125%"><textPath
+ xlink:href="#path3900"
+ id="textPath3923"><tspan
+ id="tspan3920">Middle sublayer</tspan></textPath></text>
+ </g>
+ <g
+ id="g3913"
+ transform="translate(8.5714286,-94.285711)">
+ <rect
+ y="406.64789"
+ x="162.85715"
+ height="134.28572"
+ width="385.71429"
+ id="rect3898"
+ class="apple frog"
+ style="fill:#cccccc;fill-opacity:1" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3909"
+ y="520.93365"
+ x="294.28571"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ xml:space="preserve"><tspan
+ y="520.93365"
+ x="294.28571"
+ id="tspan3911"
+ sodipodi:role="line">Middle layer</tspan></text>
+ </g>
+ </g>
+ <g
+ inkscape:label="Top Layer"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+ id="text3894"
+ sodipodi:linespacing="125%"><textPath
+ xlink:href="#path3904"
+ id="textPath3906"><tspan
+ id="tspan3896">Top layer</tspan></textPath></text>
+ <path
+ style="fill:#00d4aa;fill-opacity:1"
+ id="path3904"
+ d="m 199.54403,352.9691 c 33.89855,-23.39174 72.10651,-36.95679 109.79252,-52.48463 7.71344,-3.19326 15.44578,-6.34124 23.14032,-9.57978 26.03103,-10.95613 51.7881,-22.59387 76.79106,-35.76157 42.32507,-22.29031 32.37854,-17.45018 21.71695,-12.37413 27.69959,-16.89942 54.76258,-34.80763 82.06841,-52.32954 3.94676,-2.5326 7.78542,-5.23846 11.81547,-7.63629 13.93107,-8.28881 28.03813,-16.27818 42.05719,-24.41727 1.82085,-0.65301 3.535,-1.79625 5.46253,-1.95903 1.14748,-0.0969 2.55329,0.29335 3.23024,1.22493 4.4402,6.11031 -2.74745,15.55901 -5.48451,20.72818 -5.75765,10.57294 -11.80107,21.00672 -18.37568,31.09425 -8.69682,12.13204 -17.21613,24.35107 -25.30545,36.8994 -8.76999,14.06322 -13.80724,29.8609 -17.16277,45.97506 -1.61982,9.03135 -2.30641,16.44531 6.23493,21.70829 3.31001,1.71191 6.61295,2.19795 10.26307,2.25814 0,0 -34.1559,24.2492 -34.1559,24.2492 l 0,0 c -4.04274,-0.78094 -7.88137,-1.74859 -11.38493,-4.05868 -9.57886,-7.50134 -10.04511,-14.7248 -7.95368,-26.29078 3.70976,-16.48328 8.59159,-32.8557 17.13895,-47.54924 7.808,-12.43792 15.71401,-24.76749 24.43097,-36.58289 6.64463,-10.0123 12.98801,-20.22738 18.69995,-30.80719 1.06673,-2.02099 5.47855,-11.97387 6.83302,-13.43922 0.3422,-0.37021 1.06394,-0.32013 1.51003,-0.0852 0.35221,0.18545 -0.77587,0.17836 -1.1638,0.26755 -1.3924,0.57649 -2.7848,1.15299 -4.1772,1.72949 8.53309,-5.01782 16.92726,-10.27974 25.59928,-15.05345 4.46703,-2.45898 -8.64504,5.40995 -12.97447,8.10383 -28.33878,17.63307 -56.24248,35.94219 -84.66825,53.43629 -22.66355,13.24936 -55.91511,33.356 -81.64049,46.80647 -32.95242,17.22913 -67.12661,31.94029 -101.42871,46.2266 -18.19015,7.69388 -36.62175,14.9775 -54.55262,23.27042 -3.77844,1.7475 -7.50549,3.60582 -11.21421,5.49679 -2.53121,1.2906 -9.9408,5.50416 -7.50216,4.04617 10.489,-6.27105 21.10584,-12.32577 31.65876,-18.48866 0,0 -39.29882,15.37653 -39.29882,15.37653 z"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/perspective.svg b/share/extensions/tests/data/svg/perspective.svg
new file mode 100644
index 0000000..47a6f99
--- /dev/null
+++ b/share/extensions/tests/data/svg/perspective.svg
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg1442"
+ version="1.1"
+ viewBox="0 0 48.229092 27.352564"
+ height="27.352564mm"
+ width="48.229092mm">
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ transform="translate(-84.769969,-2.1401311)">
+ <path
+ inkscape:connector-curvature="0"
+ id="text"
+ style="font-size:40px;font-family:sans-serif;word-spacing:0px;opacity:1;stroke-width:0.76691598"
+ d="m 132.88094,13.452154 v 0.27277 h -0.31378 c -0.11766,0 -0.19967,0.02377 -0.24602,0.0713 -0.0452,0.04753 -0.0678,0.13311 -0.0678,0.25673 v 0.1765 h 0.54019 v 0.25494 h -0.54019 v 1.74182 h -0.32983 v -1.74182 h -0.31377 v -0.25494 h 0.31377 v -0.13906 c 0,-0.22226 0.0517,-0.383903 0.15511,-0.48493 0.10341,-0.102213 0.26743,-0.15332 0.49206,-0.15332 z m -1.35851,1.08395 c -0.0369,-0.0214 -0.0773,-0.03683 -0.12123,-0.0463 -0.0428,-0.01067 -0.0903,-0.016 -0.14263,-0.016 -0.18541,0 -0.32804,0.06062 -0.42787,0.18185 -0.0987,0.12004 -0.14798,0.292973 -0.14798,0.5188 v 1.05187 h -0.32982 v -1.99676 h 0.32982 v 0.31021 c 0.0689,-0.121233 0.15868,-0.21097 0.26921,-0.26921 0.11053,-0.0594 0.24484,-0.0891 0.40292,-0.0891 0.0226,0 0.0476,0.0017 0.0749,0.005 0.0273,0.0027 0.0576,0.0068 0.0909,0.0125 z m -2.6154,-0.0767 c -0.17591,0 -0.31497,0.06894 -0.41718,0.20681 -0.10221,0.13668 -0.15332,0.32447 -0.15332,0.56337 0,0.2389 0.0505,0.427287 0.15154,0.56516 0.10221,0.13668 0.24187,0.20502 0.41896,0.20502 0.17472,0 0.31319,-0.06894 0.4154,-0.20681 0.10221,-0.137867 0.15332,-0.325657 0.15332,-0.56337 0,-0.23652 -0.0511,-0.423717 -0.15332,-0.56159 -0.10221,-0.13906 -0.24068,-0.20859 -0.4154,-0.20859 z m 0,-0.27812 c 0.28525,0 0.5093,0.09271 0.67213,0.27812 0.16283,0.18542 0.24424,0.442147 0.24424,0.77018 0,0.326853 -0.0814,0.58358 -0.24424,0.77018 -0.16283,0.185413 -0.38688,0.27812 -0.67213,0.27812 -0.28644,0 -0.51108,-0.09271 -0.67391,-0.27812 -0.16164,-0.1866 -0.24246,-0.443327 -0.24246,-0.77018 0,-0.328033 0.0808,-0.58476 0.24246,-0.77018 0.16283,-0.185413 0.38747,-0.27812 0.67391,-0.27812 z m -1.77748,0.35122 v -1.08039 h 0.32804 v 2.77407 h -0.32804 v -0.29951 c -0.0689,0.118853 -0.1563,0.2074 -0.26208,0.26564 -0.10459,0.05707 -0.23057,0.0856 -0.37795,0.0856 -0.24128,0 -0.43799,-0.09627 -0.59012,-0.28882 -0.15095,-0.192547 -0.22642,-0.445707 -0.22642,-0.75948 0,-0.31378 0.0755,-0.56694 0.22642,-0.75948 0.15213,-0.192547 0.34884,-0.28882 0.59012,-0.28882 0.14738,0 0.27336,0.02913 0.37795,0.0874 0.10578,0.05707 0.19314,0.14502 0.26208,0.26386 z m -1.11783,0.69708 c 0,0.241273 0.0493,0.430847 0.14797,0.56872 0.0998,0.136687 0.23652,0.20503 0.41005,0.20503 0.17353,0 0.31021,-0.06834 0.41005,-0.20503 0.0998,-0.137873 0.14976,-0.327447 0.14976,-0.56872 0,-0.241273 -0.0499,-0.43025 -0.14976,-0.56693 -0.0998,-0.137873 -0.23652,-0.20681 -0.41005,-0.20681 -0.17353,0 -0.31021,0.06894 -0.41005,0.20681 -0.0987,0.13668 -0.14797,0.325657 -0.14797,0.56693 z m -0.85397,-0.20859 v 1.20519 h -0.32804 v -1.19449 c 0,-0.18898 -0.0369,-0.330417 -0.11054,-0.42431 -0.0737,-0.0939 -0.18422,-0.14085 -0.3316,-0.14085 -0.17709,0 -0.31675,0.05646 -0.41896,0.16937 -0.10222,0.112913 -0.15333,0.26683 -0.15333,0.46175 v 1.12853 h -0.32982 v -2.77407 h 0.32982 v 1.08752 c 0.0784,-0.12004 0.17056,-0.209777 0.27634,-0.26921 0.10697,-0.0594 0.22998,-0.0891 0.36904,-0.0891 0.22939,0 0.40292,0.07131 0.52059,0.21394 0.11767,0.14144 0.1765,0.35003 0.1765,0.62577 z m -4.01135,0.41718 v -1.20875 h 0.32804 v 1.19627 c 0,0.18898 0.0368,0.331013 0.11053,0.4261 0.0737,0.09389 0.18423,0.14084 0.33161,0.14084 0.17709,0 0.31675,-0.05646 0.41896,-0.16937 0.10341,-0.112913 0.15511,-0.26683 0.15511,-0.46175 v -1.13209 h 0.32804 v 1.99676 h -0.32804 v -0.30665 c -0.0796,0.121233 -0.17234,0.211563 -0.27812,0.27099 -0.10459,0.05827 -0.22642,0.0874 -0.36548,0.0874 -0.22939,0 -0.40352,-0.07131 -0.52237,-0.21394 -0.11885,-0.14262 -0.17828,-0.35121 -0.17828,-0.62577 z m -2.16969,-1.87374 h 0.36013 v 1.12496 l 1.19449,-1.12496 h 0.46353 l -1.32107,1.24084 1.41556,1.42091 h -0.47423 l -1.27828,-1.28185 v 1.28185 h -0.36013 z m -2.36402,1.22658 c 0.17234,0.03687 0.30664,0.113527 0.40291,0.22998 0.0975,0.11648 0.14619,0.260293 0.14619,0.43144 0,0.262673 -0.0903,0.465917 -0.27098,0.60973 -0.18066,0.143813 -0.43739,0.21572 -0.77018,0.21572 -0.11173,0 -0.22702,-0.0113 -0.34587,-0.0339 -0.11767,-0.0214 -0.23949,-0.0541 -0.36548,-0.0981 v -0.34765 c 0.0998,0.05827 0.20919,0.102243 0.32804,0.13193 0.11885,0.02973 0.24306,0.0446 0.37261,0.0446 0.22583,0 0.39757,-0.04457 0.51523,-0.13371 0.11886,-0.08914 0.17829,-0.218693 0.17829,-0.38866 0,-0.156887 -0.0553,-0.279307 -0.16581,-0.36726 -0.10934,-0.08914 -0.26207,-0.13371 -0.45818,-0.13371 h -0.31021 v -0.29595 h 0.32447 c 0.17709,0 0.31259,-0.03506 0.40649,-0.10519 0.0939,-0.07131 0.14084,-0.17352 0.14084,-0.30664 0,-0.136687 -0.0487,-0.24128 -0.14619,-0.31378 -0.0963,-0.07369 -0.23474,-0.11053 -0.4154,-0.11053 -0.0986,0 -0.20443,0.0107 -0.31734,0.0321 -0.11291,0.0214 -0.23712,0.05467 -0.37261,0.0998 v -0.32091 c 0.13668,-0.03807 0.26445,-0.0666 0.3833,-0.0856 0.12005,-0.019 0.23296,-0.0285 0.33874,-0.0285 0.27337,0 0.48968,0.0624 0.64895,0.18719 0.15927,0.123613 0.2389,0.2912 0.2389,0.50276 0,0.14738 -0.0422,0.272177 -0.12658,0.37439 -0.0844,0.101027 -0.20444,0.171153 -0.36013,0.21038 z m -3.10568,1.13209 h 1.25689 v 0.30308 h -1.69012 v -0.30308 c 0.13669,-0.14144 0.3227,-0.331013 0.55803,-0.56872 0.23652,-0.2389 0.38509,-0.392817 0.4457,-0.46175 0.11529,-0.129553 0.19552,-0.2389 0.24068,-0.32804 0.0463,-0.09033 0.0695,-0.178873 0.0695,-0.26564 0,-0.14144 -0.0499,-0.25673 -0.14975,-0.34587 -0.0987,-0.08914 -0.22761,-0.13371 -0.38687,-0.13371 -0.11291,0 -0.23236,0.0196 -0.35835,0.0588 -0.1248,0.0392 -0.25851,0.09863 -0.40114,0.17828 v -0.36369 c 0.14501,-0.05827 0.2805,-0.102243 0.40649,-0.13193 0.12599,-0.02973 0.24127,-0.0446 0.34586,-0.0446 0.27575,0 0.49563,0.06893 0.65965,0.2068 0.16402,0.137873 0.24603,0.3221 0.24603,0.55268 0,0.109347 -0.0208,0.213343 -0.0624,0.31199 -0.0404,0.09747 -0.11469,0.212757 -0.22286,0.34587 -0.0297,0.03447 -0.12422,0.134307 -0.28347,0.29952 -0.15926,0.16402 -0.38389,0.394003 -0.6739,0.68995 z m -2.3248,0 h 1.25689 v 0.30308 h -1.69011 v -0.30308 c 0.13668,-0.14144 0.32269,-0.331013 0.55802,-0.56872 0.23652,-0.2389 0.38509,-0.392817 0.4457,-0.46175 0.11529,-0.129553 0.19552,-0.2389 0.24069,-0.32804 0.0463,-0.09033 0.0695,-0.178873 0.0695,-0.26564 0,-0.14144 -0.0499,-0.25673 -0.14976,-0.34587 -0.0987,-0.08914 -0.22761,-0.13371 -0.38688,-0.13371 -0.11291,0 -0.23235,0.0196 -0.35834,0.0588 -0.1248,0.0392 -0.25851,0.09863 -0.40114,0.17828 v -0.36369 c 0.14501,-0.05827 0.2805,-0.102243 0.40649,-0.13193 0.12599,-0.02973 0.24127,-0.0446 0.34586,-0.0446 0.27575,0 0.49563,0.06893 0.65965,0.2068 0.16402,0.137873 0.24603,0.3221 0.24603,0.55268 0,0.109347 -0.0208,0.213343 -0.0624,0.31199 -0.0404,0.09747 -0.11469,0.212757 -0.22286,0.34587 -0.0297,0.03447 -0.12422,0.134307 -0.28346,0.29952 -0.15927,0.16402 -0.3839,0.394003 -0.67391,0.68995 z m -1.64555,-2.0449 -0.90923,1.42091 h 0.90923 z m -0.0945,-0.31377 h 0.45284 v 1.73468 h 0.37974 v 0.29952 H 109.895 v 0.62755 h -0.35835 v -0.62755 h -1.20162 v -0.34765 z m -2.90956,2.35867 h 1.25689 v 0.30308 h -1.69012 v -0.30308 c 0.13669,-0.14144 0.3227,-0.331013 0.55803,-0.56872 0.23652,-0.2389 0.38509,-0.392817 0.4457,-0.46175 0.11529,-0.129553 0.19552,-0.2389 0.24068,-0.32804 0.0463,-0.09033 0.0695,-0.178873 0.0695,-0.26564 0,-0.14144 -0.0499,-0.25673 -0.14975,-0.34587 -0.0986,-0.08914 -0.22761,-0.13371 -0.38687,-0.13371 -0.11292,0 -0.23237,0.0196 -0.35835,0.0588 -0.1248,0.0392 -0.25851,0.09863 -0.40114,0.17828 v -0.36369 c 0.14501,-0.05827 0.2805,-0.102243 0.40649,-0.13193 0.12598,-0.02973 0.24127,-0.0446 0.34586,-0.0446 0.27575,0 0.49563,0.06893 0.65965,0.2068 0.16402,0.137873 0.24603,0.3221 0.24603,0.55268 0,0.109347 -0.0208,0.213343 -0.0624,0.31199 -0.0404,0.09747 -0.11469,0.212757 -0.22286,0.34587 -0.0297,0.03447 -0.12422,0.134307 -0.28346,0.29952 -0.15927,0.16402 -0.3839,0.394003 -0.67391,0.68995 z m 20.96598,-6.9227001 h 1.41378 v 0.30308 h -1.08396 v 0.65252 c 0.0523,-0.0178 0.10456,-0.03087 0.15689,-0.0392 0.0523,-0.0095 0.10456,-0.0143 0.15689,-0.0143 0.29714,0 0.53247,0.08141 0.706,0.2442401 0.17353,0.162833 0.26029,0.38331 0.26029,0.66143 0,0.28644 -0.0891,0.509293 -0.26742,0.66856 -0.17829,0.15808 -0.42967,0.23712 -0.75414,0.23712 -0.11172,0 -0.22582,-0.0095 -0.3423,-0.0285 -0.11529,-0.019 -0.23474,-0.04753 -0.35835,-0.0856 v -0.36192 c 0.10697,0.05827 0.21751,0.10165 0.33161,0.13015 0.1141,0.02853 0.23474,0.0428 0.36191,0.0428 0.20562,0 0.36845,-0.05408 0.4885,-0.16224 0.12004,-0.10816 0.18006,-0.254947 0.18006,-0.44036 0,-0.185413 -0.06,-0.332197 -0.18006,-0.44035 -0.12005,-0.10816 -0.28288,-0.16224 -0.4885,-0.16224 -0.0963,0 -0.19255,0.0107 -0.28882,0.0321 -0.0951,0.0214 -0.19254,0.05467 -0.29238,0.0998 z m -2.21604,1.6402001 c 0,-0.237707 -0.0493,-0.42193 -0.14798,-0.55267 -0.0975,-0.1307471 -0.23474,-0.1961201 -0.41183,-0.1961201 -0.17591,0 -0.31318,0.06537 -0.41183,0.1961201 -0.0975,0.13074 -0.1462,0.314963 -0.1462,0.55267 0,0.23652 0.0487,0.42015 0.1462,0.55089 0.0987,0.13074 0.23592,0.19611 0.41183,0.19611 0.17709,0 0.31437,-0.06537 0.41183,-0.19611 0.0987,-0.13074 0.14798,-0.31437 0.14798,-0.55089 z m 0.32803,0.77375 c 0,0.33992 -0.0755,0.592483 -0.22641,0.75769 -0.15095,0.1664 -0.38212,0.2496 -0.69352,0.2496 -0.11529,0 -0.22405,-0.0089 -0.32626,-0.0267 -0.10221,-0.01667 -0.20146,-0.0428 -0.29773,-0.0784 v -0.31913 c 0.0963,0.05233 0.19136,0.09096 0.28525,0.11589 0.0939,0.02493 0.18958,0.0374 0.28704,0.0374 0.21513,0 0.37617,-0.05646 0.48314,-0.16937 0.10697,-0.111727 0.16046,-0.281093 0.16046,-0.5081 v -0.16224 c -0.0678,0.117667 -0.15452,0.205617 -0.2603,0.26385 -0.10578,0.05827 -0.23236,0.0874 -0.37974,0.0874 -0.24484,0 -0.44214,-0.0933 -0.59189,-0.2799 -0.14976,-0.1866 -0.22464,-0.433817 -0.22464,-0.74165 0,-0.309027 0.0749,-0.55684 0.22464,-0.7434401 0.14975,-0.1866 0.34705,-0.2799 0.59189,-0.2799 0.14738,0 0.27396,0.02913 0.37974,0.0874 0.10578,0.05827 0.19255,0.146217 0.2603,0.26385 v -0.30307 h 0.32803 z m -2.18038,-0.83258 v 0.16045 h -1.50827 c 0.0143,0.225827 0.082,0.398167 0.20324,0.51702 0.12242,0.117667 0.29238,0.1765 0.50989,0.1765 0.12599,0 0.24781,-0.01547 0.36547,-0.0464 0.11886,-0.03087 0.23653,-0.07722 0.353,-0.13906 v 0.31021 c -0.11767,0.04993 -0.2383,0.08797 -0.36191,0.1141 -0.12361,0.02613 -0.249,0.0392 -0.37617,0.0392 -0.31853,0 -0.5711,-0.09271 -0.75771,-0.27812 -0.18541,-0.185413 -0.27811,-0.436197 -0.27811,-0.75235 0,-0.326853 0.088,-0.585957 0.26385,-0.7773101 0.17709,-0.192547 0.4154,-0.28882 0.71491,-0.28882 0.26861,0 0.48077,0.08676 0.63647,0.26029 0.15689,0.1723401 0.23534,0.4070801 0.23534,0.7042201 z m -0.32805,-0.0963 c -0.003,-0.179473 -0.0532,-0.322693 -0.15154,-0.42966 -0.0975,-0.1069731 -0.22701,-0.1604601 -0.38865,-0.1604601 -0.18304,0 -0.32983,0.0517 -0.44036,0.1551101 -0.10935,0.1034 -0.17234,0.248997 -0.18898,0.43679 z m -4.55867,-0.8201001 h 0.32804 l 0.41005,1.5581801 0.40826,-1.5581801 h 0.38687 l 0.41006,1.5581801 0.40826,-1.5581801 h 0.32804 l -0.52237,1.9967601 h -0.38687 l -0.42966,-1.63663 -0.43144,1.63663 h -0.38687 z m -0.15689,0.30664 c -0.0369,-0.0214 -0.0773,-0.03683 -0.12123,-0.0463 -0.0428,-0.01073 -0.0903,-0.0161 -0.14263,-0.0161 -0.18541,0 -0.32804,0.06062 -0.42787,0.1818501 -0.0987,0.120047 -0.14798,0.29298 -0.14798,0.5188 v 1.05187 h -0.32982 V 9.6653739 h 0.32982 v 0.31021 c 0.0689,-0.121233 0.15868,-0.21097 0.26921,-0.26921 0.11053,-0.0594 0.24484,-0.0891 0.40292,-0.0891 0.0226,0 0.0476,0.0017 0.0749,0.005 0.0273,0.0027 0.0576,0.0068 0.0909,0.0125 z m -1.69546,0.6097301 v 0.16045 h -1.50827 c 0.0143,0.225827 0.082,0.398167 0.20324,0.51702 0.12242,0.117667 0.29238,0.1765 0.50989,0.1765 0.12599,0 0.24781,-0.01547 0.36548,-0.0464 0.11885,-0.03087 0.23652,-0.07722 0.353,-0.13906 v 0.31021 c -0.11767,0.04993 -0.23831,0.08797 -0.36192,0.1141 -0.12361,0.02613 -0.249,0.0392 -0.37617,0.0392 -0.31853,0 -0.5711,-0.09271 -0.7577,-0.27812 -0.18541,-0.185413 -0.27812,-0.436197 -0.27812,-0.75235 0,-0.326853 0.088,-0.585957 0.26386,-0.7773101 0.17709,-0.192547 0.4154,-0.28882 0.71491,-0.28882 0.26861,0 0.48077,0.08676 0.63647,0.26029 0.15689,0.1723401 0.23533,0.4070801 0.23533,0.7042201 z m -0.32804,-0.0963 c -0.003,-0.179473 -0.0532,-0.322693 -0.15154,-0.42966 -0.0975,-0.1069731 -0.22701,-0.1604601 -0.38866,-0.1604601 -0.18303,0 -0.32982,0.0517 -0.44035,0.1551101 -0.10935,0.1034 -0.17234,0.248997 -0.18898,0.43679 z m -2.48882,-1.3870401 v 0.56694 h 0.67569 v 0.25494 h -0.67569 v 1.0839501 c 0,0.162833 0.022,0.267427 0.066,0.31378 0.0451,0.04633 0.13606,0.0695 0.27278,0.0695 h 0.33695 v 0.27456 h -0.33695 c -0.25317,0 -0.42788,-0.04695 -0.52415,-0.14084 -0.0963,-0.09509 -0.14441,-0.267427 -0.14441,-0.51702 V 9.9202539 h -0.24069 v -0.25494 h 0.24069 v -0.56694 z m -0.95559,0.62577 v 0.3102101 c -0.0927,-0.04753 -0.18898,-0.08319 -0.28882,-0.1069701 -0.0998,-0.0238 -0.20324,-0.0357 -0.31021,-0.0357 -0.16283,0 -0.28525,0.02497 -0.36726,0.0749 -0.0808,0.04993 -0.12123,0.1248101 -0.12123,0.2246301 0,0.07607 0.0291,0.13609 0.0874,0.18007 0.0583,0.0428 0.17534,0.0838 0.35121,0.12301 l 0.11232,0.025 c 0.23295,0.04993 0.39816,0.120653 0.49563,0.21216 0.0987,0.09033 0.14797,0.216907 0.14797,0.37974 0,0.185413 -0.0737,0.3322 -0.22107,0.44036 -0.14619,0.108153 -0.34765,0.16223 -0.60438,0.16223 -0.10697,0 -0.21869,-0.0107 -0.33517,-0.0321 -0.11529,-0.0202 -0.23711,-0.0511 -0.36548,-0.0927 v -0.33873 c 0.12123,0.063 0.24068,0.110543 0.35835,0.14263 0.11767,0.03093 0.23415,0.0464 0.34944,0.0464 0.15451,0 0.27336,-0.02613 0.35656,-0.0784 0.0832,-0.05347 0.12479,-0.128347 0.12479,-0.22464 0,-0.08914 -0.0303,-0.15748 -0.0909,-0.20502 -0.0594,-0.04753 -0.19073,-0.09329 -0.394,-0.13728 l -0.1141,-0.0267 c -0.20324,-0.0428 -0.35003,-0.10817 -0.44036,-0.19611 -0.0903,-0.08914 -0.13549,-0.210967 -0.13549,-0.36548 0,-0.187787 0.0666,-0.3327901 0.19967,-0.4350101 0.13312,-0.102213 0.3221,-0.15332 0.56694,-0.15332 0.12123,0 0.23533,0.0089 0.3423,0.0267 0.10697,0.0178 0.20562,0.04453 0.29595,0.0802 z m -3.62448,1.1499201 V 9.6653439 h 0.32804 v 1.1962701 c 0,0.18898 0.0368,0.33101 0.11053,0.42609 0.0737,0.0939 0.18423,0.14085 0.33161,0.14085 0.17709,0 0.31675,-0.05646 0.41896,-0.16937 0.10341,-0.112913 0.15511,-0.26683 0.15511,-0.46175 V 9.6653439 h 0.32804 v 1.9967601 h -0.32804 v -0.30665 c -0.0796,0.121233 -0.17234,0.211563 -0.27812,0.27099 -0.10459,0.05827 -0.22642,0.0874 -0.36548,0.0874 -0.22939,0 -0.40352,-0.07131 -0.52237,-0.21394 -0.11885,-0.142627 -0.17828,-0.351217 -0.17828,-0.62577 z M 106.1903,9.0003439 h 0.53663 l 0.67925,1.8113501 0.68282,-1.8113501 h 0.53663 v 2.6617601 h -0.35121 V 9.3248239 l -0.68639,1.8257101 h -0.36191 L 106.53973,9.3249239 V 11.662204 H 106.1903 Z M 127.53602,6.094344 c -0.26505,0 -0.44868,0.0303 -0.55089,0.0909 -0.10221,0.0606 -0.15332,0.1640033 -0.15332,0.31021 0,0.11648 0.038,0.20919 0.1141,0.27813 0.0772,0.06774 0.18184,0.10161 0.31377,0.10161 0.18185,0 0.32745,-0.06418 0.4368,-0.19254 0.11053,-0.1295533 0.1658,-0.3012967 0.1658,-0.51523 v -0.0731 z m 0.6543,-0.13549 v 1.13922 h -0.32804 v -0.30308 c -0.0749,0.1212333 -0.16818,0.21097 -0.2799,0.26921 -0.11173,0.057067 -0.24841,0.0856 -0.41005,0.0856 -0.20443,0 -0.36727,-0.05705 -0.4885,-0.17115 -0.12004,-0.1152933 -0.18006,-0.26921 -0.18006,-0.46175 0,-0.2246333 0.0749,-0.3940033 0.22463,-0.50811 0.15095,-0.1141 0.37558,-0.17115 0.67391,-0.17115 h 0.45997 v -0.0321 c 0,-0.15094 -0.0499,-0.2674167 -0.14976,-0.34943 -0.0987,-0.0832 -0.23771,-0.1248 -0.41718,-0.1248 -0.1141,0 -0.22523,0.013667 -0.33339,0.041 -0.10815,0.027333 -0.21215,0.06834 -0.31199,0.12302 v -0.30308 c 0.12004,-0.046333 0.23652,-0.080803 0.34943,-0.10341 0.11291,-0.0238 0.22285,-0.0357 0.32982,-0.0357 0.28882,0 0.50454,0.07488 0.64717,0.22464 0.14263,0.1497533 0.21394,0.3767667 0.21394,0.68104 z m -3.56565,-0.47423 c 0.082,-0.14738 0.18007,-0.2561333 0.29417,-0.32626 0.1141,-0.07012 0.24841,-0.10518 0.40292,-0.10518 0.20799,0 0.36845,0.073093 0.48136,0.21928 0.11291,0.1450067 0.16937,0.3518133 0.16937,0.62042 v 1.20519 h -0.32983 v -1.19449 c 0,-0.1913533 -0.0339,-0.3333833 -0.10162,-0.42609 -0.0678,-0.092707 -0.17115,-0.13906 -0.31021,-0.13906 -0.16996,0 -0.30427,0.056457 -0.40292,0.16937 -0.0986,0.1129067 -0.14797,0.2668233 -0.14797,0.46175 v 1.12852 h -0.32982 v -1.19449 c 0,-0.1925467 -0.0339,-0.3345767 -0.10162,-0.42609 -0.0678,-0.092707 -0.17234,-0.13906 -0.31378,-0.13906 -0.16759,0 -0.3007,0.05705 -0.39935,0.17115 -0.0987,0.1129133 -0.14797,0.2662367 -0.14797,0.45997 v 1.12852 h -0.32982 v -1.99676 h 0.32982 v 0.31021 c 0.0749,-0.12242 0.16461,-0.21275 0.2692,-0.27099 0.10459,-0.058267 0.2288,-0.0874 0.37261,-0.0874 0.14501,0 0.26802,0.036847 0.36905,0.11054 0.10221,0.073687 0.17768,0.1806567 0.22641,0.32091 z m -3.55851,0 c 0.082,-0.14738 0.18007,-0.2561333 0.29417,-0.32626 0.1141,-0.07012 0.24841,-0.10518 0.40292,-0.10518 0.20799,0 0.36845,0.073093 0.48136,0.21928 0.11291,0.1450067 0.16937,0.3518133 0.16937,0.62042 v 1.20519 h -0.32983 v -1.19449 c 0,-0.1913533 -0.0339,-0.3333833 -0.10162,-0.42609 -0.0678,-0.092707 -0.17115,-0.13906 -0.31021,-0.13906 -0.16996,0 -0.30427,0.056457 -0.40292,0.16937 -0.0986,0.1129067 -0.14797,0.2668233 -0.14797,0.46175 v 1.12852 h -0.32982 v -1.19449 c 0,-0.1925467 -0.0339,-0.3345767 -0.10162,-0.42609 -0.0678,-0.092707 -0.17234,-0.13906 -0.31378,-0.13906 -0.16759,0 -0.3007,0.05705 -0.39935,0.17115 -0.0987,0.1129133 -0.14798,0.2662367 -0.14798,0.45997 v 1.12852 h -0.32982 v -1.99676 h 0.32982 v 0.31021 c 0.0749,-0.12242 0.16462,-0.21275 0.26921,-0.27099 0.10459,-0.058267 0.2288,-0.0874 0.37261,-0.0874 0.14501,0 0.26802,0.036847 0.36905,0.11054 0.10221,0.073687 0.17768,0.1806567 0.22641,0.32091 z m -3.85089,-1.0483 h 1.68298 v 0.30308 h -1.32285 v 0.78801 h 1.26759 v 0.30308 h -1.26759 v 0.9645 h 1.35494 v 0.30308 h -1.71507 z m -1.71508,1.58136 v 0.16046 h -1.50826 c 0.0143,0.22582 0.082,0.39816 0.20324,0.51702 0.12242,0.11766 0.29238,0.17649 0.50989,0.17649 0.12598,0 0.2478,-0.015467 0.36547,-0.0464 0.11886,-0.030867 0.23653,-0.07722 0.353,-0.13906 v 0.31022 c -0.11767,0.049933 -0.2383,0.087963 -0.36191,0.11409 -0.12361,0.026133 -0.249,0.0392 -0.37618,0.0392 -0.31853,0 -0.57109,-0.092707 -0.7577,-0.27812 -0.18541,-0.1854067 -0.27812,-0.43619 -0.27812,-0.75235 0,-0.3268467 0.0879,-0.58595 0.26386,-0.77731 0.17709,-0.19254 0.4154,-0.28881 0.71491,-0.28881 0.26861,0 0.48077,0.086763 0.63647,0.26029 0.15689,0.17234 0.23533,0.4070767 0.23533,0.70421 z m -0.32804,-0.0963 c -0.003,-0.1794667 -0.0532,-0.3226867 -0.15154,-0.42966 -0.0975,-0.1069667 -0.22701,-0.16045 -0.38865,-0.16045 -0.18304,0 -0.32983,0.0517 -0.44036,0.1551 -0.10935,0.1034067 -0.17234,0.2490033 -0.18898,0.43679 z m -2.48882,-1.38703 v 0.56693 h 0.67569 v 0.25495 h -0.67569 v 1.08395 c 0,0.1628333 0.022,0.2674267 0.066,0.31378 0.0452,0.046333 0.13612,0.0695 0.27277,0.0695 h 0.33696 v 0.27455 h -0.33696 c -0.25316,0 -0.42787,-0.046947 -0.52414,-0.14084 -0.0963,-0.09508 -0.14441,-0.26742 -0.14441,-0.51702 v -1.08395 h -0.24068 v -0.25495 h 0.24068 v -0.56693 z m -0.98233,1.3585 v 1.20519 h -0.32804 v -1.19449 c 0,-0.18898 -0.0369,-0.3304167 -0.11054,-0.42431 -0.0737,-0.093893 -0.18422,-0.14084 -0.3316,-0.14084 -0.17709,0 -0.31675,0.056457 -0.41896,0.16937 -0.10221,0.1129067 -0.15332,0.2668233 -0.15332,0.46175 v 1.12852 h -0.32983 v -1.99676 h 0.32983 v 0.31021 c 0.0784,-0.12004 0.17055,-0.2097733 0.27633,-0.2692 0.10697,-0.0594 0.22999,-0.0891 0.36905,-0.0891 0.22939,0 0.40291,0.071313 0.52058,0.21394 0.11767,0.1414333 0.1765,0.35002 0.1765,0.62576 z m -2.99158,0.20146 c -0.26504,0 -0.44867,0.0303 -0.55089,0.0909 -0.10221,0.0606 -0.15332,0.1640033 -0.15332,0.31021 0,0.11648 0.038,0.20919 0.1141,0.27813 0.0772,0.06774 0.18185,0.10161 0.31378,0.10161 0.18185,0 0.32744,-0.06418 0.43679,-0.19254 0.11053,-0.1295533 0.1658,-0.3012967 0.1658,-0.51523 v -0.0731 z m 0.6543,-0.13549 v 1.13922 h -0.32804 v -0.30308 c -0.0749,0.1212333 -0.16817,0.21097 -0.2799,0.26921 -0.11173,0.057067 -0.24841,0.0856 -0.41005,0.0856 -0.20443,0 -0.36726,-0.05705 -0.48849,-0.17115 -0.12005,-0.1152933 -0.18007,-0.26921 -0.18007,-0.46175 0,-0.2246333 0.0749,-0.3940033 0.22464,-0.50811 0.15095,-0.1141 0.37558,-0.17115 0.6739,-0.17115 h 0.45997 v -0.0321 c 0,-0.15094 -0.0499,-0.2674167 -0.14975,-0.34943 -0.0987,-0.0832 -0.23771,-0.1248 -0.41718,-0.1248 -0.1141,0 -0.22523,0.013667 -0.33339,0.041 -0.10816,0.027333 -0.21216,0.06834 -0.312,0.12302 v -0.30308 c 0.12005,-0.046333 0.23653,-0.080803 0.34944,-0.10341 0.11291,-0.0238 0.22285,-0.0357 0.32982,-0.0357 0.28881,0 0.50453,0.07488 0.64716,0.22464 0.14263,0.1497533 0.21394,0.3767667 0.21394,0.68104 z m -3.54247,-1.52253 h 2.25171 v 0.30308 h -0.9449 v 2.35867 h -0.36191 v -2.35867 h -0.9449 z"
+ sodipodi:nodetypes="ccscsccccccccccscccccscsccccccscccscscscscsscscscscscccccccscscscccscscscscscccscscsccccccsccccccscscsccccccscscccccccccccccccscsccccscscsccscscsscccscscccccccccccscsccccscscccccccccccccscsccccscscccccccccccccccccccccccccccccscsccccscscccccccccccscscsccccscscscccscscscscsscsccccscsccscscsscccsccccscccsscscscscccscccccccccccccccccccscsccccccscccccccsccccscscscscccsccccccccscsccscscccccccccscsccccscsccccscsccccscsccccccscscsccccccsssccccccccccccccccsscscscccccccscscscscsccccscscccscsccssscsccscscsccccccscccccscsccssscsccscscsccccccsccccccccccccccccccccsccccscscscscccsccccccccscsccscscccccccccscscsccccccscccccscscscccccccscscscscsscccscscccccccccc" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.26458299px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 112.2612,24.293057 c -4.24968,1.02798 -9.17628,1.76061 -13.426401,2.78804 -4.32682,-3.42805 -9.5533,-7.35109 -13.88065,-10.77967 3.62032,-0.77296 7.43135,-1.02733 11.05107,-1.80082 4.957321,3.17417 11.299291,6.61888 16.255981,9.79245 z"
+ id="envelope"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/perspective_groups.svg b/share/extensions/tests/data/svg/perspective_groups.svg
new file mode 100644
index 0000000..33acaa2
--- /dev/null
+++ b/share/extensions/tests/data/svg/perspective_groups.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ id="svg1442"
+ version="1.1"
+ viewBox="0 0 48.229092 27.352564"
+ height="27.352564mm"
+ width="48.229092mm">
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1"
+ transform="translate(-84.769969,-2.1401311)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 112.2612,24.293057 -13.426401,2.78804 -13.88065,-10.77967 11.05107,-1.80082 z"
+ id="envelope"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <g
+ id="obj"
+ transform="matrix(1.1831883,0,0,1.2451303,-21.014249,-3.8760083)"
+ style="stroke-width:0.823883">
+ <path
+ d="m 114.25288,5.8730068 h 8.0941 v 9.4361272 h -8.0941 z"
+ style="fill:#ff0000;stroke-width:0.823883;stop-color:#000000"
+ id="rectangle" />
+ <g
+ transform="translate(-0.15119026,-0.14782928)"
+ id="ellipse"
+ style="stroke-width:0.823883">
+ <path
+ id="path868"
+ style="fill:#ffff00;stroke-width:0.823883;stop-color:#000000"
+ d="m 119.99817,11.072998 a 1.3420268,1.3839653 0 0 1 -1.34203,1.383965 1.3420268,1.3839653 0 0 1 -1.34202,-1.383965 1.3420268,1.3839653 0 0 1 1.34202,-1.3839652 1.3420268,1.3839653 0 0 1 1.34203,1.3839652"
+ transform="translate(2.5,3)" />
+ <g
+ style="stroke-width:0.90823"
+ transform="matrix(0.77283687,0,-0.78132957,1.0647538,36.868452,-0.74452689)"
+ id="g877">
+ <path
+ sodipodi:nodetypes="cc"
+ id="line"
+ d="M 116.46617,6.9686643 V 14.601442"
+ style="fill:none;stroke:#000000;stroke-width:0.961211;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+ <g
+ style="font-style:normal;font-weight:normal;font-size:2.90648px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#00ff00;fill-opacity:1;stroke:none;stroke-width:0.179595"
+ id="text"
+ transform="scale(1.025842,0.97480899)"
+ aria-label="Test">
+ <path
+ id="path1097"
+ style="font-size:2.90648px;fill:#00ff00;stroke-width:0.179595"
+ d="m 112.48715,6.8935872 h 1.79243 v 0.2412606 h -0.75217 v 1.8775748 h -0.28809 V 7.1348478 h -0.75217 z" />
+ <path
+ id="path1099"
+ style="font-size:2.90648px;fill:#00ff00;stroke-width:0.179595"
+ d="m 115.41208,8.1523996 v 0.1277262 h -1.20063 q 0.017,0.2696442 0.16179,0.4115621 0.14618,0.1404988 0.40589,0.1404988 0.15043,0 0.29093,-0.036899 0.14192,-0.036899 0.281,-0.1106961 v 0.2469373 q -0.1405,0.059606 -0.2881,0.090828 -0.14759,0.031222 -0.29944,0.031222 -0.38034,0 -0.60316,-0.2213921 -0.22139,-0.221392 -0.22139,-0.5988938 0,-0.3902744 0.21004,-0.6187624 0.21146,-0.2299071 0.56909,-0.2299071 0.32074,0 0.50665,0.2072003 0.18733,0.205781 0.18733,0.5605759 z m -0.26113,-0.076636 q -0.003,-0.2142961 -0.12063,-0.3420223 -0.11637,-0.1277261 -0.30938,-0.1277261 -0.21855,0 -0.35054,0.1234686 -0.13056,0.1234686 -0.15043,0.347699 z" />
+ <path
+ id="path1101"
+ style="font-size:2.90648px;fill:#00ff00;stroke-width:0.179595"
+ d="m 116.85397,7.4697742 v 0.2469373 q -0.1107,-0.056767 -0.22991,-0.085151 -0.11921,-0.028384 -0.24694,-0.028384 -0.19442,0 -0.29235,0.059605 -0.0965,0.059606 -0.0965,0.1788167 0,0.090827 0.0695,0.1433371 0.0695,0.05109 0.27958,0.097923 l 0.0894,0.019869 q 0.27816,0.059605 0.39454,0.1688823 0.11779,0.1078577 0.11779,0.3022853 0,0.2213921 -0.17598,0.3505374 -0.17456,0.1291454 -0.4811,0.1291454 -0.12773,0 -0.26681,-0.025545 -0.13766,-0.024126 -0.29093,-0.073797 V 8.684592 q 0.14476,0.075217 0.28526,0.1135344 0.14049,0.036899 0.27815,0.036899 0.1845,0 0.28384,-0.062444 0.0993,-0.063863 0.0993,-0.1788167 0,-0.1064384 -0.0724,-0.1632056 -0.071,-0.056767 -0.31364,-0.1092769 l -0.0908,-0.021288 q -0.24268,-0.05109 -0.35054,-0.1561097 -0.10786,-0.1064385 -0.10786,-0.2909319 0,-0.2242304 0.15895,-0.3462798 0.15895,-0.1220495 0.4513,-0.1220495 0.14476,0 0.27248,0.021288 0.12773,0.021288 0.23559,0.063863 z" />
+ <path
+ id="path1103"
+ style="font-size:2.90648px;fill:#00ff00;stroke-width:0.179595"
+ d="m 117.61465,6.9716421 v 0.4512992 h 0.53787 V 7.625884 h -0.53787 v 0.8628612 q 0,0.1944277 0.0525,0.2497757 0.0539,0.055348 0.21713,0.055348 h 0.26823 v 0.2185537 h -0.26823 q -0.30228,0 -0.41724,-0.1121152 Q 117.3521,8.786773 117.3521,8.4887452 V 7.625884 h -0.19159 V 7.4229413 h 0.19159 V 6.9716421 Z" />
+ </g>
+ </g>
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/shapes-clipboard.svg b/share/extensions/tests/data/svg/shapes-clipboard.svg
new file mode 100644
index 0000000..86b674d
--- /dev/null
+++ b/share/extensions/tests/data/svg/shapes-clipboard.svg
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1000"
+ height="1000"
+ viewBox="0 0 1000 1000"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
+ sodipodi:docname="test.svg">
+ <defs
+ id="defs33">
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path859"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ id="base"
+ showgrid="true"
+ inkscape:snap-text-baseline="true"
+ inkscape:zoom="0.6675088"
+ inkscape:cx="202.7349"
+ inkscape:cy="481.16986"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="webslicer-layer">
+ <inkscape:grid
+ type="xygrid"
+ id="grid27"
+ spacingx="10"
+ spacingy="10"
+ empspacing="10"
+ color="#8080ff"
+ opacity="0.25098039"
+ empcolor="#0000ff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <inkscape:clipboard
+ max="467.59556,450.37423"
+ min="257.53069,270.83173"
+ style="font-variation-settings:normal;opacity:1;vector-effect:none;fill:#008000;fill-opacity:0.486588;stroke-width:0.99999874;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;stop-color:#000000;stop-opacity:1" />
+ <g
+ inkscape:groupmode="layer"
+ id="webslicer-layer"
+ inkscape:label="Slide3"
+ style="display:inline">
+ <rect
+ height="201.49811"
+ width="248.69112"
+ y="353.92661"
+ x="651.3089"
+ id="slicerect1"
+ style="opacity:0.5;fill:#ff0000;stroke-width:1.11927199">
+ <desc
+ id="desc51">format: png
+dpi: 96
+layout-disposition: bg-el-norepeat
+layout-position-anchor: tl</desc>
+ </rect>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Slide2"
+ style="display:inline">
+ <circle
+ style="display:inline;fill:#000080;stroke:none"
+ id="c1"
+ cx="150"
+ cy="450"
+ r="50"
+ inkscape:label="#path3736" />
+ <ellipse
+ style="display:inline;fill:none;stroke:#ff0000;stroke-width:16"
+ id="c2"
+ cx="400"
+ cy="450"
+ rx="100"
+ ry="50"
+ inkscape:label="#path3738" />
+ <path
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="c3"
+ sodipodi:type="arc"
+ sodipodi:cx="700"
+ sodipodi:cy="450"
+ sodipodi:rx="100"
+ sodipodi:ry="50"
+ sodipodi:start="0.59013865"
+ sodipodi:end="5.6484511"
+ d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z"
+ inkscape:label="#path3740" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10;marker-start:url(#Arrow2Lstart)"
+ d="M 100,600 200,700 300,600 400,700"
+ id="p1"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3746" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10"
+ d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100"
+ id="p2"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3748" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:10"
+ id="s1"
+ sodipodi:sides="5"
+ sodipodi:cx="189.03001"
+ sodipodi:cy="847.93945"
+ sodipodi:r1="69.364868"
+ sodipodi:r2="34.682434"
+ sodipodi:arg1="0.63598373"
+ sodipodi:arg2="1.2643023"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#s1"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137"
+ id="u1"
+ transform="translate(200,2.9962152)"
+ width="100%"
+ height="100%"
+ inkscape:label="#use3808" />
+ </g>
+ <g
+ inkscape:label="Slide1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="100"
+ y="100"
+ id="t1"
+ inkscape:label="#text12"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ x="100"
+ y="100">Hello World</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="t4"
+ style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)"
+ inkscape:label="#flowRoot14"><flowRegion
+ id="flowRegion16"><rect
+ id="rect18"
+ width="264.5675"
+ height="262.16187"
+ x="105.71429"
+ y="219.66254" /></flowRegion><flowPara
+ id="flowPara20"
+ style="font-size:55.43307114px">flow text which wraps</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="200"
+ y="100"
+ id="t2"
+ inkscape:label="#text3727"><tspan
+ sodipodi:role="line"
+ id="tspan3725"
+ x="200"
+ y="100"
+ style="font-size:14.66666698px">UPPER</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="300"
+ y="100"
+ id="t3"
+ inkscape:label="#text3735"><tspan
+ sodipodi:role="line"
+ id="tspan3733"
+ x="300"
+ y="100"
+ style="font-size:14.66666698px">Multi line</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="118.33334"
+ id="tspan3737"
+ style="font-size:14.66666698px">text</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="136.66667"
+ id="tspan3739"
+ style="font-size:14.66666698px">FOO</tspan></text>
+ <g
+ id="t5"
+ transform="translate(445.71038,-129.64807)"
+ inkscape:label="#g3772">
+ <text
+ id="text3762"
+ y="229.64807"
+ x="54.289616"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="229.64807"
+ x="54.289616"
+ id="tspan3760"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">Grouped</tspan></text>
+ <text
+ id="text3766"
+ y="259.64807"
+ x="54.289619"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="259.64807"
+ x="54.289619"
+ id="tspan3764"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">text</tspan></text>
+ </g>
+ <rect
+ style="fill:#000080;stroke:none"
+ id="r1"
+ width="100"
+ height="100"
+ x="100"
+ y="200"
+ inkscape:label="#rect3732" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:16"
+ id="r2"
+ width="200"
+ height="100"
+ x="300"
+ y="200"
+ inkscape:label="#rect3734" />
+ <rect
+ style="fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="r3"
+ width="200"
+ height="100"
+ x="600"
+ y="200"
+ ry="38.950798"
+ rx="44.943226"
+ inkscape:label="#rect3744" />
+ </g>
+ <script
+ ns1:version="1.5.5"
+ id="JessyInk">// dummy
+</script>
+</svg>
diff --git a/share/extensions/tests/data/svg/shapes.svg b/share/extensions/tests/data/svg/shapes.svg
new file mode 100644
index 0000000..eb9caed
--- /dev/null
+++ b/share/extensions/tests/data/svg/shapes.svg
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="1000"
+ height="1000"
+ viewBox="0 0 1000 1000"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.4 5da689c313, 2019-01-14"
+ sodipodi:docname="test.svg">
+ <defs
+ id="defs33">
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path859"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1017"
+ id="base"
+ showgrid="true"
+ inkscape:snap-text-baseline="true"
+ inkscape:zoom="0.6675088"
+ inkscape:cx="202.7349"
+ inkscape:cy="481.16986"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="webslicer-layer">
+ <inkscape:grid
+ type="xygrid"
+ id="grid27"
+ spacingx="10"
+ spacingy="10"
+ empspacing="10"
+ color="#8080ff"
+ opacity="0.25098039"
+ empcolor="#0000ff"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <g
+ inkscape:groupmode="layer"
+ id="webslicer-layer"
+ inkscape:label="Slide3"
+ style="display:inline">
+ <rect
+ height="201.49811"
+ width="248.69112"
+ y="353.92661"
+ x="651.3089"
+ id="slicerect1"
+ style="opacity:0.5;fill:#ff0000;stroke-width:1.11927199">
+ <desc
+ id="desc51">format: png
+dpi: 96
+layout-disposition: bg-el-norepeat
+layout-position-anchor: tl</desc>
+ </rect>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Slide2"
+ style="display:inline">
+ <circle
+ style="display:inline;fill:#000080;stroke:none"
+ id="c1"
+ cx="150"
+ cy="450"
+ r="50"
+ inkscape:label="#path3736" />
+ <ellipse
+ style="display:inline;fill:none;stroke:#ff0000;stroke-width:16"
+ id="c2"
+ cx="400"
+ cy="450"
+ rx="100"
+ ry="50"
+ inkscape:label="#path3738" />
+ <path
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="c3"
+ sodipodi:type="arc"
+ sodipodi:cx="700"
+ sodipodi:cy="450"
+ sodipodi:rx="100"
+ sodipodi:ry="50"
+ sodipodi:start="0.59013865"
+ sodipodi:end="5.6484511"
+ d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z"
+ inkscape:label="#path3740" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10;marker-start:url(#Arrow2Lstart)"
+ d="M 100,600 200,700 300,600 400,700"
+ id="p1"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3746" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:10"
+ d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100"
+ id="p2"
+ inkscape:connector-curvature="0"
+ inkscape:label="#path3748" />
+ <path
+ sodipodi:type="star"
+ style="display:inline;fill:#ffff00;stroke:#008000;stroke-width:10"
+ id="s1"
+ sodipodi:sides="5"
+ sodipodi:cx="189.03001"
+ sodipodi:cy="847.93945"
+ sodipodi:r1="69.364868"
+ sodipodi:r2="34.682434"
+ sodipodi:arg1="0.63598373"
+ sodipodi:arg2="1.2643023"
+ inkscape:flatsided="false"
+ inkscape:rounded="0"
+ inkscape:randomized="0"
+ d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137" />
+ <use
+ style="display:inline"
+ x="0"
+ y="0"
+ xlink:href="#s1"
+ inkscape:transform-center-x="6.4673011"
+ inkscape:transform-center-y="-0.16430137"
+ id="u1"
+ transform="translate(200,2.9962152)"
+ width="100%"
+ height="100%"
+ inkscape:label="#use3808" />
+ </g>
+ <g
+ inkscape:label="Slide1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline">
+ <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="100"
+ y="100"
+ id="t1"
+ inkscape:label="#text12"><tspan
+ sodipodi:role="line"
+ id="tspan10"
+ x="100"
+ y="100">Hello World</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="t4"
+ style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)"
+ inkscape:label="#flowRoot14"><flowRegion
+ id="flowRegion16"><rect
+ id="rect18"
+ width="264.5675"
+ height="262.16187"
+ x="105.71429"
+ y="219.66254" /></flowRegion><flowPara
+ id="flowPara20"
+ style="font-size:55.43307114px">flow text which wraps</flowPara></flowRoot> <text
+ xml:space="preserve"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="200"
+ y="100"
+ id="t2"
+ inkscape:label="#text3727"><tspan
+ sodipodi:role="line"
+ id="tspan3725"
+ x="200"
+ y="100"
+ style="font-size:14.66666698px">UPPER</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ x="300"
+ y="100"
+ id="t3"
+ inkscape:label="#text3735"><tspan
+ sodipodi:role="line"
+ id="tspan3733"
+ x="300"
+ y="100"
+ style="font-size:14.66666698px">Multi line</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="118.33334"
+ id="tspan3737"
+ style="font-size:14.66666698px">text</tspan><tspan
+ sodipodi:role="line"
+ x="300"
+ y="136.66667"
+ id="tspan3739"
+ style="font-size:14.66666698px">FOO</tspan></text>
+ <g
+ id="t5"
+ transform="translate(445.71038,-129.64807)"
+ inkscape:label="#g3772">
+ <text
+ id="text3762"
+ y="229.64807"
+ x="54.289616"
+ style="font-size:10.58333302px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="229.64807"
+ x="54.289616"
+ id="tspan3760"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">Grouped</tspan></text>
+ <text
+ id="text3766"
+ y="259.64807"
+ x="54.289619"
+ style="font-size:14.66666698px;line-height:1.25;font-family:sans-serif;fill:#000000;stroke:none"
+ xml:space="preserve"><tspan
+ y="259.64807"
+ x="54.289619"
+ id="tspan3764"
+ sodipodi:role="line"
+ style="font-size:14.66666698px">text</tspan></text>
+ </g>
+ <rect
+ style="fill:#000080;stroke:none"
+ id="r1"
+ width="100"
+ height="100"
+ x="100"
+ y="200"
+ inkscape:label="#rect3732" />
+ <rect
+ style="fill:none;stroke:#ff0000;stroke-width:16"
+ id="r2"
+ width="200"
+ height="100"
+ x="300"
+ y="200"
+ inkscape:label="#rect3734" />
+ <rect
+ style="fill:#ffff00;stroke:#008000;stroke-width:16"
+ id="r3"
+ width="200"
+ height="100"
+ x="600"
+ y="200"
+ ry="38.950798"
+ rx="44.943226"
+ inkscape:label="#rect3744" />
+ </g>
+ <script
+ ns1:version="1.5.5"
+ id="JessyInk">// dummy
+</script>
+</svg>
diff --git a/share/extensions/tests/data/svg/shapes_cmyk.svg b/share/extensions/tests/data/svg/shapes_cmyk.svg
new file mode 100644
index 0000000..bc35be8
--- /dev/null
+++ b/share/extensions/tests/data/svg/shapes_cmyk.svg
@@ -0,0 +1,302 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ sodipodi:docname="shapes_cmyk.svg"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 1000 1000"
+ height="1000"
+ width="1000">
+ <metadata
+ id="metadata41">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs33">
+ <color-profile
+ xlink:href="file:///usr/share/color/icc/ghostscript/default_cmyk.icc"
+ name="Artifex-CMYK-SWOP-Profile"
+ id="color-profile43" />
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="Arrow2Lstart"
+ refX="0.0"
+ refY="0.0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="scale(1.1) translate(1,0)"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#242423 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke-opacity:1;fill:#242423 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1"
+ id="path859" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ inkscape:document-rotation="0"
+ inkscape:current-layer="t5"
+ inkscape:window-maximized="1"
+ inkscape:window-y="0"
+ inkscape:window-x="1920"
+ inkscape:cy="268.32956"
+ inkscape:cx="268.39273"
+ inkscape:zoom="1.3350176"
+ inkscape:snap-text-baseline="true"
+ showgrid="true"
+ id="base"
+ inkscape:window-height="1055"
+ inkscape:window-width="1920"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ guidetolerance="10"
+ gridtolerance="10"
+ objecttolerance="10"
+ borderopacity="1"
+ bordercolor="#666666"
+ pagecolor="#ffffff">
+ <inkscape:grid
+ empopacity="0.25098039"
+ empcolor="#0000ff"
+ opacity="0.25098039"
+ color="#8080ff"
+ empspacing="10"
+ spacingy="10"
+ spacingx="10"
+ id="grid27"
+ type="xygrid" />
+ </sodipodi:namedview>
+ <g
+ style="display:inline"
+ inkscape:label="Slide3"
+ id="webslicer-layer"
+ inkscape:groupmode="layer">
+ <rect
+ style="opacity:0.5;fill:#eb2636 icc-color(Artifex-CMYK-SWOP-Profile, 0.00794983, 1, 0.89459336, 0.00284903);stroke-width:1.11927199;fill-opacity:1"
+ id="slicerect1"
+ x="651.3089"
+ y="353.92661"
+ width="248.69112"
+ height="201.49811">
+ <desc
+ id="desc51">format: png
+dpi: 96
+layout-disposition: bg-el-norepeat
+layout-position-anchor: tl</desc>
+ </rect>
+ </g>
+ <g
+ style="display:inline"
+ inkscape:label="Slide2"
+ id="layer2"
+ inkscape:groupmode="layer">
+ <circle
+ inkscape:label="#path3736"
+ r="50"
+ cy="450"
+ cx="150"
+ id="c1"
+ style="display:inline;fill:#202660 icc-color(Artifex-CMYK-SWOP-Profile, 1, 0.92968643, 0.05864042, 0.44525826);stroke:none;fill-opacity:1" />
+ <ellipse
+ inkscape:label="#path3738"
+ ry="50"
+ rx="100"
+ cy="450"
+ cx="400"
+ id="c2"
+ style="display:inline;fill:none;stroke:#ed272d icc-color(Artifex-CMYK-SWOP-Profile, 0, 1, 1, 0);stroke-width:16;stroke-opacity:1" />
+ <path
+ inkscape:label="#path3740"
+ d="m 783.08635,477.82381 a 100,50 0 0 1 -111.09848,20.17442 100,50 0 0 1 -71.96301,-46.88343 100,50 0 0 1 67.71127,-48.44091 100,50 0 0 1 112.7868,17.67793 L 700,450 Z"
+ sodipodi:end="5.6484511"
+ sodipodi:start="0.59013865"
+ sodipodi:ry="50"
+ sodipodi:rx="100"
+ sodipodi:cy="450"
+ sodipodi:cx="700"
+ sodipodi:type="arc"
+ id="c3"
+ style="display:inline;fill:#f7ec10 icc-color(Artifex-CMYK-SWOP-Profile, 0.06144808, 0, 1, 0);stroke:#067e44 icc-color(Artifex-CMYK-SWOP-Profile, 0.92336918999999995, 0.24440375000000000, 1, 0.15349050000000000);stroke-width:16;stroke-opacity:1;fill-opacity:1" />
+ <path
+ inkscape:label="#path3746"
+ inkscape:connector-curvature="0"
+ id="p1"
+ d="M 100,600 200,700 300,600 400,700"
+ style="display:inline;fill:none;stroke:#242423 icc-color(Artifex-CMYK-SWOP-Profile, 0.11226545, 0.04844121, 0.1516789, 0.99902779);stroke-width:10;marker-start:url(#Arrow2Lstart);stroke-opacity:1" />
+ <path
+ inkscape:label="#path3748"
+ inkscape:connector-curvature="0"
+ id="p2"
+ d="m 500,600 c 0,0 0,100 100,100 100,0 0,-100 100,-100 100,0 100,100 100,100"
+ style="display:inline;fill:none;stroke:#242423 icc-color(Artifex-CMYK-SWOP-Profile, 0.11226545, 0.04844121, 0.1516789, 0.99902779);stroke-width:10;stroke-opacity:1" />
+ <path
+ inkscape:transform-center-y="-0.16430137"
+ inkscape:transform-center-x="6.4673011"
+ d="m 244.8332,889.14005 -45.33887,-8.13446 -32.40428,32.73753 -6.27415,-45.63352 -41.14872,-20.70184 41.46124,-20.06861 6.97297,-45.53197 31.89861,33.23044 45.45824,-7.43847 -21.74681,40.60615 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0"
+ inkscape:flatsided="false"
+ sodipodi:arg2="1.2643023"
+ sodipodi:arg1="0.63598373"
+ sodipodi:r2="34.682434"
+ sodipodi:r1="69.364868"
+ sodipodi:cy="847.93945"
+ sodipodi:cx="189.03001"
+ sodipodi:sides="5"
+ id="s1"
+ style="display:inline;fill:#f7ec10 icc-color(Artifex-CMYK-SWOP-Profile, 0.06144808, 0, 1, 0);stroke:#067e44 icc-color(Artifex-CMYK-SWOP-Profile, 0.92336918999999995, 0.24440375000000000, 1, 0.15349050000000000);stroke-width:10;stroke-opacity:1;fill-opacity:1"
+ sodipodi:type="star" />
+ <use
+ inkscape:label="#use3808"
+ height="100%"
+ width="100%"
+ transform="translate(200,2.9962152)"
+ id="u1"
+ inkscape:transform-center-y="-0.16430137"
+ inkscape:transform-center-x="6.4673011"
+ xlink:href="#s1"
+ y="0"
+ x="0"
+ style="display:inline" />
+ </g>
+ <g
+ style="display:inline"
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Slide1">
+ <text
+ inkscape:label="#text12"
+ id="t1"
+ y="100"
+ x="100"
+ style="font-size:14.6667px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ xml:space="preserve"><tspan
+ y="100"
+ x="100"
+ id="tspan10"
+ sodipodi:role="line">Hello World</tspan></text>
+ <flowRoot
+ inkscape:label="#flowRoot14"
+ transform="matrix(0.26458333,0,0,0.26458333,372.02961,28.904505)"
+ style="font-size:40px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ id="t4"
+ xml:space="preserve"><flowRegion
+ style="fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ id="flowRegion16"><rect
+ style="fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ y="219.66254"
+ x="105.71429"
+ height="262.16187"
+ width="264.5675"
+ id="rect18" /></flowRegion><flowPara
+ style="font-size:55.4331px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ id="flowPara20">flow text which wraps</flowPara></flowRoot>
+ <text
+ inkscape:label="#text3727"
+ id="t2"
+ y="100"
+ x="200"
+ style="font-size:14.6667px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ xml:space="preserve"><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ y="100"
+ x="200"
+ id="tspan3725"
+ sodipodi:role="line">UPPER</tspan></text>
+ <text
+ inkscape:label="#text3735"
+ id="t3"
+ y="100"
+ x="300"
+ style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ xml:space="preserve"><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ y="100"
+ x="300"
+ id="tspan3733"
+ sodipodi:role="line">Multi line</tspan><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ id="tspan3737"
+ y="118.33334"
+ x="300"
+ sodipodi:role="line">text</tspan><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ id="tspan3739"
+ y="136.66667"
+ x="300"
+ sodipodi:role="line">FOO</tspan></text>
+ <g
+ inkscape:label="#g3772"
+ transform="translate(445.71038,-129.64807)"
+ id="t5">
+ <text
+ xml:space="preserve"
+ style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ x="54.289616"
+ y="229.64807"
+ id="text3762"><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ sodipodi:role="line"
+ id="tspan3760"
+ x="54.289616"
+ y="229.64807">Grouped</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:14.6667px;line-height:1.25;font-family:sans-serif;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);stroke:none;fill-opacity:1;"
+ x="54.289619"
+ y="259.64807"
+ id="text3766"><tspan
+ style="font-size:14.6667px;fill:#171718 icc-color(Artifex-CMYK-SWOP-Profile, 0.74605936, 0.67989624, 0.65342184, 0.90048066);fill-opacity:1;"
+ sodipodi:role="line"
+ id="tspan3764"
+ x="54.289619"
+ y="259.64807">text</tspan></text>
+ </g>
+ <rect
+ inkscape:label="#rect3732"
+ y="200"
+ x="100"
+ height="100"
+ width="100"
+ id="r1"
+ style="fill:#202660 icc-color(Artifex-CMYK-SWOP-Profile, 1, 0.92968643, 0.05864042, 0.44525826);stroke:none;fill-opacity:1" />
+ <rect
+ inkscape:label="#rect3734"
+ y="200"
+ x="300"
+ height="100"
+ width="200"
+ id="r2"
+ style="fill:none;stroke:#ed272d icc-color(Artifex-CMYK-SWOP-Profile, 0, 1, 1, 0);stroke-width:16;stroke-opacity:1" />
+ <rect
+ inkscape:label="#rect3744"
+ rx="44.943226"
+ ry="38.950798"
+ y="200"
+ x="600"
+ height="100"
+ width="200"
+ id="r3"
+ style="fill:#f7ec10 icc-color(Artifex-CMYK-SWOP-Profile, 0.06144808, 0, 1, 0);stroke:#067e44 icc-color(Artifex-CMYK-SWOP-Profile, 0.92336918999999995, 0.24440375000000000, 1, 0.15349050000000000);stroke-width:16;stroke-opacity:1;fill-opacity:1" />
+ </g>
+ <script
+ id="JessyInk"
+ ns1:version="1.5.5">// dummy
+</script>
+</svg>
diff --git a/share/extensions/tests/data/svg/simpletransform.test.svg b/share/extensions/tests/data/svg/simpletransform.test.svg
new file mode 100644
index 0000000..62876ee
--- /dev/null
+++ b/share/extensions/tests/data/svg/simpletransform.test.svg
@@ -0,0 +1,8 @@
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100" height="100">
+ <g>
+ <defs>
+ <rect width="50" height="50" id="rect"/>
+ </defs>
+ <use xlink:href="#rect" transform="scale(.5)"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/share/extensions/tests/data/svg/single_box.svg b/share/extensions/tests/data/svg/single_box.svg
new file mode 100644
index 0000000..094233d
--- /dev/null
+++ b/share/extensions/tests/data/svg/single_box.svg
@@ -0,0 +1,62 @@
+<?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"
+ width="744.09448819"
+ height="1052.3622047"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.3.1 r9886"
+ sodipodi:docname="New document 1">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.35"
+ inkscape:cx="375"
+ inkscape:cy="514.28571"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="479"
+ inkscape:window-height="379"
+ inkscape:window-x="1319"
+ inkscape:window-y="75"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ style="opacity:0.5;fill:#6900ff;fill-opacity:0.36000001;stroke:#cae8ef;stroke-width:7.19999981;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+ id="rect3006"
+ width="237.14285"
+ height="305.71429"
+ x="285.71429"
+ y="406.64789" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/slicer.svg b/share/extensions/tests/data/svg/slicer.svg
new file mode 100644
index 0000000..a485c35
--- /dev/null
+++ b/share/extensions/tests/data/svg/slicer.svg
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ sodipodi:docname="layer2slice.svg"
+ inkscape:version="1.0beta1 (32d4812, 2019-09-19)"
+ id="svg4111"
+ version="1.1"
+ viewBox="0 0 210 297"
+ height="297mm"
+ width="210mm">
+ <defs
+ id="defs4105" />
+ <sodipodi:namedview
+ inkscape:window-maximized="0"
+ inkscape:window-y="347"
+ inkscape:window-x="2106"
+ inkscape:window-height="778"
+ inkscape:window-width="1280"
+ showgrid="false"
+ inkscape:document-rotation="0"
+ inkscape:current-layer="layer2"
+ inkscape:document-units="mm"
+ inkscape:cy="560"
+ inkscape:cx="-2.8571429"
+ inkscape:zoom="0.35"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0.0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#ffffff"
+ id="base" />
+ <metadata
+ id="metadata4108">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <rect
+ y="34.017857"
+ x="34.773811"
+ height="105.07738"
+ width="107.34524"
+ id="rect4113"
+ style="fill:#241c1c;stroke-width:0.264583" />
+ </g>
+ <g
+ inkscape:label="slices"
+ id="layer2"
+ inkscape:groupmode="layer">
+ <rect
+ inkscape:label=""
+ y="92.226196"
+ x="101.29762"
+ height="114.1488"
+ width="82.398804"
+ id="slice1"
+ style="fill:#ffff00;stroke-width:0.264583" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/symbol.svg b/share/extensions/tests/data/svg/symbol.svg
new file mode 100644
index 0000000..a8e20f3
--- /dev/null
+++ b/share/extensions/tests/data/svg/symbol.svg
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:ns1="https://launchpad.net/jessyink"
+ 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:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
+ <defs
+ id="defs33">
+ <symbol
+ transform="translate(5,5)"
+ id="AirTransportation_Inv">
+ <title
+ id="title1727">Air Transportation</title>
+ <rect
+ x="0.5"
+ y="0.5"
+ width="71"
+ height="71"
+ ry="6"
+ style="stroke:white"
+ id="rect1729" />
+ <path
+ d="m 39,10 0,18 25,15 0,7 -25,-9 0,14 6,4 0,6 -9,-3 -9,3 0,-6 6,-4 0,-14 -25,9 0,-7 25,-15 0,-18 a 3,3 0 0 1 6,0 z"
+ style="fill:white;stroke:none"
+ id="path1731" />
+ </symbol>
+ </defs>
+ <g id="body">
+ <use
+ transform="translate(13,11)"
+ height="100%"
+ width="100%"
+ y="0"
+ x="0"
+ id="plane01"
+ style="fill:#000000;stroke:#000000"
+ xlink:href="#AirTransportation_Inv" />
+ </g>
+</svg>
diff --git a/share/extensions/tests/data/svg/with-lpe.svg b/share/extensions/tests/data/svg/with-lpe.svg
new file mode 100644
index 0000000..89d590e
--- /dev/null
+++ b/share/extensions/tests/data/svg/with-lpe.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg1956"
+ version="1.1"
+ viewBox="0 0 210 297"
+ height="297mm"
+ width="210mm">
+ <defs
+ id="defs1950" />
+ <metadata
+ id="metadata1953">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <path id="lpe" d="M 30 30 L -10 -10 Z" inkscape:original-d="M 20 20 L 10 10 Z" />
+ <path id="nolpe" d="M 30 30 L -10 -10 Z" />
+</svg>