Giter Site home page Giter Site logo

razrfalcon / resvg-test-suite Goto Github PK

View Code? Open in Web Editor NEW
20.0 7.0 11.0 21.76 MB

resvg test suite

Home Page: https://razrfalcon.github.io/resvg-test-suite/svg-support-table.html

License: MIT License

Python 13.88% HTML 0.80% CSS 7.13% JavaScript 3.47% C++ 73.77% QMake 0.95%
svg test-suite

resvg-test-suite's Introduction

SWUbanner

vshymanskyy's GitHub stats

resvg-test-suite's People

Contributors

razrfalcon avatar smaximov avatar yevheniireizner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

resvg-test-suite's Issues

FYI duplicates

Issue with `structure/transform/rotate-at-position.svg`?

The svg is as follows:

<svg id="svg1" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
    <title>`rotate-at-position`</title>

    <!-- should be covered -->
    <path id="path1" d="M 99,14.14 L 183.8,99 L 99,183.85 L 14.14,99 Z" fill="red"/>

    <g id="g1" transform="rotate(45, 100, 50)">
        <rect id="rect1" x="75" y="25" width="120" height="120" fill="green"/>
    </g>

    <!-- image frame -->
    <rect id="frame" x="1" y="1" width="198" height="198" fill="none" stroke="black"/>
</svg>

It says that the red path should be covered, but even in the resvg reference pictures it is not completely covered:
rotate-at-position

Same applies to when opening the svg directly in Chrome/Firefox.

Is there something wrong with the description or am I missing something else?

e-radialGradient-031: Focal point correction changed in SVG2

This test is validating focal point correction, but that was changed in SVG2, from https://www.w3.org/TR/SVG2/pservers.html#RadialGradientNotes:

f the start circle defined by ‘fx’, ‘fy’ and ‘fr’ lies outside the end circle defined by ‘cx’, ‘cy’, and ‘r’, effectively a cone is created, touched by the two circles. Areas outside the cone stay untouched by the gradient (transparent black).

So instead of correcting the focal point, it now draws a cone. Based on that, I believe the test should render as follows:

With cone

However, the golden in the test suite renders as follows:
actual e-radialGradient-031

Chrome appears to render in the same way with a cone, so I think that the results of the test suite are backwards.

The spec appears to be worded without mentioning backwards compatibility, should the SVG2 behavior be used for all files?

Batik on UNIX: invalid file (bad magic number): Exec format error

If I run vdiff
with this settings:
Bildschirmfoto von 2021-03-18 23-14-36

I get
Bildschirmfoto von 2021-03-18 23-13-14

Process 'home/jokalliau/prgm/batik-1.14/batik-rasterizer-1.14.jar' finished with an invalid exit code: 1 invalid file (bad magic number: Exec format error

It might be related with this issue: https://stackoverflow.com/a/29139336/6747994 or https://stackoverflow.com/a/42646713/6747994

How I installed batik

cd home/jokalliau/prgm
wget https://mirror.klaus-uwe.me/apache//xmlgraphics/batik/binaries/batik-bin-1.14.zip
unzip batik-bin-1.14.zip

Rending with batik

java -jar ~/prgm/batik-1.14/batik-rasterizer-1.14.jar "$file" -d "${file%.svg}_batik.png" works

Do I have to choose the *.jar-file or an executable-file?

Version

OS: Fedora 33
Batik: 1.14

wxSVG does not work

When I try to render with wxSVG it fails because it does not find libwxsvg.so.3

Screenshot from 2020-03-02 19-16-36

This are my settings
Screenshot from 2020-03-02 19-16-31

I downloaded https://sourceforge.net/projects/wxsvg/files/ and builded it in /home/jkalliau/prgm/wxsvg-1.5.22

.\INSTALL
.\configure
.\INSTALL
make
make install
sudo make install

I found it in /home/jkalliau/prgm/wxsvg-1.5.22/src/.libs/libwxsvg.so.3.

I think I could copy it to /usr/lib. But I think that might mess up my system?
Can I tell vdiff to use /home/jkalliau/prgm/wxsvg-1.5.22/src/.libs/libwxsvg.so.3 for wxsvg?

Styling Issue

Trying to create a styling file that be linked (where possible) or dynamically embedded in the SVG test files for consistent results. Does the following CSS captures the styling required by the tests? (Inkscape results later shows it can make a difference):
NOTE: Some of the font families like NotoSans-Medium.ttf are not currently included in the fonts directory.

* { 
  font-family: "Noto Sans" 
}
.serif {
  font-family: "Noto Serif", serif;
}
.sansserif {
  font-family: "Noto Sans", sans-serif;
}
.monospace {
  font-family: "Noto Mono", monospace;
}
.cursive {
  font-family: "Yellowtail", cursive;
}
.fantasy {
  font-family: "Sedgwick Ave Display", fantasy;
}
.emoji {
  font-family: "Noto Color Emoji", "Noto Emoji", emoji;
}
.math {
  font-family: math;
}
.fangsong {
  font-family: fangsong;
}
@font-face {
   font-family: "Noto Serif";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/NotoSerif-Regular.ttf) format('truetype');
 }
