diff --git a/NOTICE b/NOTICE
index f029bbbfd..fe6e2dcb1 100644
--- a/NOTICE
+++ b/NOTICE
@@ -4,7 +4,7 @@ Copyright 2020-2024 Contributors to the EchoSVG project
Copyright 1999-2020 The Apache Software Foundation
This product includes software developed at The Apache Software Foundation
-(http://www.apache.org/) under the 'Apache Batik' project.
+(https://www.apache.org/) under the 'Apache Batik' project.
This software contains code from the World Wide Web Consortium (W3C) for the
Document Object Model API (DOM API) and SVG Document Type Definition (DTD).
@@ -14,7 +14,12 @@ Standardization for the definition of character entities used in the software's
documentation.
This product includes images from the Tango Desktop Project
-(http://tango.freedesktop.org/).
+(Former website http://tango.freedesktop.org/ archived at
+https://web.archive.org/web/20201024165718/http://tango-project.org/).
This product includes images from the Pasodoble Icon Theme
-(http://www.jesusda.com/projects/pasodoble).
+(https://www.jesusda.com/projects/pasodoble).
+
+This product's test suite includes images from the Canvg Project
+(https://canvg.js.org/, https://github.com/canvg/canvg), which uses a MIT
+license. See samples/canvg/LICENSE.
diff --git a/echosvg-test/build.gradle b/echosvg-test/build.gradle
index f260ce116..bb244d857 100644
--- a/echosvg-test/build.gradle
+++ b/echosvg-test/build.gradle
@@ -59,9 +59,9 @@ publishing.publications.maven(MavenPublication).pom {
test {
minHeapSize = '128m'
- maxHeapSize = '512m'
+ maxHeapSize = '1024m'
- jvmArgs '-Xmx2G'
+ jvmArgs '-Xmx3G'
useJUnitPlatform() {
excludeTags 'SecMan'
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/svggen/SVGGeneratorTests.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/svggen/SVGGeneratorTests.java
index d26025298..0a5f2ffb8 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/svggen/SVGGeneratorTests.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/svggen/SVGGeneratorTests.java
@@ -269,8 +269,8 @@ void runTests(String painterClassname) throws IOException, TranscoderException,
GeneratorContext genctxt = makeGeneratorContext(painter, painterClassname);
genctxt.runTest(false);
- float allowedPercentBelowThreshold = 0.00001f;
- float allowedPercentOverThreshold = 0.00001f;
+ float allowedPercentBelowThreshold = 0.01f;
+ float allowedPercentOverThreshold = 0.01f;
SVGRenderingAccuracyTest t = makeSVGRenderingAccuracyTest(painter, painterClassname, PLAIN_GENERATION_PREFIX);
t.runTest(allowedPercentBelowThreshold, allowedPercentOverThreshold);
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractSamplesRendering.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractSamplesRendering.java
index e17a93c82..4f657b222 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractSamplesRendering.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/AbstractSamplesRendering.java
@@ -51,6 +51,14 @@ void testNV(String file) throws TranscoderException, IOException {
test(file, false);
}
+ float getBelowThresholdAllowed() {
+ return 0.2f;
+ }
+
+ float getOverThresholdAllowed() {
+ return 0.05f;
+ }
+
/**
* Test the rendering of a file with the given user language.
*
@@ -68,7 +76,7 @@ void test(String file, String lang) throws TranscoderException, IOException {
RenderingTest runner = new RenderingTest();
runner.setUserLanguage(lang);
runner.setFile(file);
- runner.runTest(0.00001f, 0.00001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -88,7 +96,7 @@ void test(String file, boolean validating) throws TranscoderException, IOExcepti
RenderingTest runner = new RenderingTest();
runner.setValidating(validating);
runner.setFile(file);
- runner.runTest(0.00001f, 0.00001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -111,7 +119,7 @@ void testNVErrIgnore(String file, String media, int expectedErrorCount)
RenderingTest runner = new ErrIgnoreTest(expectedErrorCount);
runner.setMedia(media);
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
void testAlternateSheet(String file, String alt, boolean validating)
@@ -120,7 +128,7 @@ void testAlternateSheet(String file, String alt, boolean validating)
runner.setValidating(validating);
runner.setAlternateSheet(alt);
runner.setFile(file);
- runner.runTest(0.00001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
void testUserSheet(String file, boolean validating) throws TranscoderException, IOException {
@@ -128,7 +136,7 @@ void testUserSheet(String file, boolean validating) throws TranscoderException,
runner.setValidating(validating);
runner.setUserSheetClasspath(AltUserSheetRenderingTest.DEFAULT_USER_SHEET);
runner.setFile(file);
- runner.runTest(0.00001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -146,7 +154,7 @@ void testUserSheet(String file, boolean validating) throws TranscoderException,
void testXHTML(String file) throws TranscoderException, IOException {
RenderingTest runner = new XHTMLRenderingAccuracyTest();
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -169,7 +177,7 @@ void testXHTMLErrIgnore(String file, String media, int expectedErrorCount)
RenderingTest runner = new XHTMLErrIgnoreTest(expectedErrorCount);
runner.setMedia(media);
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -204,20 +212,25 @@ void testHTML(String file) throws TranscoderException, IOException {
void testHTML(String file, String selector) throws TranscoderException, IOException {
RenderingTest runner = new HTMLRenderingAccuracyTest(selector);
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
void testResolutionPxMM(String file, float pxToMM) throws TranscoderException, IOException {
RenderingTest runner = new ResolutionPxMmRenderingTest(pxToMM);
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
void testAnim(String file, float[] times) throws TranscoderException, IOException {
+ testAnim(file, times, true);
+ }
+
+ void testAnim(String file, float[] times, boolean validate) throws TranscoderException, IOException {
for (float time : times) {
RenderingTest runner = new SVGAnimationRenderingAccuracyTest(time);
+ runner.setValidating(validate);
runner.setFile(file);
- runner.runTest(0.000001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
}
@@ -236,7 +249,7 @@ void testAnim(String file, float[] times) throws TranscoderException, IOExceptio
void testDynamicUpdate(String file) throws TranscoderException, IOException {
JSVGRenderingAccuracyTest runner = new JSVGRenderingAccuracyTest();
runner.setFile(file);
- runner.runTest(0.00001f, 0.00001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
}
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ErrIgnoreTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ErrIgnoreTest.java
index 1baabb803..c0b27b645 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ErrIgnoreTest.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/ErrIgnoreTest.java
@@ -35,7 +35,6 @@
import io.sf.carte.echosvg.dom.util.SAXDocumentFactory;
import io.sf.carte.echosvg.transcoder.DummyErrorHandler;
import io.sf.carte.echosvg.transcoder.ErrorHandler;
-import io.sf.carte.echosvg.transcoder.SVGAbstractTranscoder;
import io.sf.carte.echosvg.transcoder.image.ImageTranscoder;
import io.sf.carte.echosvg.util.SVGConstants;
@@ -83,7 +82,8 @@ protected UserAgent createUserAgent() {
return new TestTranscoderUserAgent();
}
- class TestTranscoderUserAgent extends SVGAbstractTranscoder.SVGAbstractTranscoderUserAgent {
+ class TestTranscoderUserAgent
+ extends NoStackTraceTranscoder.NoStackTraceTranscoderUserAgent {
public TestTranscoderUserAgent() {
super();
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java
index 77c4a8d8a..97ed3aeb1 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SVGRenderingAccuracyTest.java
@@ -201,6 +201,47 @@ protected void transcode(Document document, String uri, TranscoderOutput output)
SVGRenderingAccuracyTest.this.manipulateSVGDocument(document);
super.transcode(document, uri, output);
}
+
+ @Override
+ protected UserAgent createUserAgent() {
+ return new FailOnErrorTranscoderUserAgent();
+ }
+
+ /**
+ * A Transcoder user agent that does not print a stack trace.
+ */
+ class FailOnErrorTranscoderUserAgent
+ extends SVGAbstractTranscoder.SVGAbstractTranscoderUserAgent {
+
+ @Override
+ public void displayError(String message) {
+ TranscoderException ex = new TranscoderException(message);
+ try {
+ InternalPNGTranscoder.this.handler.error(ex);
+ } catch (TranscoderException e) {
+ throw new RuntimeException(e);
+ }
+ throw new RuntimeException(message);
+ }
+
+ /**
+ * Displays the specified error using the ErrorHandler
.
+ *
+ * And does not print a stack trace.
+ *
+ */
+ @Override
+ public void displayError(Exception e) {
+ try {
+ InternalPNGTranscoder.this.handler.error(new TranscoderException(e));
+ } catch (TranscoderException ex) {
+ throw new RuntimeException(ex);
+ }
+ throw new RuntimeException(e);
+ }
+
+ }
+
}
/**
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesCanvgRenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesCanvgRenderingTest.java
new file mode 100644
index 000000000..418c7027d
--- /dev/null
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesCanvgRenderingTest.java
@@ -0,0 +1,1343 @@
+/*
+
+ See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ */
+package io.sf.carte.echosvg.test.svg;
+
+import java.io.IOException;
+
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import io.sf.carte.echosvg.test.TestFonts;
+import io.sf.carte.echosvg.transcoder.TranscoderException;
+
+/**
+ * This test renders a number of SVG files under the {@code samples/spec12}
+ * directory, and compares the result with a reference image. See issue #92.
+ *
+ * Beware that when a test references an issue number, in principle it will be
+ * an issue in the Canvg project, not in EchoSVG.
+ *
+ *
+ * Read the {@code IMAGE_COMPARISONS.md} file for details about the handling of
+ * candidate and reference images.
+ *
+ */
+public class SamplesCanvgRenderingTest extends AbstractSamplesRendering {
+
+ private static final String BROWSER_MEDIA = "screen";
+
+ @BeforeAll
+ public static void setUpBeforeClass() throws Exception {
+ TestFonts.loadTestFonts();
+ }
+
+ /* @formatter:off
+ *
+ * Images obtained from https://github.com/canvg/canvg/tree/master/test/svgs
+ *
+ * Test methods generated with:
+ *
+ * for f in *;
+ * do echo "@Test";
+ * echo "public void test${f^}() throws TranscoderException, IOException {"|tr '-' '_'|sed 's/\.svg//';
+ * echo " test(\"samples/canvg/${f}\");";
+ * echo "}";
+ * echo;
+ * done
+ *
+ * @formatter:on
+ */
+
+ @Test
+ public void test1() throws TranscoderException, IOException {
+ float[] times = { 0f, 1f, 2f };
+ testAnim("samples/canvg/1.svg", times, false);
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void test2() throws TranscoderException, IOException {
+ testNV("samples/canvg/2.svg");
+ }
+
+ @Test
+ public void test3() throws TranscoderException, IOException {
+ test("samples/canvg/3.svg");
+ }
+
+ @Test
+ public void test4() throws TranscoderException, IOException {
+ test("samples/canvg/4.svg");
+ }
+
+ @Test
+ public void test5() throws TranscoderException, IOException {
+ test("samples/canvg/5.svg");
+ }
+
+ @Test
+ public void test6() throws TranscoderException, IOException {
+ test("samples/canvg/6.svg");
+ }
+
+ @Test
+ public void test7() throws TranscoderException, IOException {
+ test("samples/canvg/7.svg");
+ }
+
+ @Test
+ public void test8() throws TranscoderException, IOException {
+ test("samples/canvg/8.svg");
+ }
+
+ @Test
+ public void test9() throws TranscoderException, IOException {
+ test("samples/canvg/9.svg");
+ }
+
+ @Test
+ public void test10() throws TranscoderException, IOException {
+ test("samples/canvg/10.svg");
+ }
+
+ @Test
+ public void test11() throws TranscoderException, IOException {
+ test("samples/canvg/11.svg");
+ }
+
+ @Test
+ public void test12() throws TranscoderException, IOException {
+ test("samples/canvg/12.svg");
+ }
+
+ @Test
+ public void test13() throws TranscoderException, IOException {
+ test("samples/canvg/13.svg");
+ }
+
+ @Test
+ public void test14() throws TranscoderException, IOException {
+ test("samples/canvg/14.svg");
+ }
+
+ @Test
+ public void test15() throws TranscoderException, IOException {
+ test("samples/canvg/15.svg");
+ }
+
+ @Test
+ public void test16() throws TranscoderException, IOException {
+ test("samples/canvg/16.svg");
+ }
+
+ @Test
+ public void test17() throws TranscoderException, IOException {
+ test("samples/canvg/17.svg");
+ }
+
+ @Test
+ public void test18() throws TranscoderException, IOException {
+ test("samples/canvg/18.svg");
+ }
+
+ @Test
+ public void test19() throws TranscoderException, IOException {
+ test("samples/canvg/19.svg");
+ }
+
+ @Test
+ public void test20() throws TranscoderException, IOException {
+ float[] times = { 0f, 2f, 4f };
+ testAnim("samples/canvg/20.svg", times, false);
+ }
+
+ @Test
+ public void test21() throws TranscoderException, IOException {
+ float[] times = { 0f, 2f, 4f };
+ testAnim("samples/canvg/21.svg", times, false);
+ }
+
+ @Test
+ public void test22() throws TranscoderException, IOException {
+ testNV("samples/canvg/22.svg");
+ }
+
+ @Test
+ public void test23() throws TranscoderException, IOException {
+ test("samples/canvg/23.svg");
+ }
+
+ @Test
+ public void test24() throws TranscoderException, IOException {
+ test("samples/canvg/24.svg");
+ }
+
+ @Test
+ public void test25() throws TranscoderException, IOException {
+ test("samples/canvg/25.svg");
+ }
+
+ @Test
+ public void test26() throws TranscoderException, IOException {
+ testNV("samples/canvg/26.svg");
+ }
+
+ @Test
+ public void test27() throws TranscoderException, IOException {
+ test("samples/canvg/27.svg");
+ }
+
+ @Test
+ public void test28() throws TranscoderException, IOException {
+ test("samples/canvg/28.svg");
+ }
+
+ @Test
+ public void test29() throws TranscoderException, IOException {
+ test("samples/canvg/29.svg");
+ }
+
+ @Test
+ public void test30() throws TranscoderException, IOException {
+ test("samples/canvg/30.svg");
+ }
+
+ @Test
+ public void test31() throws TranscoderException, IOException {
+ test("samples/canvg/31.svg");
+ }
+
+ @Test
+ public void test32() throws TranscoderException, IOException {
+ testNV("samples/canvg/32.svg");
+ }
+
+ @Test
+ public void test33() throws TranscoderException, IOException {
+ test("samples/canvg/33.svg");
+ }
+
+ @Test
+ public void test34() throws TranscoderException, IOException {
+ testNV("samples/canvg/34.svg");
+ }
+
+ @Test
+ public void test35() throws TranscoderException, IOException {
+ testNV("samples/canvg/35.svg");
+ }
+
+ @Test
+ public void test36() throws TranscoderException, IOException {
+ test("samples/canvg/36.svg");
+ }
+
+ @Test
+ public void test37() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/37.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue3() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue3.svg");
+ }
+
+ @Test
+ public void testIssue8() throws TranscoderException, IOException {
+ test("samples/canvg/issue8.svg");
+ }
+
+ @Test
+ public void testIssue24() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue24.svg");
+ }
+
+ @Test
+ public void testIssue25() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue25.svg");
+ }
+
+ @Test
+ public void testIssue30() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue30.svg");
+ }
+
+ @Test
+ public void testIssue31() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue31.svg");
+ }
+
+ @Test
+ public void testIssue32() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue32.svg");
+ }
+
+ @Test
+ public void testIssue33() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue33.svg");
+ }
+
+ @Test
+ public void testIssue34() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue34.svg");
+ }
+
+ @Test
+ public void testIssue35() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue35.svg");
+ }
+
+ @Test
+ public void testIssue36() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue36.svg");
+ }
+
+ @Test
+ public void testIssue38() throws TranscoderException, IOException {
+ test("samples/canvg/issue38.svg");
+ }
+
+ @Test
+ public void testIssue39() throws TranscoderException, IOException {
+ test("samples/canvg/issue39.svg");
+ }
+
+ @Test
+ public void testIssue40() throws TranscoderException, IOException {
+ test("samples/canvg/issue40.svg");
+ }
+
+ @Test
+ public void testIssue41() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue41.svg", BROWSER_MEDIA, 2);
+ }
+
+ @Test
+ public void testIssue42() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue42.svg");
+ }
+
+ @Test
+ public void testIssue44() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue44.svg");
+ }
+
+ @Test
+ public void testIssue45() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue45.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue46() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue46.svg");
+ }
+
+ @Test
+ public void testIssue48() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue48.svg");
+ }
+
+ @Test
+ public void testIssue50() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue50.svg");
+ }
+
+ @Test
+ public void testIssue52() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue52.svg");
+ }
+
+ @Test
+ public void testIssue54() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue54.svg");
+ }
+
+ @Test
+ public void testIssue55() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue55.svg");
+ }
+
+ @Test
+ public void testIssue57() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue57.svg");
+ }
+
+ @Test
+ public void testIssue57b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue57b.svg");
+ }
+
+ @Test
+ public void testIssue66() throws TranscoderException, IOException {
+ test("samples/canvg/issue66.svg");
+ }
+
+ @Test
+ public void testIssue67() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue67.svg");
+ }
+
+ @Test
+ public void testIssue70() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue70.svg");
+ }
+
+ @Test
+ public void testIssue71() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue71.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue73() throws TranscoderException, IOException {
+ float[] times = { 2.7f };
+ testAnim("samples/canvg/issue73.svg", times, false);
+ }
+
+ @Test
+ public void testIssue75() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue75.svg");
+ }
+
+ @Test
+ public void testIssue76() throws TranscoderException, IOException {
+ test("samples/canvg/issue76.svg");
+ }
+
+ @Test
+ public void testIssue77() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue77.svg");
+ }
+
+ @Test
+ public void testIssue79() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue79.svg");
+ }
+
+ /*
+ * TODO: investigate.
+ */
+ @Disabled
+ @Test
+ public void testIssue82() throws TranscoderException, IOException {
+ test("samples/canvg/issue82.svg");
+ }
+
+ @Test
+ public void testIssue85() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue85.svg");
+ }
+
+ @Test
+ public void testIssue88() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue88.svg");
+ }
+
+ @Test
+ public void testIssue89() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue89.svg");
+ }
+
+ @Test
+ public void testIssue91() throws TranscoderException, IOException {
+ test("samples/canvg/issue91.svg");
+ }
+
+ /*
+ * TODO: investigate.
+ */
+ @Disabled
+ @Test
+ public void testIssue94() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue94.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue97() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue97.svg");
+ }
+
+ @Test
+ public void testIssue98() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue98.svg");
+ }
+
+ @Test
+ public void testIssue99() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue99.svg");
+ }
+
+ @Test
+ public void testIssue104() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue104.svg");
+ }
+
+ @Test
+ public void testIssue106() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue106.svg");
+ }
+
+ @Test
+ public void testIssue108() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue108.svg");
+ }
+
+ @Test
+ public void testIssue112() throws TranscoderException, IOException {
+ test("samples/canvg/issue112.svg");
+ }
+
+ @Test
+ public void testIssue114() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue114.svg");
+ }
+
+ @Test
+ public void testIssue115() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue115.svg", BROWSER_MEDIA, 1);
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue116() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue116.svg");
+ }
+
+ @Test
+ public void testIssue117() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue117.svg");
+ }
+
+ @Test
+ public void testIssue121() throws TranscoderException, IOException {
+ float[] times = { 0f, 1f };
+ testAnim("samples/canvg/issue121.svg", times, false);
+ }
+
+ @Test
+ public void testIssue122() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue122.svg");
+ }
+
+ @Test
+ public void testIssue125a() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue125a.svg");
+ }
+
+ @Test
+ public void testIssue125b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue125b.svg");
+ }
+
+ @Test
+ public void testIssue128() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue128.svg");
+ }
+
+ @Test
+ public void testIssue132() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue132.svg");
+ }
+
+ /**
+ * Disabled due to security restrictions.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Disabled
+ @Test
+ public void testIssue134() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue134.svg");
+ }
+
+ @Test
+ public void testIssue135() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue135.svg");
+ }
+
+ @Test
+ public void testIssue137() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue137.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue138() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue138.svg", BROWSER_MEDIA, 1);
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue142() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue142.svg");
+ }
+
+ @Test
+ public void testIssue144() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue144.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue145() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue145.svg");
+ }
+
+ @Test
+ public void testIssue158() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue158.svg");
+ }
+
+ /**
+ * Disabled due to security restrictions.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Disabled
+ @Test
+ public void testIssue161() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue161.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue166() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue166.svg");
+ }
+
+ @Test
+ public void testIssue172() throws TranscoderException, IOException {
+ test("samples/canvg/issue172.svg");
+ }
+
+ @Test
+ public void testIssue175() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue175.svg");
+ }
+
+ @Test
+ public void testIssue176() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue176.svg");
+ }
+
+ @Test
+ public void testIssue178() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue178.svg");
+ }
+
+ @Test
+ public void testIssue179() throws TranscoderException, IOException {
+ float[] times = { 0f, 0.5f };
+ testAnim("samples/canvg/issue179.svg", times, false);
+ }
+
+ @Test
+ public void testIssue180() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue180.svg");
+ }
+
+ @Test
+ public void testIssue181() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue181.svg");
+ }
+
+ @Test
+ public void testIssue182() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue182.svg");
+ }
+
+ @Test
+ public void testIssue183() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue183.svg");
+ }
+
+ @Test
+ public void testIssue184() throws TranscoderException, IOException {
+ test("samples/canvg/issue184.svg");
+ }
+
+ @Test
+ public void testIssue187() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue187.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue195() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue195.svg");
+ }
+
+ @Test
+ public void testIssue196() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue196.svg");
+ }
+
+ @Test
+ public void testIssue197() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue197.svg");
+ }
+
+ @Test
+ public void testIssue202() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue202.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue202b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue202b.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue206() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue206.svg", BROWSER_MEDIA, 66);
+ }
+
+ /*
+ * TODO: investigate.
+ */
+ @Disabled
+ @Test
+ public void testIssue211() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue211.svg");
+ }
+
+ @Test
+ public void testIssue212() throws TranscoderException, IOException {
+ test("samples/canvg/issue212.svg");
+ }
+
+ @Test
+ public void testIssue217() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue217.svg");
+ }
+
+ @Test
+ public void testIssue227() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue227.svg");
+ }
+
+ /**
+ * File was edited to remove reference to gnuplot_svg.js.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue229() throws TranscoderException, IOException {
+ test("samples/canvg/issue229.svg");
+ }
+
+ @Test
+ public void testIssue231() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue231.svg");
+ }
+
+ @Test
+ public void testIssue234() throws TranscoderException, IOException {
+ test("samples/canvg/issue234.svg");
+ }
+
+ @Test
+ public void testIssue234b() throws TranscoderException, IOException {
+ test("samples/canvg/issue234b.svg");
+ }
+
+ @Test
+ public void testIssue234c() throws TranscoderException, IOException {
+ test("samples/canvg/issue234c.svg");
+ }
+
+ @Test
+ public void testIssue234d() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue234d.svg");
+ }
+
+ @Test
+ public void testIssue234e() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue234e.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue238() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue238.svg");
+ }
+
+ @Test
+ public void testIssue241() throws TranscoderException, IOException {
+ test("samples/canvg/issue241.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue244() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue244.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue255() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue255.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue268() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue268.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue269() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue269.svg");
+ }
+
+ @Test
+ public void testIssue273() throws TranscoderException, IOException {
+ float[] times = { 0f, 1f, 2f };
+ testAnim("samples/canvg/issue273.svg", times, false);
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue277() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue277.svg");
+ }
+
+ @Test
+ public void testIssue282() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue282.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue289() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue289.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue320() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue320.svg", BROWSER_MEDIA, 1);
+ }
+
+ @Test
+ public void testIssue322() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue322.svg");
+ }
+
+ @Test
+ public void testIssue342() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue342.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue352() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue352.svg");
+ }
+
+ @Test
+ public void testIssue358() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue358.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue362() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue362.svg");
+ }
+
+ @Test
+ public void testIssue366() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue366.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue372() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue372.svg");
+ }
+
+ @Test
+ public void testIssue376() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue376.svg");
+ }
+
+ @Test
+ public void testIssue406() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue406.svg");
+ }
+
+ @Test
+ public void testIssue454() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue454.svg");
+ }
+
+ @Test
+ public void testIssue454b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue454b.svg");
+ }
+
+ @Test
+ public void testIssue473() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue473.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue510() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue510.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue556() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue556.svg");
+ }
+
+ @Test
+ public void testIssue564() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue564.svg");
+ }
+
+ @Test
+ public void testIssue593() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue593.svg");
+ }
+
+ @Test
+ public void testIssue610() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue610.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue615() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue615.svg");
+ }
+
+ @Test
+ public void testIssue620() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue620.svg");
+ }
+
+ @Test
+ public void testIssue690() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue690.svg", BROWSER_MEDIA, 4);
+ }
+
+ /*
+ * TODO: investigate.
+ */
+ @Disabled
+ @Test
+ public void testIssue694() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue694.svg");
+ }
+
+ /*
+ * TODO: investigate.
+ */
+ @Disabled
+ @Test
+ public void testIssue713() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue713.svg");
+ }
+
+ @Test
+ public void testIssue717() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue717.svg");
+ }
+
+ @Test
+ public void testIssue735() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue735.svg");
+ }
+
+ @Test
+ public void testIssue747() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue747.svg");
+ }
+
+ @Test
+ public void testIssue748() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue748.svg");
+ }
+
+ @Test
+ public void testIssue750() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue750.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue757() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue757.svg");
+ }
+
+ @Test
+ public void testIssue782a() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue782a.svg");
+ }
+
+ @Test
+ public void testIssue782b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue782b.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue816() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue816.svg", BROWSER_MEDIA, 14);
+ }
+
+ @Test
+ public void testIssue832() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue832.svg", BROWSER_MEDIA, 2);
+ }
+
+ /*
+ * TODO: investigate possible enhancement.
+ */
+ @Disabled
+ @Test
+ public void testIssue869() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue869.svg");
+ }
+
+ /*
+ * TODO: investigate possible enhancement.
+ */
+ @Disabled
+ @Test
+ public void testIssue870() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue870.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue897a() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue897a.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue897b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue897b.svg");
+ }
+
+ /**
+ * Disabled due to security restrictions.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Disabled
+ @Test
+ public void testIssue908() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue908.svg");
+ }
+
+ @Test
+ public void testIssue941() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue941.svg");
+ }
+
+ @Test
+ public void testIssue945() throws TranscoderException, IOException {
+ testNVErrIgnore("samples/canvg/issue945.svg", BROWSER_MEDIA, 11);
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue946() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue946.svg");
+ }
+
+ /*
+ * FIXME: investigate possible bug.
+ */
+ @Disabled
+ @Test
+ public void testIssue977() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue977.svg");
+ }
+
+ /*
+ * TODO: investigate possible enhancement.
+ */
+ @Disabled
+ @Test
+ public void testIssue1001() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1001.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue1045() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1045.svg");
+ }
+
+ @Disabled
+ @Test
+ public void testIssue1063() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1063.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue1111() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1111.svg");
+ }
+
+ @Test
+ public void testIssue1161() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1161.svg");
+ }
+
+ @Test
+ public void testIssue1196() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1196.svg");
+ }
+
+ /**
+ * Document was non-conformant (no SVG namespace) and was edited.
+ *
+ * @throws TranscoderException
+ * @throws IOException
+ */
+ @Test
+ public void testIssue1364() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1364.svg");
+ }
+
+ /*
+ * TODO: investigate possible enhancement.
+ */
+ @Disabled
+ @Test
+ public void testIssue1439() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1439.svg");
+ }
+
+ @Test
+ public void testIssue1460() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1460.svg");
+ }
+
+ @Test
+ public void testIssue1516() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1516.svg");
+ }
+
+ @Test
+ public void testIssue1548a() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1548a.svg");
+ }
+
+ @Test
+ public void testIssue1548b() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1548b.svg");
+ }
+
+ @Test
+ public void testIssue1548c() throws TranscoderException, IOException {
+ testNV("samples/canvg/issue1548c.svg");
+ }
+
+ @Test
+ public void testFavicon() throws TranscoderException, IOException {
+ testNV("samples/canvg/favicon.svg");
+ }
+
+ @Disabled
+ @Test
+ public void testLydianv_webfont() throws TranscoderException, IOException {
+ testNV("samples/canvg/lydianv-webfont.svg");
+ }
+
+ @Disabled
+ @Test
+ public void testSwz721b_webfont() throws TranscoderException, IOException {
+ testNV("samples/canvg/swz721b-webfont.svg");
+ }
+
+ /*
+ * Put larger thresholds due to smaller file sizes.
+ */
+ @Override
+ float getBelowThresholdAllowed() {
+ return 0.5f;
+ }
+
+ @Override
+ float getOverThresholdAllowed() {
+ return 0.1f;
+ }
+
+}
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesRenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesRenderingTest.java
index 694a1ff2f..02d7dff3b 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesRenderingTest.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesRenderingTest.java
@@ -192,4 +192,14 @@ public void testBug19363() throws TranscoderException, IOException {
test("test-resources/io/sf/carte/echosvg/test/svg/bug19363.svg");
}
+ @Override
+ float getBelowThresholdAllowed() {
+ return 0.5f;
+ }
+
+ @Override
+ float getOverThresholdAllowed() {
+ return 0.5f;
+ }
+
}
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesSpec11RenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesSpec11RenderingTest.java
index 0311299e6..43a07832f 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesSpec11RenderingTest.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/SamplesSpec11RenderingTest.java
@@ -191,12 +191,12 @@ public void testFont() throws TranscoderException, IOException {
*/
@Test
public void testFontAltGlyph() throws TranscoderException, IOException {
- test("samples/tests/spec/fonts/fontAltGlyph.svg");
+ testNVErrIgnore("samples/tests/spec/fonts/fontAltGlyph.svg", null, 4);
}
@Test
public void testFontAltGlyph2() throws TranscoderException, IOException {
- test("samples/tests/spec/fonts/fontAltGlyph2.svg");
+ testNVErrIgnore("samples/tests/spec/fonts/fontAltGlyph2.svg", null, 5);
}
@Test
@@ -1016,7 +1016,7 @@ public void testScriptNormalizedPathTest2() throws TranscoderException, IOExcept
@Test
public void testScriptPaintType() throws TranscoderException, IOException {
- test("samples/tests/spec/scripting/paintType.svg");
+ testNVErrIgnore("samples/tests/spec/scripting/paintType.svg", null, 2);
}
@Test
diff --git a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/StyleBypassRenderingTest.java b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/StyleBypassRenderingTest.java
index c0a3d23ee..f3707b540 100644
--- a/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/StyleBypassRenderingTest.java
+++ b/echosvg-test/src/test/java/io/sf/carte/echosvg/test/svg/StyleBypassRenderingTest.java
@@ -1439,6 +1439,14 @@ private void testNV(String file, int expectedErrorCount)
test(file, SVGRenderingAccuracyTest.DEFAULT_MEDIUM, false, null, false, expectedErrorCount);
}
+ float getBelowThresholdAllowed() {
+ return 0.5f;
+ }
+
+ float getOverThresholdAllowed() {
+ return 0.2f;
+ }
+
/**
* Test the rendering of a file with the given user language.
*
@@ -1460,7 +1468,7 @@ private void test(String file, String medium, String lang, int expectedErrorCoun
RenderingTest runner = new BypassRenderingTest(medium, expectedErrorCount);
runner.setUserLanguage(lang);
runner.setFile(file);
- runner.runTest(0.00001f, 0.00001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -1480,7 +1488,7 @@ private void testAlternate(String file, String alt, boolean validating, int expe
runner.setValidating(validating);
runner.setAlternateSheet(alt);
runner.setFile(file);
- runner.runTest(0.00001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -1499,7 +1507,7 @@ private void testUserSheet(String file, boolean validating, int expectedErrorCou
runner.setValidating(validating);
runner.setUserSheetClasspath(AltUserSheetRenderingTest.DEFAULT_USER_SHEET);
runner.setFile(file);
- runner.runTest(0.00001f, 0.000001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
@@ -1532,7 +1540,7 @@ private void configureAndRun(BypassRenderingTest runner, String file, boolean da
runner.setSelector(selector);
runner.setValidating(validating);
runner.setFile(file);
- runner.runTest(0.00001f, 0.00001f);
+ runner.runTest(getBelowThresholdAllowed(), getOverThresholdAllowed());
}
/**
diff --git a/samples/canvg/1.svg b/samples/canvg/1.svg
new file mode 100644
index 000000000..183e43d81
--- /dev/null
+++ b/samples/canvg/1.svg
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/10.svg b/samples/canvg/10.svg
new file mode 100644
index 000000000..0cfeb9cd9
--- /dev/null
+++ b/samples/canvg/10.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/11.svg b/samples/canvg/11.svg
new file mode 100644
index 000000000..59eaeba18
--- /dev/null
+++ b/samples/canvg/11.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/12.svg b/samples/canvg/12.svg
new file mode 100644
index 000000000..62f0a92ef
--- /dev/null
+++ b/samples/canvg/12.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/13.svg b/samples/canvg/13.svg
new file mode 100644
index 000000000..2864700ca
--- /dev/null
+++ b/samples/canvg/13.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/14.svg b/samples/canvg/14.svg
new file mode 100644
index 000000000..424a80dde
--- /dev/null
+++ b/samples/canvg/14.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/15.svg b/samples/canvg/15.svg
new file mode 100644
index 000000000..8b643e283
--- /dev/null
+++ b/samples/canvg/15.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/16.svg b/samples/canvg/16.svg
new file mode 100644
index 000000000..c0e6c1de0
--- /dev/null
+++ b/samples/canvg/16.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/17.svg b/samples/canvg/17.svg
new file mode 100644
index 000000000..c84bc4eb6
--- /dev/null
+++ b/samples/canvg/17.svg
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/18.svg b/samples/canvg/18.svg
new file mode 100644
index 000000000..96b538ce3
--- /dev/null
+++ b/samples/canvg/18.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/19.svg b/samples/canvg/19.svg
new file mode 100644
index 000000000..84a5a5fcb
--- /dev/null
+++ b/samples/canvg/19.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/2.svg b/samples/canvg/2.svg
new file mode 100644
index 000000000..abd8ef1b8
--- /dev/null
+++ b/samples/canvg/2.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/20.svg b/samples/canvg/20.svg
new file mode 100644
index 000000000..799d20fb5
--- /dev/null
+++ b/samples/canvg/20.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/21.svg b/samples/canvg/21.svg
new file mode 100644
index 000000000..9f01de385
--- /dev/null
+++ b/samples/canvg/21.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/22.svg b/samples/canvg/22.svg
new file mode 100644
index 000000000..238580981
--- /dev/null
+++ b/samples/canvg/22.svg
@@ -0,0 +1,2773 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/23.svg b/samples/canvg/23.svg
new file mode 100644
index 000000000..983e57026
--- /dev/null
+++ b/samples/canvg/23.svg
@@ -0,0 +1,730 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/24.svg b/samples/canvg/24.svg
new file mode 100644
index 000000000..e342e6a3f
--- /dev/null
+++ b/samples/canvg/24.svg
@@ -0,0 +1,40 @@
+
+
+
+ Example Units
+ Illustrates various units options
+
+
+
+
+
+ Abs. units:
+
+
+
+
+
+
+
+
+ Rel. units:
+
+
+
+
+
+
+
+
+ Percentages:
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/25.svg b/samples/canvg/25.svg
new file mode 100644
index 000000000..8563666aa
--- /dev/null
+++ b/samples/canvg/25.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/26.svg b/samples/canvg/26.svg
new file mode 100644
index 000000000..7b8c995b7
--- /dev/null
+++ b/samples/canvg/26.svg
@@ -0,0 +1,10 @@
+
+ C171F03.dwg
+ AutoCAD drawing
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/27.svg b/samples/canvg/27.svg
new file mode 100644
index 000000000..4b9338bd3
--- /dev/null
+++ b/samples/canvg/27.svg
@@ -0,0 +1,31 @@
+
+
+
+ Example arcs01 - arc commands in path data
+ Picture of a pie chart with two pie wedges and
+ a picture of a line with arc blips
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/28.svg b/samples/canvg/28.svg
new file mode 100644
index 000000000..f253ab671
--- /dev/null
+++ b/samples/canvg/28.svg
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+
+">
+">
+">
+]>
+
+ Example PreserveAspectRatio - illustrates preserveAspectRatio attribute
+
+
+ SVG to fit
+ &Smile;
+ Viewport 1
+ &Viewport1;
+ Viewport 2
+ &Viewport2;
+
+ --------------- meet ---------------
+ xMin* &Viewport1;
+ &Smile;
+ xMid* &Viewport1;
+ &Smile;
+ xMax* &Viewport1;
+ &Smile;
+
+
+ ---------- meet ----------
+ *YMin &Viewport2;
+ &Smile;
+ *YMid &Viewport2;
+ &Smile;
+ *YMax &Viewport2;
+ &Smile;
+
+
+ ---------- slice ----------
+ xMin* &Viewport2;
+ &Smile;
+ xMid* &Viewport2;
+ &Smile;
+ xMax* &Viewport2;
+ &Smile;
+
+
+ --------------- slice ---------------
+ *YMin &Viewport1;
+ &Smile;
+ *YMid &Viewport1;
+ &Smile;
+ *YMax &Viewport1;
+ &Smile;
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/29.svg b/samples/canvg/29.svg
new file mode 100644
index 000000000..04794dfd9
--- /dev/null
+++ b/samples/canvg/29.svg
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/3.svg b/samples/canvg/3.svg
new file mode 100644
index 000000000..c7d73f1d9
--- /dev/null
+++ b/samples/canvg/3.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/30.svg b/samples/canvg/30.svg
new file mode 100644
index 000000000..ea6e1a389
--- /dev/null
+++ b/samples/canvg/30.svg
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/31.svg b/samples/canvg/31.svg
new file mode 100644
index 000000000..5b032383d
--- /dev/null
+++ b/samples/canvg/31.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+ you can click here for my project
+
\ No newline at end of file
diff --git a/samples/canvg/32.svg b/samples/canvg/32.svg
new file mode 100644
index 000000000..0529f0a12
--- /dev/null
+++ b/samples/canvg/32.svg
@@ -0,0 +1,34 @@
+
+
+
+ scheme1
+
+
+
+
+
+
+
+
+
+
+
+
+ Layer 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/33.svg b/samples/canvg/33.svg
new file mode 100644
index 000000000..9523a979a
--- /dev/null
+++ b/samples/canvg/33.svg
@@ -0,0 +1,31 @@
+
+
+
+ Example mask01 - blue text masked with gradient against red background
+
+
+
+
+
+
+
+
+
+
+ Masked text
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/34.svg b/samples/canvg/34.svg
new file mode 100644
index 000000000..02bec8c49
--- /dev/null
+++ b/samples/canvg/34.svg
@@ -0,0 +1,57 @@
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/35.svg b/samples/canvg/35.svg
new file mode 100644
index 000000000..4cf9a7a77
--- /dev/null
+++ b/samples/canvg/35.svg
@@ -0,0 +1,70 @@
+
+
+ Font example for arabic-form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خ خخخا ا
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/36.svg b/samples/canvg/36.svg
new file mode 100644
index 000000000..f5426e73e
--- /dev/null
+++ b/samples/canvg/36.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+TEST TEXT example
+
diff --git a/samples/canvg/37.svg b/samples/canvg/37.svg
new file mode 100644
index 000000000..98bc9b39f
--- /dev/null
+++ b/samples/canvg/37.svg
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ EXAMPLE
+
+
+
+ We go up, then we go down, then up again once more
+
+
+
+
+ Right aligned text on a straight line
+
+
+
+
+ Non standard text-anchor="justify"
+
+
+
+
+ We go up, then we go down, then straight
+
+
diff --git a/samples/canvg/4.svg b/samples/canvg/4.svg
new file mode 100644
index 000000000..2e6809545
--- /dev/null
+++ b/samples/canvg/4.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/5.svg b/samples/canvg/5.svg
new file mode 100644
index 000000000..e7c4f41d0
--- /dev/null
+++ b/samples/canvg/5.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/6.svg b/samples/canvg/6.svg
new file mode 100644
index 000000000..9ba489b8f
--- /dev/null
+++ b/samples/canvg/6.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/7.svg b/samples/canvg/7.svg
new file mode 100644
index 000000000..0cf15d88d
--- /dev/null
+++ b/samples/canvg/7.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/8.svg b/samples/canvg/8.svg
new file mode 100644
index 000000000..24a32a823
--- /dev/null
+++ b/samples/canvg/8.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/9.svg b/samples/canvg/9.svg
new file mode 100644
index 000000000..caa1a7660
--- /dev/null
+++ b/samples/canvg/9.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/LICENSE b/samples/canvg/LICENSE
new file mode 100644
index 000000000..9e2d890ef
--- /dev/null
+++ b/samples/canvg/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2010 - present Gabe Lerner (gabelerner@gmail.com) - https://github.com/canvg/canvg
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/samples/canvg/favicon.svg b/samples/canvg/favicon.svg
new file mode 100644
index 000000000..765b2cc95
--- /dev/null
+++ b/samples/canvg/favicon.svg
@@ -0,0 +1,16 @@
+
+
+
+ g2423
+ Created with Sketch.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue1001.svg b/samples/canvg/issue1001.svg
new file mode 100644
index 000000000..985e27ba7
--- /dev/null
+++ b/samples/canvg/issue1001.svg
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue104.svg b/samples/canvg/issue104.svg
new file mode 100644
index 000000000..dfa1cdbee
--- /dev/null
+++ b/samples/canvg/issue104.svg
@@ -0,0 +1,301 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue1045.svg b/samples/canvg/issue1045.svg
new file mode 100644
index 000000000..ae7f75e8f
--- /dev/null
+++ b/samples/canvg/issue1045.svg
@@ -0,0 +1,9 @@
+
+
+
+
+ CUT
+
+
+
+
diff --git a/samples/canvg/issue106.svg b/samples/canvg/issue106.svg
new file mode 100644
index 000000000..cc8e517ee
--- /dev/null
+++ b/samples/canvg/issue106.svg
@@ -0,0 +1,48 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Featured
+
+ Featured
+
+
+
diff --git a/samples/canvg/issue1063.svg b/samples/canvg/issue1063.svg
new file mode 100644
index 000000000..762d5fe87
--- /dev/null
+++ b/samples/canvg/issue1063.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue108.svg b/samples/canvg/issue108.svg
new file mode 100644
index 000000000..e59d947fb
--- /dev/null
+++ b/samples/canvg/issue108.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue1111.svg b/samples/canvg/issue1111.svg
new file mode 100644
index 000000000..1455c2ef0
--- /dev/null
+++ b/samples/canvg/issue1111.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue112.svg b/samples/canvg/issue112.svg
new file mode 100644
index 000000000..7b82ee050
--- /dev/null
+++ b/samples/canvg/issue112.svg
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue114.svg b/samples/canvg/issue114.svg
new file mode 100644
index 000000000..f4387c431
--- /dev/null
+++ b/samples/canvg/issue114.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+ AAAA
+ BBBB
+ 1111
+ 2222
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue115.svg b/samples/canvg/issue115.svg
new file mode 100644
index 000000000..d76073e91
--- /dev/null
+++ b/samples/canvg/issue115.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue116.svg b/samples/canvg/issue116.svg
new file mode 100644
index 000000000..ad68d3322
--- /dev/null
+++ b/samples/canvg/issue116.svg
@@ -0,0 +1,7 @@
+
+ Default
+
+
+ Dominant Baseline Middle
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue1161.svg b/samples/canvg/issue1161.svg
new file mode 100644
index 000000000..3c6c780e3
--- /dev/null
+++ b/samples/canvg/issue1161.svg
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
+
+ nothing
+
+
+ dx 200
+
+
+ dy 200
+
+
+ dx/dy 200
+
+
+
+ nothing
+ dx 100
+ dy 100
+ dx/dy 100
+
diff --git a/samples/canvg/issue117.svg b/samples/canvg/issue117.svg
new file mode 100644
index 000000000..9188c8cf5
--- /dev/null
+++ b/samples/canvg/issue117.svg
@@ -0,0 +1,48 @@
+
+ SVG logo combined with the W3C logo, set horizontally
+ The logo combines three entities displayed horizontally: the W3C logo with the text 'W3C'; the drawing of a flower or star shape with eight arms; and the text 'SVG'. These three entities are set horizontally.
+
+
+
+
+ SVG logo combined with the W3C logo
+ image/svg+xml
+
+ 2007-11-01
+
+
+
+ The logo combines three entities displayed horizontally: the W3C logo with the text 'W3C'; the drawing of a flower or star shape with eight arms; and the text 'SVG'. These three entities are set horizontally.
+
+
+
+
+
+ W3C
+ SVG
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue1196.svg b/samples/canvg/issue1196.svg
new file mode 100644
index 000000000..424ed2e27
--- /dev/null
+++ b/samples/canvg/issue1196.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/samples/canvg/issue121.svg b/samples/canvg/issue121.svg
new file mode 100644
index 000000000..dcb707aea
--- /dev/null
+++ b/samples/canvg/issue121.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/samples/canvg/issue122.svg b/samples/canvg/issue122.svg
new file mode 100644
index 000000000..1c60ec70b
--- /dev/null
+++ b/samples/canvg/issue122.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+ Layer 1
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue125a.svg b/samples/canvg/issue125a.svg
new file mode 100644
index 000000000..c90c17ff3
--- /dev/null
+++ b/samples/canvg/issue125a.svg
@@ -0,0 +1,139 @@
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue125b.svg b/samples/canvg/issue125b.svg
new file mode 100644
index 000000000..9368b780a
--- /dev/null
+++ b/samples/canvg/issue125b.svg
@@ -0,0 +1,363 @@
+
+
+
+
+ Virus
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+ Virus
+
+
+
+ NBCorp
+
+
+
+
+ PD
+
+
+ www.nbcorp.be
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue128.svg b/samples/canvg/issue128.svg
new file mode 100644
index 000000000..22d3c5c26
--- /dev/null
+++ b/samples/canvg/issue128.svg
@@ -0,0 +1 @@
+Node 1 Node 1 Node 2 Node 2
\ No newline at end of file
diff --git a/samples/canvg/issue132.svg b/samples/canvg/issue132.svg
new file mode 100644
index 000000000..84184f8ae
--- /dev/null
+++ b/samples/canvg/issue132.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ Layer 1
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue134.svg b/samples/canvg/issue134.svg
new file mode 100644
index 000000000..0f9d775d1
--- /dev/null
+++ b/samples/canvg/issue134.svg
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Triumph
+
+
+
+
+ Rumble
+
+
+
+
+ Iron Hide
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Smash
+
+
+
+
+ Gangway
+
+
+
+
+ Thrive on Chaos
+
+
+
+
+
+
diff --git a/samples/canvg/issue135.svg b/samples/canvg/issue135.svg
new file mode 100644
index 000000000..7183eebfe
--- /dev/null
+++ b/samples/canvg/issue135.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue1364.svg b/samples/canvg/issue1364.svg
new file mode 100644
index 000000000..f30fecb20
--- /dev/null
+++ b/samples/canvg/issue1364.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue137.svg b/samples/canvg/issue137.svg
new file mode 100644
index 000000000..57a2b85f9
--- /dev/null
+++ b/samples/canvg/issue137.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue138.svg b/samples/canvg/issue138.svg
new file mode 100644
index 000000000..0c30d20a3
--- /dev/null
+++ b/samples/canvg/issue138.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue142.svg b/samples/canvg/issue142.svg
new file mode 100644
index 000000000..a6dd72109
--- /dev/null
+++ b/samples/canvg/issue142.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue1439.svg b/samples/canvg/issue1439.svg
new file mode 100644
index 000000000..9600bf496
--- /dev/null
+++ b/samples/canvg/issue1439.svg
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/samples/canvg/issue144.svg b/samples/canvg/issue144.svg
new file mode 100644
index 000000000..9d9fe1d66
--- /dev/null
+++ b/samples/canvg/issue144.svg
@@ -0,0 +1,2200 @@
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+ 8
+
+
+
+
+
+
+
+ 6
+
+
+
+
+
+
+
+ 12
+
+
+
+
+
+
+
+ 11
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 16
+
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+ 36
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+
+
+
+ 18
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ D5 TRAUFPUNKT + DACHEINDECKUNG
+
+
+ D6 ORTGANG
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SCHALUNG
+
+
+ 5
+
+
+ FALZZIEGEL
+
+
+ KONTERLATTUNG NH S10 3/5
+
+
+ LATTUNG NH S10 3/5
+
+
+ PE-FOLIE
+
+
+ MINRALFASER-W�D�
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+ 5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ MASSTAB 1:10
+
+
+ Name
+
+
+ 001
+
+
+ Blatt
+
+
+ PE-FOLIE
+
+
+ MINERALFASER W�D�
+
+
+ FUSSPFETTE POS 10 NH S10 18/18
+
+
+ SPARRENPFETTENANKER M15
+
+
+ MW Mz-20-1.8-NF
+
+
+ GIPSPUTZ
+
+
+ FALZZIEGEL
+
+
+ LATTUNG NH S10 3/5
+
+
+ KONTERLATTUNG NH S10 3/5
+
+
+ PE-FOLIE
+
+
+ REGENRINNE ∅15cm KUPFER
+
+
+ LOCHBLECH KUPFER
+
+
+ SPARREN POS 1 NH S10 8/18
+
+
+ VMW KHLz-20-1.8-NF
+
+
+ SCHALUNG
+
+
+ SPARREN POS 1 NH S10 8/18
+
+
+ GIPSPUTZ
+
+
+ PE-FOLIE
+
+
+ BLECHKEHLE
+
+
+ GESIMSBRETT
+
+
+ VMW KHLz-20-1.8-NF
+
+
+ MW Mz-20-1.8-NF
+
+
+ MINERALFASER-W�D�
+
+
+ ABSTANDHALTER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ D5, D6
+
+
+ 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue145.svg b/samples/canvg/issue145.svg
new file mode 100644
index 000000000..758c469a9
--- /dev/null
+++ b/samples/canvg/issue145.svg
@@ -0,0 +1,13 @@
+
+
+
+ Blah
+
+
diff --git a/samples/canvg/issue1460.svg b/samples/canvg/issue1460.svg
new file mode 100644
index 000000000..e49cdb196
--- /dev/null
+++ b/samples/canvg/issue1460.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue1516.svg b/samples/canvg/issue1516.svg
new file mode 100644
index 000000000..b7142d218
--- /dev/null
+++ b/samples/canvg/issue1516.svg
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue1548a.svg b/samples/canvg/issue1548a.svg
new file mode 100644
index 000000000..c6a782701
--- /dev/null
+++ b/samples/canvg/issue1548a.svg
@@ -0,0 +1,20 @@
+
+
+ toplevel tspan
+
+ inherit dx/dy from parent
+
+
+ dx/dy defined on child
+
+
+ dx/dy on parent+child
+
+
+
+ twice nested (1st child: inherit dx)
+ twice nested (2nd child: don't inherit dx)
+
+
+
+
diff --git a/samples/canvg/issue1548b.svg b/samples/canvg/issue1548b.svg
new file mode 100644
index 000000000..389a5a45d
--- /dev/null
+++ b/samples/canvg/issue1548b.svg
@@ -0,0 +1,71 @@
+
+
+
+ text with text-anchor="start"
+ text with text-anchor="middle"
+ text with text-anchor="end"
+
+ tspan with text-anchor="start" and positive dx
+ tspan with text-anchor="start" and negative dx
+
+ tspan with text-anchor="middle" and positive dx
+ tspan with text-anchor="middle" and negative dx
+
+ tspan with text-anchor="end" and positive dx
+ tspan with text-anchor="end" and negative dx
+
+
+ Multiple chunks: first chunk 1
+ Multiple chunks: first chunk 2 Multiple chunks: second chunk 1
+ Multiple chunks: second chunk 2
+
+
+
+ Multiple chunks: first chunk 1
+ Multiple chunks: first chunk 2 Multiple chunks: second chunk 1
+ Multiple chunks: second chunk 2
+
+
+
+ Multiple chunks: first chunk 1
+ Multiple chunks: first chunk 2 Multiple chunks: second chunk 1
+ Multiple chunks: second chunk 2
+
+
+
+ first tspan tspan with text-anchor="start", second tspan before
+
+
+
+ first tspan tspan with text-anchor="middle", second tspan before
+
+
+
+ first tspan tspan with text-anchor="end", second tspan before
+
+
+
+ text-anchor on first tspan without x has effect reset x text-anchor on second tspan without x has no effect text-anchor on sibling has no effect
+
+
+
+ text-anchor ="start"
+ text-anchor ="middle"
+ text-anchor ="end"
+
+
+
+ text-anchor="start"
+ text-anchor="end" on nested tspan
+ affects tspans higher on hierarchy
+
+
diff --git a/samples/canvg/issue1548c.svg b/samples/canvg/issue1548c.svg
new file mode 100644
index 000000000..bc4bbf2ee
--- /dev/null
+++ b/samples/canvg/issue1548c.svg
@@ -0,0 +1,71 @@
+
+ Font example for arabic-form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خ خخخا ا خخخا
+
+
+
+
+
+
diff --git a/samples/canvg/issue158.svg b/samples/canvg/issue158.svg
new file mode 100644
index 000000000..84e7aefa6
--- /dev/null
+++ b/samples/canvg/issue158.svg
@@ -0,0 +1,54 @@
+
+ Created with Raphael 2.1.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue161.svg b/samples/canvg/issue161.svg
new file mode 100644
index 000000000..70fa50277
--- /dev/null
+++ b/samples/canvg/issue161.svg
@@ -0,0 +1,293 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Jan
+
+
+
+ Feb
+
+
+
+ Mar
+
+
+
+ April
+
+
+
+ May
+
+
+
+
+
+
+
+
+
+
+
+
+ Unique Login Activity
+
+
+ For Organization, Monthly
+
+
+
+
+
+
+ 0
+
+
+
+ 12
+
+
+
+ 24
+
+
+
+ 36
+
+
+
+ 48
+
+
+
+ 60
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+ 8
+
+
+ 20
+
+
+ 35
+
+
+ 50
+
+
+
+
+ Month
+
+
+
+ Logins
+
+
+
+
+
+ Jan, 3
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue166.svg b/samples/canvg/issue166.svg
new file mode 100644
index 000000000..660669767
--- /dev/null
+++ b/samples/canvg/issue166.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ FonT
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue172.svg b/samples/canvg/issue172.svg
new file mode 100644
index 000000000..fe157d2d6
--- /dev/null
+++ b/samples/canvg/issue172.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue175.svg b/samples/canvg/issue175.svg
new file mode 100644
index 000000000..38b339568
--- /dev/null
+++ b/samples/canvg/issue175.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue176.svg b/samples/canvg/issue176.svg
new file mode 100644
index 000000000..7ecc71ce5
--- /dev/null
+++ b/samples/canvg/issue176.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue178.svg b/samples/canvg/issue178.svg
new file mode 100644
index 000000000..403f60849
--- /dev/null
+++ b/samples/canvg/issue178.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue179.svg b/samples/canvg/issue179.svg
new file mode 100644
index 000000000..e5336020b
--- /dev/null
+++ b/samples/canvg/issue179.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue180.svg b/samples/canvg/issue180.svg
new file mode 100644
index 000000000..ae3e518fd
--- /dev/null
+++ b/samples/canvg/issue180.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/samples/canvg/issue181.svg b/samples/canvg/issue181.svg
new file mode 100644
index 000000000..42e610f3b
--- /dev/null
+++ b/samples/canvg/issue181.svg
@@ -0,0 +1,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue182.svg b/samples/canvg/issue182.svg
new file mode 100644
index 000000000..e06ed95e9
--- /dev/null
+++ b/samples/canvg/issue182.svg
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue183.svg b/samples/canvg/issue183.svg
new file mode 100644
index 000000000..3f960e014
--- /dev/null
+++ b/samples/canvg/issue183.svg
@@ -0,0 +1,73 @@
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue184.svg b/samples/canvg/issue184.svg
new file mode 100644
index 000000000..5920d0866
--- /dev/null
+++ b/samples/canvg/issue184.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue187.svg b/samples/canvg/issue187.svg
new file mode 100644
index 000000000..580821dfc
--- /dev/null
+++ b/samples/canvg/issue187.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+ ?
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue195.svg b/samples/canvg/issue195.svg
new file mode 100644
index 000000000..5d9617294
--- /dev/null
+++ b/samples/canvg/issue195.svg
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue196.svg b/samples/canvg/issue196.svg
new file mode 100644
index 000000000..68404dfd0
--- /dev/null
+++ b/samples/canvg/issue196.svg
@@ -0,0 +1,161 @@
+
+
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue197.svg b/samples/canvg/issue197.svg
new file mode 100644
index 000000000..6b4a92f8d
--- /dev/null
+++ b/samples/canvg/issue197.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/samples/canvg/issue202.svg b/samples/canvg/issue202.svg
new file mode 100644
index 000000000..0915cfc9b
--- /dev/null
+++ b/samples/canvg/issue202.svg
@@ -0,0 +1 @@
+Andrey Sabelnikov Roman Mamaev Olga Andriyash Kristina Belousova Irina Tarasuk Alyona Kuzmina Kristina Vilyams Lida Tur Nara Isk Aleksandr Fogelson
\ No newline at end of file
diff --git a/samples/canvg/issue202b.svg b/samples/canvg/issue202b.svg
new file mode 100644
index 000000000..7ef633a01
--- /dev/null
+++ b/samples/canvg/issue202b.svg
@@ -0,0 +1,2 @@
+
+Y 0 20 40 60 80 0 20 40 60 80
\ No newline at end of file
diff --git a/samples/canvg/issue206.svg b/samples/canvg/issue206.svg
new file mode 100644
index 000000000..a7f8c635a
--- /dev/null
+++ b/samples/canvg/issue206.svg
@@ -0,0 +1,147 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue211.svg b/samples/canvg/issue211.svg
new file mode 100644
index 000000000..8405c655a
--- /dev/null
+++ b/samples/canvg/issue211.svg
@@ -0,0 +1,7 @@
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue212.svg b/samples/canvg/issue212.svg
new file mode 100644
index 000000000..14c482c0b
--- /dev/null
+++ b/samples/canvg/issue212.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue217.svg b/samples/canvg/issue217.svg
new file mode 100644
index 000000000..6d9e0368e
--- /dev/null
+++ b/samples/canvg/issue217.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue227.svg b/samples/canvg/issue227.svg
new file mode 100644
index 000000000..b16cb85ab
--- /dev/null
+++ b/samples/canvg/issue227.svg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue229.svg b/samples/canvg/issue229.svg
new file mode 100644
index 000000000..a618bf2f4
--- /dev/null
+++ b/samples/canvg/issue229.svg
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+mgr_1
+Produced by GNUPLOT 4.6 patchlevel 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 0.7
+
+
+ 0.75
+
+
+ 0.8
+
+
+ 0.85
+
+
+ 0.9
+
+
+ 0.95
+
+
+ 1
+
+
+ 1.05
+
+
+ 26.5
+
+
+ 27
+
+
+ 27.5
+
+
+ 28
+
+
+ 28.5
+
+
+ 29
+
+
+ Amplitude
+
+
+ Angle (deg)
+
+
+ Bragg reflection -- Peak only
+
+
+ mgr_1_plot_1
+
+
+
+ Rate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ mgr_1_plot_2
+
+
+
+ Rate
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue231.svg b/samples/canvg/issue231.svg
new file mode 100644
index 000000000..289ceda87
--- /dev/null
+++ b/samples/canvg/issue231.svg
@@ -0,0 +1,211 @@
+
+
+1 2 3 4 5 -1 -2 -3 -4 -5 1 2 3 4 5 -1 -2 -3 -4 -5 240° 180° 150° 30° 210° 120° 60° 330° 0° 300° 270° 90°
diff --git a/samples/canvg/issue234.svg b/samples/canvg/issue234.svg
new file mode 100644
index 000000000..e3827bb2f
--- /dev/null
+++ b/samples/canvg/issue234.svg
@@ -0,0 +1,13 @@
+
+
+
+ Example Use01 - Simple case of 'use' on a 'rect'
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue234b.svg b/samples/canvg/issue234b.svg
new file mode 100644
index 000000000..5cd2c645c
--- /dev/null
+++ b/samples/canvg/issue234b.svg
@@ -0,0 +1,20 @@
+
+
+
+ Example Use02 - 'use' on a 'symbol'
+
+
+ MySymbol - four rectangles in a grid
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue234c.svg b/samples/canvg/issue234c.svg
new file mode 100644
index 000000000..13393c596
--- /dev/null
+++ b/samples/canvg/issue234c.svg
@@ -0,0 +1,14 @@
+
+
+
+ Example Use03 - 'use' with a 'transform' attribute
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue234d.svg b/samples/canvg/issue234d.svg
new file mode 100644
index 000000000..6dbc85b86
--- /dev/null
+++ b/samples/canvg/issue234d.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue234e.svg b/samples/canvg/issue234e.svg
new file mode 100644
index 000000000..2ae962d87
--- /dev/null
+++ b/samples/canvg/issue234e.svg
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue238.svg b/samples/canvg/issue238.svg
new file mode 100644
index 000000000..7851744b4
--- /dev/null
+++ b/samples/canvg/issue238.svg
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue24.svg b/samples/canvg/issue24.svg
new file mode 100644
index 000000000..55bcfcb04
--- /dev/null
+++ b/samples/canvg/issue24.svg
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue241.svg b/samples/canvg/issue241.svg
new file mode 100644
index 000000000..6dba19291
--- /dev/null
+++ b/samples/canvg/issue241.svg
@@ -0,0 +1,54 @@
+
+
+
+ Example feColorMatrix - Examples of feColorMatrix operations
+ Five text strings showing the effects of feColorMatrix:
+ an unfiltered text string acting as a reference,
+ use of the feColorMatrix matrix option to convert to grayscale,
+ use of the feColorMatrix saturate option,
+ use of the feColorMatrix hueRotate option,
+ and use of the feColorMatrix luminanceToAlpha option.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Unfiltered
+ Matrix
+ Saturate
+ HueRotate
+ Luminance
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue244.svg b/samples/canvg/issue244.svg
new file mode 100644
index 000000000..13bd502f9
--- /dev/null
+++ b/samples/canvg/issue244.svg
@@ -0,0 +1,30 @@
+
+
+
+Baseline
+
+
+
+Before-Edge
+
+
+
+Central
+
+
+
+After-Edge
+
+
+
+Ideographic
+
+
+
+Hanging
+
+
+
+Alphabetic
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue25.svg b/samples/canvg/issue25.svg
new file mode 100644
index 000000000..fbe09a79f
--- /dev/null
+++ b/samples/canvg/issue25.svg
@@ -0,0 +1,4 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue255.svg b/samples/canvg/issue255.svg
new file mode 100644
index 000000000..d955bce05
--- /dev/null
+++ b/samples/canvg/issue255.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+ 2014
+
+
+
+ MES
+
+
+ YEAR
+
+
+ VOEUX
+
+
diff --git a/samples/canvg/issue268.svg b/samples/canvg/issue268.svg
new file mode 100644
index 000000000..866667aff
--- /dev/null
+++ b/samples/canvg/issue268.svg
@@ -0,0 +1,2 @@
+
+First Line Second Line Third Line Forth Line
\ No newline at end of file
diff --git a/samples/canvg/issue269.svg b/samples/canvg/issue269.svg
new file mode 100644
index 000000000..5b04524c6
--- /dev/null
+++ b/samples/canvg/issue269.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue273.svg b/samples/canvg/issue273.svg
new file mode 100644
index 000000000..e9437d9f5
--- /dev/null
+++ b/samples/canvg/issue273.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue277.svg b/samples/canvg/issue277.svg
new file mode 100644
index 000000000..e18a9f48c
--- /dev/null
+++ b/samples/canvg/issue277.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue282.svg b/samples/canvg/issue282.svg
new file mode 100644
index 000000000..693f9f898
--- /dev/null
+++ b/samples/canvg/issue282.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue289.svg b/samples/canvg/issue289.svg
new file mode 100644
index 000000000..d90220d6d
--- /dev/null
+++ b/samples/canvg/issue289.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue3.svg b/samples/canvg/issue3.svg
new file mode 100644
index 000000000..0faa47cb5
--- /dev/null
+++ b/samples/canvg/issue3.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+ Layer 1
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue30.svg b/samples/canvg/issue30.svg
new file mode 100644
index 000000000..ad7d18567
--- /dev/null
+++ b/samples/canvg/issue30.svg
@@ -0,0 +1,7 @@
+
+
+ Text should be centered inside the box
+
\ No newline at end of file
diff --git a/samples/canvg/issue31.svg b/samples/canvg/issue31.svg
new file mode 100644
index 000000000..e4f3a5cbb
--- /dev/null
+++ b/samples/canvg/issue31.svg
@@ -0,0 +1,7 @@
+
+
+ Text
+
\ No newline at end of file
diff --git a/samples/canvg/issue32.svg b/samples/canvg/issue32.svg
new file mode 100644
index 000000000..61eeae695
--- /dev/null
+++ b/samples/canvg/issue32.svg
@@ -0,0 +1,24 @@
+
+
+
+ Layer 1
+ Serif
+ Sans-Serif
+ Fantasy
+ Monospace
+ Cursive
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue320.svg b/samples/canvg/issue320.svg
new file mode 100644
index 000000000..ed96297b1
--- /dev/null
+++ b/samples/canvg/issue320.svg
@@ -0,0 +1,7 @@
+
+
+testing
+testingtesting
+testingtestingtestingtestingtesting
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue322.svg b/samples/canvg/issue322.svg
new file mode 100644
index 000000000..f9392c3f0
--- /dev/null
+++ b/samples/canvg/issue322.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/samples/canvg/issue33.svg b/samples/canvg/issue33.svg
new file mode 100644
index 000000000..efe37caaa
--- /dev/null
+++ b/samples/canvg/issue33.svg
@@ -0,0 +1,5 @@
+
+ Italic
+
\ No newline at end of file
diff --git a/samples/canvg/issue34.svg b/samples/canvg/issue34.svg
new file mode 100644
index 000000000..57a865c90
--- /dev/null
+++ b/samples/canvg/issue34.svg
@@ -0,0 +1,5 @@
+
+ Bold
+
\ No newline at end of file
diff --git a/samples/canvg/issue342.svg b/samples/canvg/issue342.svg
new file mode 100644
index 000000000..7a9e946c8
--- /dev/null
+++ b/samples/canvg/issue342.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+ hello world
+ hello world
+
+
+ hello world
+ hello world
+ hello world
+ hello world
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue35.svg b/samples/canvg/issue35.svg
new file mode 100644
index 000000000..dc68bda25
--- /dev/null
+++ b/samples/canvg/issue35.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue352.svg b/samples/canvg/issue352.svg
new file mode 100644
index 000000000..6573bec83
--- /dev/null
+++ b/samples/canvg/issue352.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue358.svg b/samples/canvg/issue358.svg
new file mode 100644
index 000000000..d04803cd4
--- /dev/null
+++ b/samples/canvg/issue358.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue36.svg b/samples/canvg/issue36.svg
new file mode 100644
index 000000000..cd09a1c42
--- /dev/null
+++ b/samples/canvg/issue36.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue362.svg b/samples/canvg/issue362.svg
new file mode 100644
index 000000000..40554d1c2
--- /dev/null
+++ b/samples/canvg/issue362.svg
@@ -0,0 +1,3 @@
+
+One Two Three
+
\ No newline at end of file
diff --git a/samples/canvg/issue366.svg b/samples/canvg/issue366.svg
new file mode 100644
index 000000000..28acadef8
--- /dev/null
+++ b/samples/canvg/issue366.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue372.svg b/samples/canvg/issue372.svg
new file mode 100644
index 000000000..1b916b645
--- /dev/null
+++ b/samples/canvg/issue372.svg
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue376.svg b/samples/canvg/issue376.svg
new file mode 100644
index 000000000..46fb793ef
--- /dev/null
+++ b/samples/canvg/issue376.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue38.svg b/samples/canvg/issue38.svg
new file mode 100644
index 000000000..65b576862
--- /dev/null
+++ b/samples/canvg/issue38.svg
@@ -0,0 +1,17 @@
+
+
+
+ Example tspan01 - using tspan to change visual attributes
+
+
+ You are
+ not
+ a banana.
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue39.svg b/samples/canvg/issue39.svg
new file mode 100644
index 000000000..50afeb254
--- /dev/null
+++ b/samples/canvg/issue39.svg
@@ -0,0 +1,22 @@
+
+
+
+
+
+ Referenced character data
+
+
+ Example tref01 - inline vs reference text content
+
+ Inline character data
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue40.svg b/samples/canvg/issue40.svg
new file mode 100644
index 000000000..704ec466f
--- /dev/null
+++ b/samples/canvg/issue40.svg
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue406.svg b/samples/canvg/issue406.svg
new file mode 100644
index 000000000..1a0a26397
--- /dev/null
+++ b/samples/canvg/issue406.svg
@@ -0,0 +1,74 @@
+
+
+ Created with Raphaël 2.1.0
+
+
+
+
+
+
+
+
+
+
+
+ Start
+
+
+
+
+ My Operation
+
+
+
+
+ Yes or No?
+
+
+
+
+
+ Good idea
+
+
+
+ catch something...
+
+
+
+
+
+ Ende
+
+
+
+
+ Stuff
+
+
+
+
+ My Subroutine
+
+
+
+
+
+ yes
+
+
+
+ no
+
+
+
+ yes
+
+
+
+ no
+
+
+
+
+
diff --git a/samples/canvg/issue41.svg b/samples/canvg/issue41.svg
new file mode 100644
index 000000000..bdaca42f7
--- /dev/null
+++ b/samples/canvg/issue41.svg
@@ -0,0 +1,48 @@
+
+
+ pattern
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ coniferous
+
+
+
+ broadLeave
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue42.svg b/samples/canvg/issue42.svg
new file mode 100644
index 000000000..edaa42125
--- /dev/null
+++ b/samples/canvg/issue42.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue44.svg b/samples/canvg/issue44.svg
new file mode 100644
index 000000000..a391c1afb
--- /dev/null
+++ b/samples/canvg/issue44.svg
@@ -0,0 +1,7 @@
+
+
+If this text is green, the test passed
+If this text is green, the test passed
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue45.svg b/samples/canvg/issue45.svg
new file mode 100644
index 000000000..e00308535
--- /dev/null
+++ b/samples/canvg/issue45.svg
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue454.svg b/samples/canvg/issue454.svg
new file mode 100644
index 000000000..c183149bc
--- /dev/null
+++ b/samples/canvg/issue454.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/samples/canvg/issue454b.svg b/samples/canvg/issue454b.svg
new file mode 100644
index 000000000..f42f6e4f4
--- /dev/null
+++ b/samples/canvg/issue454b.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue46.svg b/samples/canvg/issue46.svg
new file mode 100644
index 000000000..94858ec64
--- /dev/null
+++ b/samples/canvg/issue46.svg
@@ -0,0 +1,4 @@
+
+First Line Second Line Third
+Line
\ No newline at end of file
diff --git a/samples/canvg/issue473.svg b/samples/canvg/issue473.svg
new file mode 100644
index 000000000..0161a2970
--- /dev/null
+++ b/samples/canvg/issue473.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/samples/canvg/issue48.svg b/samples/canvg/issue48.svg
new file mode 100644
index 000000000..8a0955ea8
--- /dev/null
+++ b/samples/canvg/issue48.svg
@@ -0,0 +1,248 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue50.svg b/samples/canvg/issue50.svg
new file mode 100644
index 000000000..0b756d561
--- /dev/null
+++ b/samples/canvg/issue50.svg
@@ -0,0 +1,24 @@
+
+
+
+ Layer 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue510.svg b/samples/canvg/issue510.svg
new file mode 100644
index 000000000..9b015abd0
--- /dev/null
+++ b/samples/canvg/issue510.svg
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue52.svg b/samples/canvg/issue52.svg
new file mode 100644
index 000000000..61c06a998
--- /dev/null
+++ b/samples/canvg/issue52.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue54.svg b/samples/canvg/issue54.svg
new file mode 100644
index 000000000..b41e83c10
--- /dev/null
+++ b/samples/canvg/issue54.svg
@@ -0,0 +1,128 @@
+
+
+
+]>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue55.svg b/samples/canvg/issue55.svg
new file mode 100644
index 000000000..49ae87996
--- /dev/null
+++ b/samples/canvg/issue55.svg
@@ -0,0 +1,235 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue556.svg b/samples/canvg/issue556.svg
new file mode 100644
index 000000000..655a12856
--- /dev/null
+++ b/samples/canvg/issue556.svg
@@ -0,0 +1 @@
+
diff --git a/samples/canvg/issue564.svg b/samples/canvg/issue564.svg
new file mode 100644
index 000000000..082278b68
--- /dev/null
+++ b/samples/canvg/issue564.svg
@@ -0,0 +1,11 @@
+
+
+ | Xtra
+
+
+ | Xtra
+
+
+ | Xtra
+
+
diff --git a/samples/canvg/issue57.svg b/samples/canvg/issue57.svg
new file mode 100644
index 000000000..43033e068
--- /dev/null
+++ b/samples/canvg/issue57.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue57b.svg b/samples/canvg/issue57b.svg
new file mode 100644
index 000000000..2c8efb8e2
--- /dev/null
+++ b/samples/canvg/issue57b.svg
@@ -0,0 +1,182 @@
+
+
+
+
+ Anas rubripes (American black duck)
+ Anas rubripes (American black duck)Illustration of Anas rubripes (American black duck)symbol vector illustration bird American black duck Chordata Aves Anseriformes Anatidae Anas rubripes2005-03-09
+ image/svg+xmlAnas rubripes (American black duck)2005-03-09Tracey SaxbyTracey Saxby, Integration and Application NetworkIntegration and Application Networkhttp://ian.umces.edu/imagelibrary/displayimage-3686.htmlhttp://ian.umces.edu/imagelibrary/displayimage-3686.htmlen-USsymbol vector illustration bird American black duck Chordata Aves Anseriformes Anatidae Anas rubripesIllustration of Anas rubripes (American black duck)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Layer 1
+
+ Anas rubripes (American black duck)
+ Anas rubripes (American black duck)Illustration of Anas rubripes (American black duck)symbol vector illustration bird American black duck Chordata Aves Anseriformes Anatidae Anas rubripes2005-03-09
+ image/svg+xmlAnas rubripes (American black duck)2005-03-09Tracey SaxbyTracey Saxby, Integration and Application NetworkIntegration and Application Networkhttp://ian.umces.edu/imagelibrary/displayimage-3686.htmlhttp://ian.umces.edu/imagelibrary/displayimage-3686.htmlen-USsymbol vector illustration bird American black duck Chordata Aves Anseriformes Anatidae Anas rubripesIllustration of Anas rubripes (American black duck)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue593.svg b/samples/canvg/issue593.svg
new file mode 100644
index 000000000..6969c33e3
--- /dev/null
+++ b/samples/canvg/issue593.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ Some text using font
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue610.svg b/samples/canvg/issue610.svg
new file mode 100644
index 000000000..6ecadd647
--- /dev/null
+++ b/samples/canvg/issue610.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/samples/canvg/issue615.svg b/samples/canvg/issue615.svg
new file mode 100644
index 000000000..ce6789e9e
--- /dev/null
+++ b/samples/canvg/issue615.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue620.svg b/samples/canvg/issue620.svg
new file mode 100644
index 000000000..4134ea861
--- /dev/null
+++ b/samples/canvg/issue620.svg
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+ Some text using font
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue66.svg b/samples/canvg/issue66.svg
new file mode 100644
index 000000000..6ccfaeceb
--- /dev/null
+++ b/samples/canvg/issue66.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue67.svg b/samples/canvg/issue67.svg
new file mode 100644
index 000000000..8e4dbd034
--- /dev/null
+++ b/samples/canvg/issue67.svg
@@ -0,0 +1,459 @@
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue690.svg b/samples/canvg/issue690.svg
new file mode 100644
index 000000000..dee10ca44
--- /dev/null
+++ b/samples/canvg/issue690.svg
@@ -0,0 +1,6 @@
+
+ I love SVG!
+ I love SVG!
+ I love SVG!
+ I love SVG!
+
diff --git a/samples/canvg/issue694.svg b/samples/canvg/issue694.svg
new file mode 100644
index 000000000..03296c8d4
--- /dev/null
+++ b/samples/canvg/issue694.svg
@@ -0,0 +1,149 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue70.svg b/samples/canvg/issue70.svg
new file mode 100644
index 000000000..1d04c151e
--- /dev/null
+++ b/samples/canvg/issue70.svg
@@ -0,0 +1,225 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue71.svg b/samples/canvg/issue71.svg
new file mode 100644
index 000000000..8ff062f6b
--- /dev/null
+++ b/samples/canvg/issue71.svg
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+㐙
+i
+∈
+[1
+,
+2
+,
+3]
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue713.svg b/samples/canvg/issue713.svg
new file mode 100644
index 000000000..551e79c24
--- /dev/null
+++ b/samples/canvg/issue713.svg
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue717.svg b/samples/canvg/issue717.svg
new file mode 100644
index 000000000..cd05c7369
--- /dev/null
+++ b/samples/canvg/issue717.svg
@@ -0,0 +1,7 @@
+
+
+
+ My template Label
+
+
+
diff --git a/samples/canvg/issue73.svg b/samples/canvg/issue73.svg
new file mode 100644
index 000000000..ef7b7a6a7
--- /dev/null
+++ b/samples/canvg/issue73.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue735.svg b/samples/canvg/issue735.svg
new file mode 100644
index 000000000..f91bd41cf
--- /dev/null
+++ b/samples/canvg/issue735.svg
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue747.svg b/samples/canvg/issue747.svg
new file mode 100644
index 000000000..fdfa8a81e
--- /dev/null
+++ b/samples/canvg/issue747.svg
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue748.svg b/samples/canvg/issue748.svg
new file mode 100644
index 000000000..a79cd5fff
--- /dev/null
+++ b/samples/canvg/issue748.svg
@@ -0,0 +1,8 @@
+
+
+
+
+ Text and subscript and superscript
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue75.svg b/samples/canvg/issue75.svg
new file mode 100644
index 000000000..702139456
--- /dev/null
+++ b/samples/canvg/issue75.svg
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue750.svg b/samples/canvg/issue750.svg
new file mode 100644
index 000000000..25b1f686b
--- /dev/null
+++ b/samples/canvg/issue750.svg
@@ -0,0 +1,6 @@
+
+
+
+ H2 O
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue757.svg b/samples/canvg/issue757.svg
new file mode 100644
index 000000000..42b864a99
--- /dev/null
+++ b/samples/canvg/issue757.svg
@@ -0,0 +1,9 @@
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue76.svg b/samples/canvg/issue76.svg
new file mode 100644
index 000000000..5bb9e74f5
--- /dev/null
+++ b/samples/canvg/issue76.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue77.svg b/samples/canvg/issue77.svg
new file mode 100644
index 000000000..b6c64d7f9
--- /dev/null
+++ b/samples/canvg/issue77.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue782a.svg b/samples/canvg/issue782a.svg
new file mode 100644
index 000000000..462b9131d
--- /dev/null
+++ b/samples/canvg/issue782a.svg
@@ -0,0 +1,8 @@
+
+
+
+
+ data40098 50 [6.7%]
+
+
+
diff --git a/samples/canvg/issue782b.svg b/samples/canvg/issue782b.svg
new file mode 100644
index 000000000..cde73fa84
--- /dev/null
+++ b/samples/canvg/issue782b.svg
@@ -0,0 +1,8 @@
+
+
+
+
+ data40098 50 [6.7%]
+
+
+
diff --git a/samples/canvg/issue79.svg b/samples/canvg/issue79.svg
new file mode 100644
index 000000000..c03c56440
--- /dev/null
+++ b/samples/canvg/issue79.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue8.svg b/samples/canvg/issue8.svg
new file mode 100644
index 000000000..b7ba3d67b
--- /dev/null
+++ b/samples/canvg/issue8.svg
@@ -0,0 +1,39 @@
+
+
+ Example linecap - demonstrates three stroke-linecap values
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 'butt' cap
+
+
+
+
+
+ 'round' cap
+
+
+
+
+
+ 'square' cap
+
+
diff --git a/samples/canvg/issue816.svg b/samples/canvg/issue816.svg
new file mode 100644
index 000000000..8570eb14d
--- /dev/null
+++ b/samples/canvg/issue816.svg
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Июнь
+
+
+ Июль
+
+
+ Август
+
+
+ Сентябрь
+
+
+ Декабрь
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 3
+
+
+
+
+ 2
+
+
+
+
+ 1
+
+
+
+
+ 3
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 5
+
+
+
+
+ 2
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 4
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+ 1
+
+
+
+
+
+
+
+
+
+
+
+ 6
+
+
+ 3
+
+
+ 0
+
+
+
+
diff --git a/samples/canvg/issue82.svg b/samples/canvg/issue82.svg
new file mode 100644
index 000000000..872d59a1f
--- /dev/null
+++ b/samples/canvg/issue82.svg
@@ -0,0 +1,126 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Test Text
+Example
+
\ No newline at end of file
diff --git a/samples/canvg/issue832.svg b/samples/canvg/issue832.svg
new file mode 100644
index 000000000..a8a27ad4e
--- /dev/null
+++ b/samples/canvg/issue832.svg
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+
+ 1
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue85.svg b/samples/canvg/issue85.svg
new file mode 100644
index 000000000..4cf9a7a77
--- /dev/null
+++ b/samples/canvg/issue85.svg
@@ -0,0 +1,70 @@
+
+
+ Font example for arabic-form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ خ خخخا ا
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue869.svg b/samples/canvg/issue869.svg
new file mode 100644
index 000000000..989806035
--- /dev/null
+++ b/samples/canvg/issue869.svg
@@ -0,0 +1,9 @@
+
+
+
+
+ 正常秩序造成 v 分
+
+
+
+
diff --git a/samples/canvg/issue870.svg b/samples/canvg/issue870.svg
new file mode 100644
index 000000000..eff0e4e86
--- /dev/null
+++ b/samples/canvg/issue870.svg
@@ -0,0 +1,185 @@
+
+
+ Created with Highstock 4.2.7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2010
+
+
+ 2011
+
+
+ 2012
+
+
+ 2013
+
+
+ 2014
+
+
+ 2015
+
+
+ 2016
+
+
+ 2017
+
+
+ 2018
+
+
+ 2019
+
+
+ 2005
+
+
+ 2006
+
+
+ 2007
+
+
+ 2008
+
+
+ 2009
+
+
+
+
+ A1
+
+
+ A2
+
+
+ A3
+
+
+ Baa1
+
+
+ Baa2
+
+
+ Baa3
+
+
+ Ba1
+
+
+ Ba2
+
+
+
+
+ A1
+
+
+ A2
+
+
+ A3
+
+
+ Baa1
+
+
+ Baa2
+
+
+ Baa3
+
+
+ Ba1
+
+
+ Ba2
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue88.svg b/samples/canvg/issue88.svg
new file mode 100644
index 000000000..508072ad4
--- /dev/null
+++ b/samples/canvg/issue88.svg
@@ -0,0 +1,125 @@
+
+
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+Some text
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/issue89.svg b/samples/canvg/issue89.svg
new file mode 100644
index 000000000..02bec8c49
--- /dev/null
+++ b/samples/canvg/issue89.svg
@@ -0,0 +1,57 @@
+
+image/svg+xml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue897a.svg b/samples/canvg/issue897a.svg
new file mode 100644
index 000000000..fe1bbfc2d
--- /dev/null
+++ b/samples/canvg/issue897a.svg
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue897b.svg b/samples/canvg/issue897b.svg
new file mode 100644
index 000000000..15740212d
--- /dev/null
+++ b/samples/canvg/issue897b.svg
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Text text text text
+
+
+ Text text text text
+
+
diff --git a/samples/canvg/issue908.svg b/samples/canvg/issue908.svg
new file mode 100644
index 000000000..2897b5a7a
--- /dev/null
+++ b/samples/canvg/issue908.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue91.svg b/samples/canvg/issue91.svg
new file mode 100644
index 000000000..5653dda28
--- /dev/null
+++ b/samples/canvg/issue91.svg
@@ -0,0 +1,11463 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+ 30
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+ 31
+ 30
+ 29
+ 30
+
+
+ 31
+ 30
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+ 31
+ 30
+ 29
+ 30
+
+
+ 31
+ 30
+ 30
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+ 30
+ 30
+ 29
+
+
+ 31
+ 30
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+ 31
+ 30
+ 29
+ 30
+
+
+ 31
+ 30
+ 30
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 30
+
+
+ 31
+
+
+ 30
+
+
+ 29
+
+
+ 30
+
+
+
+
+ 31
+
+
+ 30
+
+
+ 30
+
+
+ 29
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 35
+
+
+ > We’re sending you our estimate of who’s where in the building now. [ gruntsnbystanders.locdb.streamloc ] recieved [ gruntsnbystanders.locdb ] subscribed to
+ projecting alternate routes: ok
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ thought balloon
+
+
+
+
+
+ dialogue balloon
+
+
+
+
+
+ Drat.
+
+
+
+
+ transmiss ion
+ hud readout: 14%
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue94.svg b/samples/canvg/issue94.svg
new file mode 100644
index 000000000..5191a59b0
--- /dev/null
+++ b/samples/canvg/issue94.svg
@@ -0,0 +1 @@
+Starting 7.06 % Checking Permissions 1.49 % Opening Tables 5.39 % System Lock 1.67 % Init 4.83 % Optimizing 0.74 % Statistics 1.67 % Preparing 1.49 % Executing 0.74 % Sending Data 40.89 % End 0.93 % Query End 0.56 % Closing Tables 2.97 % Freeing Items 28.07 % Logging Slow Query 0.56 % Cleaning Up 0.93 %
\ No newline at end of file
diff --git a/samples/canvg/issue941.svg b/samples/canvg/issue941.svg
new file mode 100644
index 000000000..026262d96
--- /dev/null
+++ b/samples/canvg/issue941.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue945.svg b/samples/canvg/issue945.svg
new file mode 100644
index 000000000..101795f82
--- /dev/null
+++ b/samples/canvg/issue945.svg
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+ 10 February 2020
+
+
+
+
+
+
+ 11
+
+
+
+
+
+ 12
+
+
+
+
+
+ 13
+
+
+
+
+
+ 14
+
+
+
+
+
+ 15
+
+
+
+
+
+ 16
+
+
+
+
+
+ 17
+
+
+
+
+
+
+
+
+ 0
+
+
+
+
+
+ 500
+
+
+
+
+
+ 1,000
+
+
+
+
+
+ 1,500
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ No data to display
+
+
diff --git a/samples/canvg/issue946.svg b/samples/canvg/issue946.svg
new file mode 100644
index 000000000..682829164
--- /dev/null
+++ b/samples/canvg/issue946.svg
@@ -0,0 +1,6 @@
+
+
+
diff --git a/samples/canvg/issue97.svg b/samples/canvg/issue97.svg
new file mode 100644
index 000000000..30ef86cdd
--- /dev/null
+++ b/samples/canvg/issue97.svg
@@ -0,0 +1,4059 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue977.svg b/samples/canvg/issue977.svg
new file mode 100644
index 000000000..335a08c0e
--- /dev/null
+++ b/samples/canvg/issue977.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/samples/canvg/issue98.svg b/samples/canvg/issue98.svg
new file mode 100644
index 000000000..30036dd4e
--- /dev/null
+++ b/samples/canvg/issue98.svg
@@ -0,0 +1,165 @@
+
+
+
+
diff --git a/samples/canvg/issue99.svg b/samples/canvg/issue99.svg
new file mode 100644
index 000000000..c99be4288
--- /dev/null
+++ b/samples/canvg/issue99.svg
@@ -0,0 +1,5 @@
+
+
+ a aa
+
+
diff --git a/samples/canvg/lydianv-webfont.svg b/samples/canvg/lydianv-webfont.svg
new file mode 100644
index 000000000..b8f303718
--- /dev/null
+++ b/samples/canvg/lydianv-webfont.svg
@@ -0,0 +1,672 @@
+
+
+
+
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright : Copyright 19901993 Bitstream Inc All rights reserved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/samples/canvg/swz721b-webfont.svg b/samples/canvg/swz721b-webfont.svg
new file mode 100644
index 000000000..330e04dec
--- /dev/null
+++ b/samples/canvg/swz721b-webfont.svg
@@ -0,0 +1,680 @@
+
+
+
+
+This is a custom SVG webfont generated by Font Squirrel.
+Copyright : Copyright 19901992 Bitstream Inc All rights reserved
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test-references/samples/accepted-variation/asf-logo.png b/test-references/samples/accepted-variation/asf-logo.png
new file mode 100644
index 000000000..71192d20f
Binary files /dev/null and b/test-references/samples/accepted-variation/asf-logo.png differ
diff --git a/test-references/samples/accepted-variation/batik70.png b/test-references/samples/accepted-variation/batik70.png
new file mode 100644
index 000000000..428157d3a
Binary files /dev/null and b/test-references/samples/accepted-variation/batik70.png differ
diff --git a/test-references/samples/canvg/1-t1.0.png b/test-references/samples/canvg/1-t1.0.png
new file mode 100644
index 000000000..6e6874ea5
Binary files /dev/null and b/test-references/samples/canvg/1-t1.0.png differ
diff --git a/test-references/samples/canvg/1-t2.0.png b/test-references/samples/canvg/1-t2.0.png
new file mode 100644
index 000000000..d6b974e4a
Binary files /dev/null and b/test-references/samples/canvg/1-t2.0.png differ
diff --git a/test-references/samples/canvg/1.png b/test-references/samples/canvg/1.png
new file mode 100644
index 000000000..81e5fd9f5
Binary files /dev/null and b/test-references/samples/canvg/1.png differ
diff --git a/test-references/samples/canvg/10.png b/test-references/samples/canvg/10.png
new file mode 100644
index 000000000..7e58e8178
Binary files /dev/null and b/test-references/samples/canvg/10.png differ
diff --git a/test-references/samples/canvg/11.png b/test-references/samples/canvg/11.png
new file mode 100644
index 000000000..ab483ba2b
Binary files /dev/null and b/test-references/samples/canvg/11.png differ
diff --git a/test-references/samples/canvg/12.png b/test-references/samples/canvg/12.png
new file mode 100644
index 000000000..c4a1fbd0d
Binary files /dev/null and b/test-references/samples/canvg/12.png differ
diff --git a/test-references/samples/canvg/13.png b/test-references/samples/canvg/13.png
new file mode 100644
index 000000000..4f1ba96bc
Binary files /dev/null and b/test-references/samples/canvg/13.png differ
diff --git a/test-references/samples/canvg/14.png b/test-references/samples/canvg/14.png
new file mode 100644
index 000000000..9b942c303
Binary files /dev/null and b/test-references/samples/canvg/14.png differ
diff --git a/test-references/samples/canvg/15.png b/test-references/samples/canvg/15.png
new file mode 100644
index 000000000..f09ec1dfb
Binary files /dev/null and b/test-references/samples/canvg/15.png differ
diff --git a/test-references/samples/canvg/16.png b/test-references/samples/canvg/16.png
new file mode 100644
index 000000000..82e84f104
Binary files /dev/null and b/test-references/samples/canvg/16.png differ
diff --git a/test-references/samples/canvg/17.png b/test-references/samples/canvg/17.png
new file mode 100644
index 000000000..ff4c1fade
Binary files /dev/null and b/test-references/samples/canvg/17.png differ
diff --git a/test-references/samples/canvg/18.png b/test-references/samples/canvg/18.png
new file mode 100644
index 000000000..dfec01b84
Binary files /dev/null and b/test-references/samples/canvg/18.png differ
diff --git a/test-references/samples/canvg/19.png b/test-references/samples/canvg/19.png
new file mode 100644
index 000000000..916c9bdf9
Binary files /dev/null and b/test-references/samples/canvg/19.png differ
diff --git a/test-references/samples/canvg/2.png b/test-references/samples/canvg/2.png
new file mode 100644
index 000000000..57f26e8bf
Binary files /dev/null and b/test-references/samples/canvg/2.png differ
diff --git a/test-references/samples/canvg/20-t2.0.png b/test-references/samples/canvg/20-t2.0.png
new file mode 100644
index 000000000..43c487c7d
Binary files /dev/null and b/test-references/samples/canvg/20-t2.0.png differ
diff --git a/test-references/samples/canvg/20-t4.0.png b/test-references/samples/canvg/20-t4.0.png
new file mode 100644
index 000000000..8ac31918b
Binary files /dev/null and b/test-references/samples/canvg/20-t4.0.png differ
diff --git a/test-references/samples/canvg/20.png b/test-references/samples/canvg/20.png
new file mode 100644
index 000000000..3fd125a6a
Binary files /dev/null and b/test-references/samples/canvg/20.png differ
diff --git a/test-references/samples/canvg/21-t2.0.png b/test-references/samples/canvg/21-t2.0.png
new file mode 100644
index 000000000..ed2fe02ca
Binary files /dev/null and b/test-references/samples/canvg/21-t2.0.png differ
diff --git a/test-references/samples/canvg/21-t4.0.png b/test-references/samples/canvg/21-t4.0.png
new file mode 100644
index 000000000..aaf9b662c
Binary files /dev/null and b/test-references/samples/canvg/21-t4.0.png differ
diff --git a/test-references/samples/canvg/21.png b/test-references/samples/canvg/21.png
new file mode 100644
index 000000000..faa84f4ba
Binary files /dev/null and b/test-references/samples/canvg/21.png differ
diff --git a/test-references/samples/canvg/22.png b/test-references/samples/canvg/22.png
new file mode 100644
index 000000000..a194ac310
Binary files /dev/null and b/test-references/samples/canvg/22.png differ
diff --git a/test-references/samples/canvg/23.png b/test-references/samples/canvg/23.png
new file mode 100644
index 000000000..99622d4df
Binary files /dev/null and b/test-references/samples/canvg/23.png differ
diff --git a/test-references/samples/canvg/24.png b/test-references/samples/canvg/24.png
new file mode 100644
index 000000000..0732a02df
Binary files /dev/null and b/test-references/samples/canvg/24.png differ
diff --git a/test-references/samples/canvg/25.png b/test-references/samples/canvg/25.png
new file mode 100644
index 000000000..f10795b75
Binary files /dev/null and b/test-references/samples/canvg/25.png differ
diff --git a/test-references/samples/canvg/26.png b/test-references/samples/canvg/26.png
new file mode 100644
index 000000000..c52cbb0c8
Binary files /dev/null and b/test-references/samples/canvg/26.png differ
diff --git a/test-references/samples/canvg/27.png b/test-references/samples/canvg/27.png
new file mode 100644
index 000000000..45d6ceb45
Binary files /dev/null and b/test-references/samples/canvg/27.png differ
diff --git a/test-references/samples/canvg/28.png b/test-references/samples/canvg/28.png
new file mode 100644
index 000000000..47f2edd24
Binary files /dev/null and b/test-references/samples/canvg/28.png differ
diff --git a/test-references/samples/canvg/29.png b/test-references/samples/canvg/29.png
new file mode 100644
index 000000000..b9ec8aeae
Binary files /dev/null and b/test-references/samples/canvg/29.png differ
diff --git a/test-references/samples/canvg/3.png b/test-references/samples/canvg/3.png
new file mode 100644
index 000000000..bb44f7c2a
Binary files /dev/null and b/test-references/samples/canvg/3.png differ
diff --git a/test-references/samples/canvg/30.png b/test-references/samples/canvg/30.png
new file mode 100644
index 000000000..b9cdefe86
Binary files /dev/null and b/test-references/samples/canvg/30.png differ
diff --git a/test-references/samples/canvg/31.png b/test-references/samples/canvg/31.png
new file mode 100644
index 000000000..0ee4bb9a6
Binary files /dev/null and b/test-references/samples/canvg/31.png differ
diff --git a/test-references/samples/canvg/32.png b/test-references/samples/canvg/32.png
new file mode 100644
index 000000000..556b4e723
Binary files /dev/null and b/test-references/samples/canvg/32.png differ
diff --git a/test-references/samples/canvg/33.png b/test-references/samples/canvg/33.png
new file mode 100644
index 000000000..0348098b5
Binary files /dev/null and b/test-references/samples/canvg/33.png differ
diff --git a/test-references/samples/canvg/34.png b/test-references/samples/canvg/34.png
new file mode 100644
index 000000000..cef4d7594
Binary files /dev/null and b/test-references/samples/canvg/34.png differ
diff --git a/test-references/samples/canvg/35.png b/test-references/samples/canvg/35.png
new file mode 100644
index 000000000..0cd32a161
Binary files /dev/null and b/test-references/samples/canvg/35.png differ
diff --git a/test-references/samples/canvg/36.png b/test-references/samples/canvg/36.png
new file mode 100644
index 000000000..54919a842
Binary files /dev/null and b/test-references/samples/canvg/36.png differ
diff --git a/test-references/samples/canvg/37.png b/test-references/samples/canvg/37.png
new file mode 100644
index 000000000..818a1cf5b
Binary files /dev/null and b/test-references/samples/canvg/37.png differ
diff --git a/test-references/samples/canvg/4.png b/test-references/samples/canvg/4.png
new file mode 100644
index 000000000..6710a6569
Binary files /dev/null and b/test-references/samples/canvg/4.png differ
diff --git a/test-references/samples/canvg/5.png b/test-references/samples/canvg/5.png
new file mode 100644
index 000000000..580bc373e
Binary files /dev/null and b/test-references/samples/canvg/5.png differ
diff --git a/test-references/samples/canvg/6.png b/test-references/samples/canvg/6.png
new file mode 100644
index 000000000..b8b6c1b6a
Binary files /dev/null and b/test-references/samples/canvg/6.png differ
diff --git a/test-references/samples/canvg/7.png b/test-references/samples/canvg/7.png
new file mode 100644
index 000000000..0a209e09e
Binary files /dev/null and b/test-references/samples/canvg/7.png differ
diff --git a/test-references/samples/canvg/8.png b/test-references/samples/canvg/8.png
new file mode 100644
index 000000000..4ab45790c
Binary files /dev/null and b/test-references/samples/canvg/8.png differ
diff --git a/test-references/samples/canvg/9.png b/test-references/samples/canvg/9.png
new file mode 100644
index 000000000..0ab5008a7
Binary files /dev/null and b/test-references/samples/canvg/9.png differ
diff --git a/test-references/samples/canvg/accepted-variation/1-t1.0.png b/test-references/samples/canvg/accepted-variation/1-t1.0.png
new file mode 100644
index 000000000..f60281ef6
Binary files /dev/null and b/test-references/samples/canvg/accepted-variation/1-t1.0.png differ
diff --git a/test-references/samples/canvg/accepted-variation/issue125b.png b/test-references/samples/canvg/accepted-variation/issue125b.png
new file mode 100644
index 000000000..f8d8ec84f
Binary files /dev/null and b/test-references/samples/canvg/accepted-variation/issue125b.png differ
diff --git a/test-references/samples/canvg/accepted-variation/issue172.png b/test-references/samples/canvg/accepted-variation/issue172.png
new file mode 100644
index 000000000..b45efa8bf
Binary files /dev/null and b/test-references/samples/canvg/accepted-variation/issue172.png differ
diff --git a/test-references/samples/canvg/accepted-variation/issue24.png b/test-references/samples/canvg/accepted-variation/issue24.png
new file mode 100644
index 000000000..1e65aa385
Binary files /dev/null and b/test-references/samples/canvg/accepted-variation/issue24.png differ
diff --git a/test-references/samples/canvg/favicon.png b/test-references/samples/canvg/favicon.png
new file mode 100644
index 000000000..9ef9ab0c7
Binary files /dev/null and b/test-references/samples/canvg/favicon.png differ
diff --git a/test-references/samples/canvg/issue104.png b/test-references/samples/canvg/issue104.png
new file mode 100644
index 000000000..70aeca035
Binary files /dev/null and b/test-references/samples/canvg/issue104.png differ
diff --git a/test-references/samples/canvg/issue1045.png b/test-references/samples/canvg/issue1045.png
new file mode 100644
index 000000000..e15a831c1
Binary files /dev/null and b/test-references/samples/canvg/issue1045.png differ
diff --git a/test-references/samples/canvg/issue106.png b/test-references/samples/canvg/issue106.png
new file mode 100644
index 000000000..e6b9dbdf0
Binary files /dev/null and b/test-references/samples/canvg/issue106.png differ
diff --git a/test-references/samples/canvg/issue108.png b/test-references/samples/canvg/issue108.png
new file mode 100644
index 000000000..53360dca2
Binary files /dev/null and b/test-references/samples/canvg/issue108.png differ
diff --git a/test-references/samples/canvg/issue1111.png b/test-references/samples/canvg/issue1111.png
new file mode 100644
index 000000000..da920b69f
Binary files /dev/null and b/test-references/samples/canvg/issue1111.png differ
diff --git a/test-references/samples/canvg/issue112.png b/test-references/samples/canvg/issue112.png
new file mode 100644
index 000000000..b505ddb85
Binary files /dev/null and b/test-references/samples/canvg/issue112.png differ
diff --git a/test-references/samples/canvg/issue114.png b/test-references/samples/canvg/issue114.png
new file mode 100644
index 000000000..43a372fe1
Binary files /dev/null and b/test-references/samples/canvg/issue114.png differ
diff --git a/test-references/samples/canvg/issue115.png b/test-references/samples/canvg/issue115.png
new file mode 100644
index 000000000..3ce508cbc
Binary files /dev/null and b/test-references/samples/canvg/issue115.png differ
diff --git a/test-references/samples/canvg/issue116.png b/test-references/samples/canvg/issue116.png
new file mode 100644
index 000000000..42ac85393
Binary files /dev/null and b/test-references/samples/canvg/issue116.png differ
diff --git a/test-references/samples/canvg/issue1161.png b/test-references/samples/canvg/issue1161.png
new file mode 100644
index 000000000..0afb7f72d
Binary files /dev/null and b/test-references/samples/canvg/issue1161.png differ
diff --git a/test-references/samples/canvg/issue117.png b/test-references/samples/canvg/issue117.png
new file mode 100644
index 000000000..45d3547b4
Binary files /dev/null and b/test-references/samples/canvg/issue117.png differ
diff --git a/test-references/samples/canvg/issue1196.png b/test-references/samples/canvg/issue1196.png
new file mode 100644
index 000000000..f8d96fd45
Binary files /dev/null and b/test-references/samples/canvg/issue1196.png differ
diff --git a/test-references/samples/canvg/issue121-t1.0.png b/test-references/samples/canvg/issue121-t1.0.png
new file mode 100644
index 000000000..b50162372
Binary files /dev/null and b/test-references/samples/canvg/issue121-t1.0.png differ
diff --git a/test-references/samples/canvg/issue121.png b/test-references/samples/canvg/issue121.png
new file mode 100644
index 000000000..84902278d
Binary files /dev/null and b/test-references/samples/canvg/issue121.png differ
diff --git a/test-references/samples/canvg/issue122.png b/test-references/samples/canvg/issue122.png
new file mode 100644
index 000000000..c50cd2c19
Binary files /dev/null and b/test-references/samples/canvg/issue122.png differ
diff --git a/test-references/samples/canvg/issue125a.png b/test-references/samples/canvg/issue125a.png
new file mode 100644
index 000000000..7ee2a0685
Binary files /dev/null and b/test-references/samples/canvg/issue125a.png differ
diff --git a/test-references/samples/canvg/issue125b.png b/test-references/samples/canvg/issue125b.png
new file mode 100644
index 000000000..bf212581d
Binary files /dev/null and b/test-references/samples/canvg/issue125b.png differ
diff --git a/test-references/samples/canvg/issue128.png b/test-references/samples/canvg/issue128.png
new file mode 100644
index 000000000..172cc38ce
Binary files /dev/null and b/test-references/samples/canvg/issue128.png differ
diff --git a/test-references/samples/canvg/issue132.png b/test-references/samples/canvg/issue132.png
new file mode 100644
index 000000000..6747fcb83
Binary files /dev/null and b/test-references/samples/canvg/issue132.png differ
diff --git a/test-references/samples/canvg/issue135.png b/test-references/samples/canvg/issue135.png
new file mode 100644
index 000000000..2e6d4bb74
Binary files /dev/null and b/test-references/samples/canvg/issue135.png differ
diff --git a/test-references/samples/canvg/issue1364.png b/test-references/samples/canvg/issue1364.png
new file mode 100644
index 000000000..614af2d2c
Binary files /dev/null and b/test-references/samples/canvg/issue1364.png differ
diff --git a/test-references/samples/canvg/issue137.png b/test-references/samples/canvg/issue137.png
new file mode 100644
index 000000000..e9ae97b01
Binary files /dev/null and b/test-references/samples/canvg/issue137.png differ
diff --git a/test-references/samples/canvg/issue138.png b/test-references/samples/canvg/issue138.png
new file mode 100644
index 000000000..87c2c14de
Binary files /dev/null and b/test-references/samples/canvg/issue138.png differ
diff --git a/test-references/samples/extensions/accepted-variation/flowTextAlign.png b/test-references/samples/canvg/issue142.png
similarity index 54%
rename from test-references/samples/extensions/accepted-variation/flowTextAlign.png
rename to test-references/samples/canvg/issue142.png
index 7b70bad1e..3cf0b053f 100644
Binary files a/test-references/samples/extensions/accepted-variation/flowTextAlign.png and b/test-references/samples/canvg/issue142.png differ
diff --git a/test-references/samples/canvg/issue144.png b/test-references/samples/canvg/issue144.png
new file mode 100644
index 000000000..4c692c545
Binary files /dev/null and b/test-references/samples/canvg/issue144.png differ
diff --git a/test-references/samples/canvg/issue145.png b/test-references/samples/canvg/issue145.png
new file mode 100644
index 000000000..99003d4e9
Binary files /dev/null and b/test-references/samples/canvg/issue145.png differ
diff --git a/test-references/samples/canvg/issue1460.png b/test-references/samples/canvg/issue1460.png
new file mode 100644
index 000000000..87032d761
Binary files /dev/null and b/test-references/samples/canvg/issue1460.png differ
diff --git a/test-references/samples/canvg/issue1516.png b/test-references/samples/canvg/issue1516.png
new file mode 100644
index 000000000..28e1ae1ac
Binary files /dev/null and b/test-references/samples/canvg/issue1516.png differ
diff --git a/test-references/samples/canvg/issue1548a.png b/test-references/samples/canvg/issue1548a.png
new file mode 100644
index 000000000..e9b00ddb8
Binary files /dev/null and b/test-references/samples/canvg/issue1548a.png differ
diff --git a/test-references/samples/canvg/issue1548b.png b/test-references/samples/canvg/issue1548b.png
new file mode 100644
index 000000000..a71903934
Binary files /dev/null and b/test-references/samples/canvg/issue1548b.png differ
diff --git a/test-references/samples/canvg/issue1548c.png b/test-references/samples/canvg/issue1548c.png
new file mode 100644
index 000000000..76b789310
Binary files /dev/null and b/test-references/samples/canvg/issue1548c.png differ
diff --git a/test-references/samples/canvg/issue158.png b/test-references/samples/canvg/issue158.png
new file mode 100644
index 000000000..a7741c012
Binary files /dev/null and b/test-references/samples/canvg/issue158.png differ
diff --git a/test-references/samples/canvg/issue166.png b/test-references/samples/canvg/issue166.png
new file mode 100644
index 000000000..90e075b89
Binary files /dev/null and b/test-references/samples/canvg/issue166.png differ
diff --git a/test-references/samples/canvg/issue172.png b/test-references/samples/canvg/issue172.png
new file mode 100644
index 000000000..392f6a27c
Binary files /dev/null and b/test-references/samples/canvg/issue172.png differ
diff --git a/test-references/samples/canvg/issue175.png b/test-references/samples/canvg/issue175.png
new file mode 100644
index 000000000..722ac2bda
Binary files /dev/null and b/test-references/samples/canvg/issue175.png differ
diff --git a/test-references/samples/canvg/issue176.png b/test-references/samples/canvg/issue176.png
new file mode 100644
index 000000000..80e860b02
Binary files /dev/null and b/test-references/samples/canvg/issue176.png differ
diff --git a/test-references/samples/canvg/issue178.png b/test-references/samples/canvg/issue178.png
new file mode 100644
index 000000000..aafb0ef33
Binary files /dev/null and b/test-references/samples/canvg/issue178.png differ
diff --git a/test-references/samples/canvg/issue179-t0.5.png b/test-references/samples/canvg/issue179-t0.5.png
new file mode 100644
index 000000000..4a1581ad0
Binary files /dev/null and b/test-references/samples/canvg/issue179-t0.5.png differ
diff --git a/test-references/samples/canvg/issue179.png b/test-references/samples/canvg/issue179.png
new file mode 100644
index 000000000..79cf8024e
Binary files /dev/null and b/test-references/samples/canvg/issue179.png differ
diff --git a/test-references/samples/canvg/issue180.png b/test-references/samples/canvg/issue180.png
new file mode 100644
index 000000000..14ee08135
Binary files /dev/null and b/test-references/samples/canvg/issue180.png differ
diff --git a/test-references/samples/canvg/issue181.png b/test-references/samples/canvg/issue181.png
new file mode 100644
index 000000000..83fdb59e9
Binary files /dev/null and b/test-references/samples/canvg/issue181.png differ
diff --git a/test-references/samples/canvg/issue182.png b/test-references/samples/canvg/issue182.png
new file mode 100644
index 000000000..319157eb1
Binary files /dev/null and b/test-references/samples/canvg/issue182.png differ
diff --git a/test-references/samples/canvg/issue183.png b/test-references/samples/canvg/issue183.png
new file mode 100644
index 000000000..0cb699a33
Binary files /dev/null and b/test-references/samples/canvg/issue183.png differ
diff --git a/test-references/samples/canvg/issue184.png b/test-references/samples/canvg/issue184.png
new file mode 100644
index 000000000..914ce3007
Binary files /dev/null and b/test-references/samples/canvg/issue184.png differ
diff --git a/test-references/samples/canvg/issue187.png b/test-references/samples/canvg/issue187.png
new file mode 100644
index 000000000..45843b9d4
Binary files /dev/null and b/test-references/samples/canvg/issue187.png differ
diff --git a/test-references/samples/canvg/issue195.png b/test-references/samples/canvg/issue195.png
new file mode 100644
index 000000000..521dbaf3b
Binary files /dev/null and b/test-references/samples/canvg/issue195.png differ
diff --git a/test-references/samples/canvg/issue196.png b/test-references/samples/canvg/issue196.png
new file mode 100644
index 000000000..b0c7b05d0
Binary files /dev/null and b/test-references/samples/canvg/issue196.png differ
diff --git a/test-references/samples/canvg/issue197.png b/test-references/samples/canvg/issue197.png
new file mode 100644
index 000000000..3332ba7c2
Binary files /dev/null and b/test-references/samples/canvg/issue197.png differ
diff --git a/test-references/samples/canvg/issue202.png b/test-references/samples/canvg/issue202.png
new file mode 100644
index 000000000..30b3d37d4
Binary files /dev/null and b/test-references/samples/canvg/issue202.png differ
diff --git a/test-references/samples/canvg/issue202b.png b/test-references/samples/canvg/issue202b.png
new file mode 100644
index 000000000..cac3960ac
Binary files /dev/null and b/test-references/samples/canvg/issue202b.png differ
diff --git a/test-references/samples/canvg/issue206.png b/test-references/samples/canvg/issue206.png
new file mode 100644
index 000000000..e84eb258a
Binary files /dev/null and b/test-references/samples/canvg/issue206.png differ
diff --git a/test-references/samples/canvg/issue212.png b/test-references/samples/canvg/issue212.png
new file mode 100644
index 000000000..3e088738e
Binary files /dev/null and b/test-references/samples/canvg/issue212.png differ
diff --git a/test-references/samples/canvg/issue217.png b/test-references/samples/canvg/issue217.png
new file mode 100644
index 000000000..45c6bd903
Binary files /dev/null and b/test-references/samples/canvg/issue217.png differ
diff --git a/test-references/samples/canvg/issue227.png b/test-references/samples/canvg/issue227.png
new file mode 100644
index 000000000..ad91e8838
Binary files /dev/null and b/test-references/samples/canvg/issue227.png differ
diff --git a/test-references/samples/canvg/issue229.png b/test-references/samples/canvg/issue229.png
new file mode 100644
index 000000000..c104a36d2
Binary files /dev/null and b/test-references/samples/canvg/issue229.png differ
diff --git a/test-references/samples/canvg/issue231.png b/test-references/samples/canvg/issue231.png
new file mode 100644
index 000000000..f1b6b1398
Binary files /dev/null and b/test-references/samples/canvg/issue231.png differ
diff --git a/test-references/samples/canvg/issue234.png b/test-references/samples/canvg/issue234.png
new file mode 100644
index 000000000..33416c2ed
Binary files /dev/null and b/test-references/samples/canvg/issue234.png differ
diff --git a/test-references/samples/canvg/issue234b.png b/test-references/samples/canvg/issue234b.png
new file mode 100644
index 000000000..0782cbede
Binary files /dev/null and b/test-references/samples/canvg/issue234b.png differ
diff --git a/test-references/samples/canvg/issue234c.png b/test-references/samples/canvg/issue234c.png
new file mode 100644
index 000000000..85b15bdb7
Binary files /dev/null and b/test-references/samples/canvg/issue234c.png differ
diff --git a/test-references/samples/canvg/issue234d.png b/test-references/samples/canvg/issue234d.png
new file mode 100644
index 000000000..54b5a1b71
Binary files /dev/null and b/test-references/samples/canvg/issue234d.png differ
diff --git a/test-references/samples/canvg/issue234e.png b/test-references/samples/canvg/issue234e.png
new file mode 100644
index 000000000..5c570faf6
Binary files /dev/null and b/test-references/samples/canvg/issue234e.png differ
diff --git a/test-references/samples/canvg/issue238.png b/test-references/samples/canvg/issue238.png
new file mode 100644
index 000000000..a80235f0c
Binary files /dev/null and b/test-references/samples/canvg/issue238.png differ
diff --git a/test-references/samples/canvg/issue24.png b/test-references/samples/canvg/issue24.png
new file mode 100644
index 000000000..dc0ce2e91
Binary files /dev/null and b/test-references/samples/canvg/issue24.png differ
diff --git a/test-references/samples/canvg/issue241.png b/test-references/samples/canvg/issue241.png
new file mode 100644
index 000000000..b378a21f4
Binary files /dev/null and b/test-references/samples/canvg/issue241.png differ
diff --git a/test-references/samples/canvg/issue244.png b/test-references/samples/canvg/issue244.png
new file mode 100644
index 000000000..038e4f1bb
Binary files /dev/null and b/test-references/samples/canvg/issue244.png differ
diff --git a/test-references/samples/canvg/issue25.png b/test-references/samples/canvg/issue25.png
new file mode 100644
index 000000000..e77ac9f08
Binary files /dev/null and b/test-references/samples/canvg/issue25.png differ
diff --git a/test-references/samples/canvg/issue255.png b/test-references/samples/canvg/issue255.png
new file mode 100644
index 000000000..d0912e5d0
Binary files /dev/null and b/test-references/samples/canvg/issue255.png differ
diff --git a/test-references/samples/canvg/issue268.png b/test-references/samples/canvg/issue268.png
new file mode 100644
index 000000000..d656db180
Binary files /dev/null and b/test-references/samples/canvg/issue268.png differ
diff --git a/test-references/samples/canvg/issue269.png b/test-references/samples/canvg/issue269.png
new file mode 100644
index 000000000..5c4aaba89
Binary files /dev/null and b/test-references/samples/canvg/issue269.png differ
diff --git a/test-references/samples/canvg/issue273-t1.0.png b/test-references/samples/canvg/issue273-t1.0.png
new file mode 100644
index 000000000..02766236f
Binary files /dev/null and b/test-references/samples/canvg/issue273-t1.0.png differ
diff --git a/test-references/samples/canvg/issue273-t2.0.png b/test-references/samples/canvg/issue273-t2.0.png
new file mode 100644
index 000000000..66a99d889
Binary files /dev/null and b/test-references/samples/canvg/issue273-t2.0.png differ
diff --git a/test-references/samples/canvg/issue273.png b/test-references/samples/canvg/issue273.png
new file mode 100644
index 000000000..39b710c45
Binary files /dev/null and b/test-references/samples/canvg/issue273.png differ
diff --git a/test-references/samples/canvg/issue277.png b/test-references/samples/canvg/issue277.png
new file mode 100644
index 000000000..85bb9aee8
Binary files /dev/null and b/test-references/samples/canvg/issue277.png differ
diff --git a/test-references/samples/canvg/issue282.png b/test-references/samples/canvg/issue282.png
new file mode 100644
index 000000000..0789e424f
Binary files /dev/null and b/test-references/samples/canvg/issue282.png differ
diff --git a/test-references/samples/canvg/issue289.png b/test-references/samples/canvg/issue289.png
new file mode 100644
index 000000000..c15c06295
Binary files /dev/null and b/test-references/samples/canvg/issue289.png differ
diff --git a/test-references/samples/canvg/issue3.png b/test-references/samples/canvg/issue3.png
new file mode 100644
index 000000000..db3e526a8
Binary files /dev/null and b/test-references/samples/canvg/issue3.png differ
diff --git a/test-references/samples/canvg/issue30.png b/test-references/samples/canvg/issue30.png
new file mode 100644
index 000000000..145a16d4f
Binary files /dev/null and b/test-references/samples/canvg/issue30.png differ
diff --git a/test-references/samples/canvg/issue31.png b/test-references/samples/canvg/issue31.png
new file mode 100644
index 000000000..618f8ca85
Binary files /dev/null and b/test-references/samples/canvg/issue31.png differ
diff --git a/test-references/samples/canvg/issue32.png b/test-references/samples/canvg/issue32.png
new file mode 100644
index 000000000..ce6ce9695
Binary files /dev/null and b/test-references/samples/canvg/issue32.png differ
diff --git a/test-references/samples/canvg/issue320.png b/test-references/samples/canvg/issue320.png
new file mode 100644
index 000000000..6c76d3afd
Binary files /dev/null and b/test-references/samples/canvg/issue320.png differ
diff --git a/test-references/samples/canvg/issue322.png b/test-references/samples/canvg/issue322.png
new file mode 100644
index 000000000..2645a7630
Binary files /dev/null and b/test-references/samples/canvg/issue322.png differ
diff --git a/test-references/samples/canvg/issue33.png b/test-references/samples/canvg/issue33.png
new file mode 100644
index 000000000..67199d137
Binary files /dev/null and b/test-references/samples/canvg/issue33.png differ
diff --git a/test-references/samples/canvg/issue34.png b/test-references/samples/canvg/issue34.png
new file mode 100644
index 000000000..47485d936
Binary files /dev/null and b/test-references/samples/canvg/issue34.png differ
diff --git a/test-references/samples/canvg/issue342.png b/test-references/samples/canvg/issue342.png
new file mode 100644
index 000000000..f86d9e892
Binary files /dev/null and b/test-references/samples/canvg/issue342.png differ
diff --git a/test-references/samples/canvg/issue35.png b/test-references/samples/canvg/issue35.png
new file mode 100644
index 000000000..3a9ddc9b6
Binary files /dev/null and b/test-references/samples/canvg/issue35.png differ
diff --git a/test-references/samples/canvg/issue352.png b/test-references/samples/canvg/issue352.png
new file mode 100644
index 000000000..544a9a27d
Binary files /dev/null and b/test-references/samples/canvg/issue352.png differ
diff --git a/test-references/samples/canvg/issue358.png b/test-references/samples/canvg/issue358.png
new file mode 100644
index 000000000..5862d4e8e
Binary files /dev/null and b/test-references/samples/canvg/issue358.png differ
diff --git a/test-references/samples/canvg/issue36.png b/test-references/samples/canvg/issue36.png
new file mode 100644
index 000000000..9227dcd3d
Binary files /dev/null and b/test-references/samples/canvg/issue36.png differ
diff --git a/test-references/samples/canvg/issue362.png b/test-references/samples/canvg/issue362.png
new file mode 100644
index 000000000..2fc0af1ba
Binary files /dev/null and b/test-references/samples/canvg/issue362.png differ
diff --git a/test-references/samples/canvg/issue366.png b/test-references/samples/canvg/issue366.png
new file mode 100644
index 000000000..5e38323d1
Binary files /dev/null and b/test-references/samples/canvg/issue366.png differ
diff --git a/test-references/samples/canvg/issue372.png b/test-references/samples/canvg/issue372.png
new file mode 100644
index 000000000..06d2f788a
Binary files /dev/null and b/test-references/samples/canvg/issue372.png differ
diff --git a/test-references/samples/canvg/issue376.png b/test-references/samples/canvg/issue376.png
new file mode 100644
index 000000000..9e1dc7f63
Binary files /dev/null and b/test-references/samples/canvg/issue376.png differ
diff --git a/test-references/samples/canvg/issue38.png b/test-references/samples/canvg/issue38.png
new file mode 100644
index 000000000..905fdf818
Binary files /dev/null and b/test-references/samples/canvg/issue38.png differ
diff --git a/test-references/samples/canvg/issue39.png b/test-references/samples/canvg/issue39.png
new file mode 100644
index 000000000..3dda81e90
Binary files /dev/null and b/test-references/samples/canvg/issue39.png differ
diff --git a/test-references/samples/canvg/issue40.png b/test-references/samples/canvg/issue40.png
new file mode 100644
index 000000000..b9cdefe86
Binary files /dev/null and b/test-references/samples/canvg/issue40.png differ
diff --git a/test-references/samples/canvg/issue406.png b/test-references/samples/canvg/issue406.png
new file mode 100644
index 000000000..54def7b5f
Binary files /dev/null and b/test-references/samples/canvg/issue406.png differ
diff --git a/test-references/samples/canvg/issue41.png b/test-references/samples/canvg/issue41.png
new file mode 100644
index 000000000..4e9b8794b
Binary files /dev/null and b/test-references/samples/canvg/issue41.png differ
diff --git a/test-references/samples/canvg/issue42.png b/test-references/samples/canvg/issue42.png
new file mode 100644
index 000000000..fc61423cd
Binary files /dev/null and b/test-references/samples/canvg/issue42.png differ
diff --git a/test-references/samples/canvg/issue44.png b/test-references/samples/canvg/issue44.png
new file mode 100644
index 000000000..4b997685e
Binary files /dev/null and b/test-references/samples/canvg/issue44.png differ
diff --git a/test-references/samples/canvg/issue45.png b/test-references/samples/canvg/issue45.png
new file mode 100644
index 000000000..b768d0b7d
Binary files /dev/null and b/test-references/samples/canvg/issue45.png differ
diff --git a/test-references/samples/canvg/issue454.png b/test-references/samples/canvg/issue454.png
new file mode 100644
index 000000000..45ab915a9
Binary files /dev/null and b/test-references/samples/canvg/issue454.png differ
diff --git a/test-references/samples/canvg/issue454b.png b/test-references/samples/canvg/issue454b.png
new file mode 100644
index 000000000..94d456fed
Binary files /dev/null and b/test-references/samples/canvg/issue454b.png differ
diff --git a/test-references/samples/canvg/issue46.png b/test-references/samples/canvg/issue46.png
new file mode 100644
index 000000000..2d1180081
Binary files /dev/null and b/test-references/samples/canvg/issue46.png differ
diff --git a/test-references/samples/canvg/issue473.png b/test-references/samples/canvg/issue473.png
new file mode 100644
index 000000000..c94615bfb
Binary files /dev/null and b/test-references/samples/canvg/issue473.png differ
diff --git a/test-references/samples/canvg/issue48.png b/test-references/samples/canvg/issue48.png
new file mode 100644
index 000000000..28f0beba9
Binary files /dev/null and b/test-references/samples/canvg/issue48.png differ
diff --git a/test-references/samples/canvg/issue50.png b/test-references/samples/canvg/issue50.png
new file mode 100644
index 000000000..e0cad98fe
Binary files /dev/null and b/test-references/samples/canvg/issue50.png differ
diff --git a/test-references/samples/canvg/issue510.png b/test-references/samples/canvg/issue510.png
new file mode 100644
index 000000000..445a7d3be
Binary files /dev/null and b/test-references/samples/canvg/issue510.png differ
diff --git a/test-references/samples/canvg/issue52.png b/test-references/samples/canvg/issue52.png
new file mode 100644
index 000000000..83a345aa3
Binary files /dev/null and b/test-references/samples/canvg/issue52.png differ
diff --git a/test-references/samples/canvg/issue54.png b/test-references/samples/canvg/issue54.png
new file mode 100644
index 000000000..84767cd1b
Binary files /dev/null and b/test-references/samples/canvg/issue54.png differ
diff --git a/test-references/samples/canvg/issue55.png b/test-references/samples/canvg/issue55.png
new file mode 100644
index 000000000..d4cb2c6b6
Binary files /dev/null and b/test-references/samples/canvg/issue55.png differ
diff --git a/test-references/samples/canvg/issue556.png b/test-references/samples/canvg/issue556.png
new file mode 100644
index 000000000..d000c7652
Binary files /dev/null and b/test-references/samples/canvg/issue556.png differ
diff --git a/test-references/samples/canvg/issue564.png b/test-references/samples/canvg/issue564.png
new file mode 100644
index 000000000..29a09e4df
Binary files /dev/null and b/test-references/samples/canvg/issue564.png differ
diff --git a/test-references/samples/canvg/issue57.png b/test-references/samples/canvg/issue57.png
new file mode 100644
index 000000000..796c876dc
Binary files /dev/null and b/test-references/samples/canvg/issue57.png differ
diff --git a/test-references/samples/canvg/issue57b.png b/test-references/samples/canvg/issue57b.png
new file mode 100644
index 000000000..45c80cef1
Binary files /dev/null and b/test-references/samples/canvg/issue57b.png differ
diff --git a/test-references/samples/canvg/issue593.png b/test-references/samples/canvg/issue593.png
new file mode 100644
index 000000000..2742ae8e2
Binary files /dev/null and b/test-references/samples/canvg/issue593.png differ
diff --git a/test-references/samples/canvg/issue610.png b/test-references/samples/canvg/issue610.png
new file mode 100644
index 000000000..9f7ad4668
Binary files /dev/null and b/test-references/samples/canvg/issue610.png differ
diff --git a/test-references/samples/canvg/issue615.png b/test-references/samples/canvg/issue615.png
new file mode 100644
index 000000000..0c2b52eba
Binary files /dev/null and b/test-references/samples/canvg/issue615.png differ
diff --git a/test-references/samples/canvg/issue620.png b/test-references/samples/canvg/issue620.png
new file mode 100644
index 000000000..3d4411559
Binary files /dev/null and b/test-references/samples/canvg/issue620.png differ
diff --git a/test-references/samples/canvg/issue66.png b/test-references/samples/canvg/issue66.png
new file mode 100644
index 000000000..dc8ab6109
Binary files /dev/null and b/test-references/samples/canvg/issue66.png differ
diff --git a/test-references/samples/canvg/issue67.png b/test-references/samples/canvg/issue67.png
new file mode 100644
index 000000000..b2257bcb2
Binary files /dev/null and b/test-references/samples/canvg/issue67.png differ
diff --git a/test-references/samples/canvg/issue690.png b/test-references/samples/canvg/issue690.png
new file mode 100644
index 000000000..bf1c3f496
Binary files /dev/null and b/test-references/samples/canvg/issue690.png differ
diff --git a/test-references/samples/canvg/issue70.png b/test-references/samples/canvg/issue70.png
new file mode 100644
index 000000000..cfcae2a07
Binary files /dev/null and b/test-references/samples/canvg/issue70.png differ
diff --git a/test-references/samples/canvg/issue71.png b/test-references/samples/canvg/issue71.png
new file mode 100644
index 000000000..120992078
Binary files /dev/null and b/test-references/samples/canvg/issue71.png differ
diff --git a/test-references/samples/canvg/issue717.png b/test-references/samples/canvg/issue717.png
new file mode 100644
index 000000000..4155829cb
Binary files /dev/null and b/test-references/samples/canvg/issue717.png differ
diff --git a/test-references/samples/canvg/issue73-t2.7.png b/test-references/samples/canvg/issue73-t2.7.png
new file mode 100644
index 000000000..0ce6d5965
Binary files /dev/null and b/test-references/samples/canvg/issue73-t2.7.png differ
diff --git a/test-references/samples/canvg/issue735.png b/test-references/samples/canvg/issue735.png
new file mode 100644
index 000000000..6cd4e6764
Binary files /dev/null and b/test-references/samples/canvg/issue735.png differ
diff --git a/test-references/samples/canvg/issue747.png b/test-references/samples/canvg/issue747.png
new file mode 100644
index 000000000..bedbc42ad
Binary files /dev/null and b/test-references/samples/canvg/issue747.png differ
diff --git a/test-references/samples/canvg/issue748.png b/test-references/samples/canvg/issue748.png
new file mode 100644
index 000000000..2e87d8c2a
Binary files /dev/null and b/test-references/samples/canvg/issue748.png differ
diff --git a/test-references/samples/canvg/issue75.png b/test-references/samples/canvg/issue75.png
new file mode 100644
index 000000000..5015dc658
Binary files /dev/null and b/test-references/samples/canvg/issue75.png differ
diff --git a/test-references/samples/canvg/issue750.png b/test-references/samples/canvg/issue750.png
new file mode 100644
index 000000000..add9a1646
Binary files /dev/null and b/test-references/samples/canvg/issue750.png differ
diff --git a/test-references/samples/canvg/issue757.png b/test-references/samples/canvg/issue757.png
new file mode 100644
index 000000000..acf606add
Binary files /dev/null and b/test-references/samples/canvg/issue757.png differ
diff --git a/test-references/samples/canvg/issue76.png b/test-references/samples/canvg/issue76.png
new file mode 100644
index 000000000..d674b1d2c
Binary files /dev/null and b/test-references/samples/canvg/issue76.png differ
diff --git a/test-references/samples/canvg/issue77.png b/test-references/samples/canvg/issue77.png
new file mode 100644
index 000000000..a1f00fc42
Binary files /dev/null and b/test-references/samples/canvg/issue77.png differ
diff --git a/test-references/samples/canvg/issue782a.png b/test-references/samples/canvg/issue782a.png
new file mode 100644
index 000000000..53c99e3fa
Binary files /dev/null and b/test-references/samples/canvg/issue782a.png differ
diff --git a/test-references/samples/canvg/issue782b.png b/test-references/samples/canvg/issue782b.png
new file mode 100644
index 000000000..61c0dded3
Binary files /dev/null and b/test-references/samples/canvg/issue782b.png differ
diff --git a/test-references/samples/canvg/issue79.png b/test-references/samples/canvg/issue79.png
new file mode 100644
index 000000000..fe9875a17
Binary files /dev/null and b/test-references/samples/canvg/issue79.png differ
diff --git a/test-references/samples/canvg/issue8.png b/test-references/samples/canvg/issue8.png
new file mode 100644
index 000000000..fba609da7
Binary files /dev/null and b/test-references/samples/canvg/issue8.png differ
diff --git a/test-references/samples/canvg/issue816.png b/test-references/samples/canvg/issue816.png
new file mode 100644
index 000000000..cbc29444e
Binary files /dev/null and b/test-references/samples/canvg/issue816.png differ
diff --git a/test-references/samples/canvg/issue832.png b/test-references/samples/canvg/issue832.png
new file mode 100644
index 000000000..ea3b6b441
Binary files /dev/null and b/test-references/samples/canvg/issue832.png differ
diff --git a/test-references/samples/canvg/issue85.png b/test-references/samples/canvg/issue85.png
new file mode 100644
index 000000000..0cd32a161
Binary files /dev/null and b/test-references/samples/canvg/issue85.png differ
diff --git a/test-references/samples/canvg/issue88.png b/test-references/samples/canvg/issue88.png
new file mode 100644
index 000000000..27b9c4a90
Binary files /dev/null and b/test-references/samples/canvg/issue88.png differ
diff --git a/test-references/samples/canvg/issue89.png b/test-references/samples/canvg/issue89.png
new file mode 100644
index 000000000..cef4d7594
Binary files /dev/null and b/test-references/samples/canvg/issue89.png differ
diff --git a/test-references/samples/extensions/accepted-variation/star.png b/test-references/samples/canvg/issue897a.png
similarity index 52%
rename from test-references/samples/extensions/accepted-variation/star.png
rename to test-references/samples/canvg/issue897a.png
index b6c9aadd1..03f644c04 100644
Binary files a/test-references/samples/extensions/accepted-variation/star.png and b/test-references/samples/canvg/issue897a.png differ
diff --git a/test-references/samples/canvg/issue897b.png b/test-references/samples/canvg/issue897b.png
new file mode 100644
index 000000000..32f677906
Binary files /dev/null and b/test-references/samples/canvg/issue897b.png differ
diff --git a/test-references/samples/canvg/issue91.png b/test-references/samples/canvg/issue91.png
new file mode 100644
index 000000000..4e97ac7b9
Binary files /dev/null and b/test-references/samples/canvg/issue91.png differ
diff --git a/test-references/samples/canvg/issue941.png b/test-references/samples/canvg/issue941.png
new file mode 100644
index 000000000..4038608bf
Binary files /dev/null and b/test-references/samples/canvg/issue941.png differ
diff --git a/test-references/samples/canvg/issue945.png b/test-references/samples/canvg/issue945.png
new file mode 100644
index 000000000..45c015b6d
Binary files /dev/null and b/test-references/samples/canvg/issue945.png differ
diff --git a/test-references/samples/canvg/issue946.png b/test-references/samples/canvg/issue946.png
new file mode 100644
index 000000000..7ccff1296
Binary files /dev/null and b/test-references/samples/canvg/issue946.png differ
diff --git a/test-references/samples/canvg/issue97.png b/test-references/samples/canvg/issue97.png
new file mode 100644
index 000000000..ebe18a3a8
Binary files /dev/null and b/test-references/samples/canvg/issue97.png differ
diff --git a/test-references/samples/canvg/issue98.png b/test-references/samples/canvg/issue98.png
new file mode 100644
index 000000000..f339d0a0f
Binary files /dev/null and b/test-references/samples/canvg/issue98.png differ
diff --git a/test-references/samples/canvg/issue99.png b/test-references/samples/canvg/issue99.png
new file mode 100644
index 000000000..11c76bc47
Binary files /dev/null and b/test-references/samples/canvg/issue99.png differ
diff --git a/test-references/samples/tests/spec12/text/accepted-variation/flowText5.png b/test-references/samples/tests/spec12/text/accepted-variation/flowText5.png
new file mode 100644
index 000000000..645c74f83
Binary files /dev/null and b/test-references/samples/tests/spec12/text/accepted-variation/flowText5.png differ