@font-face {
  font-family: "Noto Sans";
  font-style: normal;
  font-weight: 100;
  src: url(../fonts/NotoSans-Thin.ttf) format('truetype');
}
@font-face {
  font-family: "Noto Sans";
  font-style: normal;
  font-weight: 200;
  src: url(../fonts/NotoSans-Light.ttf) format('truetype');
}
@font-face {
   font-family: "Noto Sans";
   font-style: normal;
   font-weight: 300;
   src: url(../fonts/NotoSans-DemiLight.ttf) format('truetype');
}
@font-face {
   font-family: "Noto Sans";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/NotoSans-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: "Noto Sans";
   font-style: normal;
   font-weight: 500;
   src: url(../fonts/NotoSans-Medium.ttf) format('truetype');
 }
@font-face {
   font-family: "Noto Sans";
   font-style: normal;
   font-weight: 700;
   src: url(../fonts/NotoSans-Bold.ttf) format('truetype');
 }
@font-face {
   font-family: "Noto Sans";
   font-style: normal;
   font-weight: 900;
   src: url(../fonts/NotoSans-Black.ttf) format('truetype');
 }
@font-face {
   font-family: Yellowtail;
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/Yellowtail-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: "Sedgwick Ave Display";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/SedgwickAveDisplay-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: "Source Sans Pro";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/SourceSansPro-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: "Noto Color Emoji";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/NotoColorEmoji.ttf) format('truetype');
 }
@font-face {
   font-family: "Noto Emoji";
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/NotoEmoji-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: Amiri;
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/Amiri-Regular.ttf) format('truetype');
 }
@font-face {
   font-family: MPLUS1p;
   font-style: normal;
   font-weight: 400;
   src: url(../fonts/MPLUS1p-Regular.ttf) format('truetype');
 }

Update 1: Added missing @font-face definition for Noto Serif.

The following are the results generated by exporting a-alignment-baseline-001.svg with Inkscape (command line)

Without Styling (current default) With Styling (above css embedded)

vdiff supports Qt6?

According to https://github.com/RazrFalcon/resvg-test-suite/blob/master/tools/vdiff/README.md#dependencies vdiff depends on Qt5, but is Qt6 also supported?

sudo dnf install /usr/bin/qmake
sudo dnf install inkscape qt6-qtbase-devel qt6-qtsvg-devel wxsvg wxsvg-devel
cd /home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff
cd ../chrome-svgrender
npm i puppeteer
cd ../qtsvgrender
qmake
make #returns `make: Nothing to be done for 'first'.`
cd ../wxsvgrender
qmake
make #returns `fatal error: wx/wx.h: No such file or directory`
./build #returns `fatal error: wx/wx.h: No such file or directory`
cd ../vdiff
qmake
make # that is the problematic step

the last make-command returns:

g++ -c -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC -DSRCDIR=\"/home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff/\" -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CONCURRENT_LIB -DQT_SQL_LIB -DQT_CORE_LIB -I. -I/usr/include/qt6 -I/usr/include/qt6/QtWidgets -I/usr/include/qt6/QtGui -I/usr/include/qt6/QtConcurrent -I/usr/include/qt6/QtSql -I/usr/include/qt6/QtCore -I. -I. -I/../lib64/qt6/mkspecs/linux-g++ -o tests.o src/tests.cpp
src/tests.cpp:12:37: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
   12 | static TestState stateFormStr(const QStringRef &str)
      |                                     ^~~~~~~~~~
      |                                     QStringView
src/tests.cpp: In function ‘TestState stateFormStr(const int&)’:
src/tests.cpp:15:25: error: request for member ‘toInt’ in ‘str’, which is of non-class type ‘const int’
   15 |     const int idx = str.toInt(&ok);
      |                         ^~~~~
src/tests.cpp:18:57: error: request for member ‘toString’ in ‘str’, which is of non-class type ‘const int’
   18 |         throw QString("Invalid state ID: '%1'").arg(str.toString());
      |                                                         ^~~~~~~~
src/tests.cpp: In function ‘QString parseTitle(const QString&)’:
src/tests.cpp:43:34: error: conversion from ‘const char [6]’ to ‘QChar’ is ambiguous
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:125:45: note: candidate: ‘constexpr QChar::QChar(char)’ (near match)
  125 |     QT_ASCII_CAST_WARN constexpr Q_IMPLICIT QChar(char c) noexcept : ucs(uchar(c)) { }
      |                                             ^~~~~
/usr/include/qt6/QtCore/qchar.h:125:45: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘char’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:118:26: note: candidate: ‘constexpr QChar::QChar(char16_t)’ (near match)
  118 |     constexpr Q_IMPLICIT QChar(char16_t ch) noexcept : ucs(ch) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:118:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘char16_t’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:113:26: note: candidate: ‘constexpr QChar::QChar(short int)’ (near match)
  113 |     constexpr Q_IMPLICIT QChar(short rc) noexcept : ucs(char16_t(rc)) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:113:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘short int’ [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qchar.h:111:26: note: candidate: ‘constexpr QChar::QChar(ushort)’ (near match)
  111 |     constexpr Q_IMPLICIT QChar(ushort rc) noexcept : ucs(rc) {}
      |                          ^~~~~
/usr/include/qt6/QtCore/qchar.h:111:26: note:   conversion of argument 1 would be ill-formed:
src/tests.cpp:43:34: error: invalid conversion from ‘const char*’ to ‘ushort’ {aka ‘short unsigned int’} [-fpermissive]
   43 |             if (reader.name() == "title") {
      |                                  ^~~~~~~
      |                                  |
      |                                  const char*
In file included from /usr/include/qt6/QtCore/qchar.h:665,
                 from /usr/include/qt6/QtCore/qstring.h:50,
                 from /usr/include/qt6/QtCore/qobject.h:47,
                 from /usr/include/qt6/QtCore/qiodevice.h:46,
                 from /usr/include/qt6/QtCore/qfiledevice.h:43,
                 from /usr/include/qt6/QtCore/qfile.h:44,
                 from /usr/include/qt6/QtCore/QFile:1,
                 from src/tests.cpp:1:
/usr/include/qt6/QtCore/qstringview.h:412:51: note:   initializing argument 2 of ‘bool operator==(QStringView, QChar)’
  412 |     friend bool operator==(QStringView lhs, QChar rhs) noexcept { return lhs == QStringView(&rhs, 1); }
      |                                             ~~~~~~^~~
src/tests.cpp: In static member function ‘static Tests Tests::load(TestSuite, const QString&, const QString&)’:
src/tests.cpp:70:16: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
   70 |     for (const QStringRef &line : text.splitRef('\n')) {
      |                ^~~~~~~~~~
      |                QStringView
src/tests.cpp:110:6: error: expected ‘;’ before ‘return’
  110 |     }
      |      ^
      |      ;
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:112:5: error: expected primary-expression before ‘return’
  112 |     return tests;
      |     ^~~~~~
src/tests.cpp:110:6: error: expected ‘;’ before ‘return’
  110 |     }
      |      ^
      |      ;
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:112:5: error: expected primary-expression before ‘return’
  112 |     return tests;
      |     ^~~~~~
src/tests.cpp:110:6: error: expected ‘)’ before ‘return’
  110 |     }
      |      ^
      |      )
  111 | 
  112 |     return tests;
      |     ~~~~~~
src/tests.cpp:70:9: note: to match this ‘(’
   70 |     for (const QStringRef &line : text.splitRef('\n')) {
      |         ^
src/tests.cpp:69:9: warning: unused variable ‘row’ [-Wunused-variable]
   69 |     int row = 1;
      |         ^~~
src/tests.cpp:54:35: warning: unused parameter ‘testSuite’ [-Wunused-parameter]
   54 | Tests Tests::load(const TestSuite testSuite, const QString &path, const QString &testsPath)
      |                   ~~~~~~~~~~~~~~~~^~~~~~~~~
src/tests.cpp:54:82: warning: unused parameter ‘testsPath’ [-Wunused-parameter]
   54 | Tests Tests::load(const TestSuite testSuite, const QString &path, const QString &testsPath)
      |                                                                   ~~~~~~~~~~~~~~~^~~~~~~~~
src/tests.cpp: In static member function ‘static void Tests::resync(const Settings&)’:
src/tests.cpp:199:16: error: ‘QStringRef’ does not name a type; did you mean ‘QStringView’?
  199 |     for (const QStringRef &line : text.splitRef('\n')) {
      |                ^~~~~~~~~~
      |                QStringView
src/tests.cpp:215:6: error: expected ‘;’ before ‘newTests’
  215 |     }
      |      ^
      |      ;
  216 | 
  217 |     newTests.save(settings.resultsPath());
      |     ~~~~~~~~
src/tests.cpp:217:18: error: could not convert ‘newTests.Tests::save(Settings::resultsPath() const())’ from ‘void’ to ‘bool’
  217 |     newTests.save(settings.resultsPath());
      |     ~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
      |                  |
      |                  void
src/tests.cpp:218:1: error: expected primary-expression before ‘}’ token
  218 | }
      | ^
src/tests.cpp:217:43: error: expected ‘)’ before ‘}’ token
  217 |     newTests.save(settings.resultsPath());
      |                                           ^
      |                                           )
  218 | }
      | ~                                          
src/tests.cpp:199:9: note: to match this ‘(’
  199 |     for (const QStringRef &line : text.splitRef('\n')) {
      |         ^
src/tests.cpp:218:1: error: expected primary-expression before ‘}’ token
  218 | }
      | ^
src/tests.cpp: In static member function ‘static Tests Tests::load(TestSuite, const QString&, const QString&)’:
src/tests.cpp:113:1: warning: control reaches end of non-void function [-Wreturn-type]
  113 | }
      | ^
src/tests.cpp: At global scope:
src/tests.cpp:32:16: warning: ‘QString parseTitle(const QString&)’ defined but not used [-Wunused-function]
   32 | static QString parseTitle(const QString &path)
      |                ^~~~~~~~~~
src/tests.cpp:12:18: warning: ‘TestState stateFormStr(const int&)’ defined but not used [-Wunused-function]
   12 | static TestState stateFormStr(const QStringRef &str)
      |                  ^~~~~~~~~~~~
make: *** [Makefile:529: tests.o] Error 1

Device:

Operating System: Fedora 34 (Workstation Edition) 
          Kernel: Linux 5.12.13-300.fc34.x86_64
$ qmake --version
QMake version 3.1
Using Qt version 6.1.1 in /usr/lib64
$ make --version
GNU Make 4.3
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

[vdiff] inkscape does not work on Gnome, but on KDE and Xfce

I don't know why inkscape.x86_64 1.2.2-7.fc38 works on KDE and Xfce, but not on Gnome

Gnome Gnome on Xorg Plasma (Wayland) Plasma(X11) Xfce
Screenshot from 2023-05-21 00-59-05_GNOME Screenshot from 2023-05-21 00-57-46_GNOME on Xorg Screenshot_20230521_005534 Screenshot_20230521_005332_Plasma (X11) Screenshot_2023-05-21_00-52-16_Xfce Session
hostnamectl
     Static hostname: lws84.imws.tuwien.ac.at
           Icon name: computer-laptop
             Chassis: laptop 💻
          Machine ID: 96434f58f7644401a3f9d69da903899d
             Boot ID: 1113ece2f1854fcb992bc27461a9d177
    Operating System: Fedora Linux 38 (Workstation Edition)
         CPE OS Name: cpe:/o:fedoraproject:fedora:38
      OS Support End: Tue 2024-05-14
OS Support Remaining: 11month 2w 6d
              Kernel: Linux 6.2.15-300.fc38.x86_64
        Architecture: x86-64
     Hardware Vendor: Lenovo
      Hardware Model: ThinkPad P15 Gen 1
    Firmware Version: N30ET49W (1.32 )
       Firmware Date: Wed 2022-12-14
lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 38 (Thirty Eight)
Release:	38
Codename:	ThirtyEight

WPT-compatible tests?

This is a fantastic test suite! Have you considered writing future tests that are compatible with WPT reftests (link) and upstreaming them to wpt? WPT tests are bi-directionally synced into Chromium/Webkit/Gecko's repositories, and by sharing tests, we can improve interoperability between implementations.

An example test is svg/text/reftests/no-background.svg and svg/text/reftests/no-background-ref.svg. I have been committing SVG WPT tests in .html format, but wouldn't mind switching to .svg if it would help non-browser implementations.

Tests Validity

How valid are the test results?
The expected result for the file a-font-family-011.svg, for instance, is not valid when you read the file and manually observe the results.

<svg id="svg1" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
    <title>Bold `sans-serif`</title>

    <text id="text1" x="100" y="100" text-anchor="middle"
          font-family="sans-serif" font-weight="bold" font-size="40">Text</text>

    <!-- image frame -->
    <rect id="frame" x="1" y="1" width="198" height="198" fill="none" stroke="black"/>
</svg>

The expected result, a-font-family-011.png, does not seems to be rendered with sans-serif. Am I missing something?
a-font-family-011

[request] add update-button

I would like to make a minimal working example (for reducing work of the developers), therfore I would like to rerender the current file. (Everytime I overwrite the file, or add an upload-bottom.)

Test against Firefox

I try to use Firefox, but it does not work out.

I closed all Firefox-sessions.

I use /usr/lib/firefox/firefox for firefox, see
Screenshot from 2020-03-09 16-34-01

I can open firefox using /usr/lib/firefox/firefox.

I get the information "Invalid Image: /home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff/firefox.png"
Screenshot from 2020-03-09 16-42-15

But this file /home/jkalliau/Documents/GitHub/resvg-test-suite/tools/vdiff/firefox.png does not exist, but however if I copy "screnshot.png" to "firefox.png" and refresh with ctrl & r it shows this image.
Screenshot from 2020-03-09 16-44-12

But if I refresh again with ctrl & r I do not see any image again.

Might it be that the image get rendered at a different place?

update official.csv for librsvg 2.5X

I use librsvg 2.50.3 and the following librsvg-results might be outdated (maybe I have overseen something)

  • render-groups-03-t.svg (crash=>fail)
  • styling-css-02-b.svg (fail => passed)
  • styling-css-08-f.svg (fail => passed)
  • styling-pres-04-f.svg (fail => passed)
  • filters-overview-01-b (fail => passed?)
  • filters-overview-02-b (fail => passed?)
  • filters-overview-03-b (fail => passed?)
  • styling-css-04-f_vdiff

I know it is difficult to keep them up-to-date, so I understand if you do not want to update to each version.

W3C_SVG_11_TestSuite_render-groups-03-t svg

W3C_SVG_11_TestSuite_styling-css-02-b svg

W3C_SVG_11_TestSuite_styling-css-08-f svg

W3C_SVG_11_TestSuite_styling-pres-04-f svg

filters-overview-01-b_vdiff

filters-overview-02-b_vdiff

filters-overview-03-b_vdiff

styling-css-04-f_vdiff


edit:
Update to resvg 0.14

  • conform-viewers-02-f (fail=>pass)
  • text-tref-02-b (fail => crash) returing an error without rendering is imho like crashing
  • filters-composite-04-f (fail =>pass?)
  • struct-image-10-t (fail => pass?)
  • struct-image-13-f (fail => pass?)
  • struct-image-14-f
  • struct-image-15-f



filters-composite-04-f_vdiff
struct-image-10-t_vdiff
struct-image-13-f_vdiff


update chrome:

  • filters-light-01-f_vdiff (fail => passed?)
  • struct-image-13-f (fail => pass?)
  • struct-image-14-f
  • struct-image-15-f

filters-light-01-f_vdiff
struct-image-13-f_vdiff

edit batik

  • struct-image-09-t (crash => pass?)
  • struct-image-13-f (crash => fail)
  • struct-image-14-f
  • struct-image-15-f
  • text-fonts-203-t (fail => pass)

struct-image-09-t_vdiff
grafik
text-fonts-203-t_vdiff


update Inkscape

  • struct-image-13-f (fail => passed)
  • struct-image-14-f
  • struct-image-15-f
  • text-fonts-204-t

grafik
text-fonts-204-t_vdiff


update wxSVG

  • struct-image-13-f (fail => passed)
  • struct-image-14-f
  • struct-image-15-f
  • struct-use-07-b_vdiff

grafik
struct-use-07-b_vdiff

e-radialGradient-044: focal point overlapping should result in no gradient drawn

In the SVG2 spec, there is the following sentence in https://www.w3.org/TR/SVG2/pservers.html#RadialGradientNotes:

If the start circle fully overlaps with the end circle, no gradient is drawn. The area stays untouched (transparent black).

In the e-radialGradient-044.svg test, that condition appears to be met:

<radialGradient id="rg1" fr="0.7">
    <stop offset="0" stop-color="black"/>
    <stop offset="1" stop-color="white"/>
</radialGradient>

The default value of r="0.5", so the start circle radius is 0.7 and the end circle radius is 0.5. Since that fully overlaps, no gradient should be drawn.

Is that correct, or am I missing some wording?

build qtsvgrender

I tried

cd ~/Documents/GitHub/resvg-test-suite/tools/qtsvgrender
g++ main.cpp

and got

main.cpp:1:10: fatal error: QGuiApplication: No such file or directory
 #include <QGuiApplication>
          ^~~~~~~~~~~~~~~~~
compilation terminated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.