Commit graph

43 commits

Author SHA1 Message Date
Niels Thykier
f61b4d36d6 Add test case for #203
Signed-off-by: Niels Thykier <niels@thykier.net>
2020-05-17 16:13:45 +02:00
Eduard Braun
651694a6c0 Add unittests for whitespace handling in text node
Also expand/fix the test for line endings
2018-07-03 22:53:05 +02:00
Patrick Storz
8c95d950af
Merge pull request #192 from nthykier/gh-189-order-vs-SVGLength
Work around an exception in removeDefaultAttributeValue() caused by some rarely used filter attributes that allow an optional second value which SVGLength does not handle properly
2018-06-30 19:03:15 +02:00
Patrick Storz
9f4a707bb7
Merge pull request #178 from nthykier/gh-163-path-rewrite
Correct handling of "m0 0" vs. "z" commands
2018-06-29 19:11:53 +02:00
Niels Thykier
8a2892b458 Avoid crashing on stdDeviation attribute
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-04-21 06:39:08 +00:00
Niels Thykier
c504891bd7 test: Use number-optional-number variant of kernelUnitLength
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-04-21 06:19:38 +00:00
Niels Thykier
18e57cddae Avoid crashing on "scale(1)" (short for "scale(1, 1)")
The scale function on the transform attribute has a short form, where
only the first argument is used.  But optimizeTransform would always
assume that there were two when checking for the identity scale.

Closes: #190
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-04-18 05:41:35 +00:00
Niels Thykier
a459d629c1 removeDefaultAttributeValue: Special-case order attribute
Scour tried to handle "order" attribute as a SVGLength.  However, the
"order" attribute *can* consist of two integers according to the
[SVG 1.1 Specification] and SVGLength is not designed to handle that.

With this change, we now pretend that "order" is a string, which side
steps this issue.

[SVG 1.1 Specification]: https://www.w3.org/TR/SVG11/single-page.html#filters-feConvolveMatrixElementOrderAttribute

Closes: #189
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-04-17 19:48:37 +00:00
Eduard Braun
103dcc0a48
Fix handling of boolean flags in elliptical path commands (#183)
* properly parse paths without space after boolean flags (fixes #161)
* omit space after boolean flag to shave off a few bytes when not using renderer workarounds
2018-04-08 15:32:47 +02:00
Niels Thykier
38274f75bc Implement a basic rewrite of redundant commands
This basic implementation can drop and rewrite some cases of "m0 0"
and "z" without triggering the issues experienced in #163.  It works
by analysing the path backwards and tracking "z" and "m" commands.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-03-11 08:33:50 +00:00
Michael Witten
b20a0698cc tests: Add unit tests for preservation of quotes in CSS styles
These tests will ensure that issues #21 and #56 do not return.
2017-09-03 18:07:27 +02:00
Michael Witten
0a146b7fef tests: Add unit tests for the escaping of quote characters in attribute values 2017-09-03 18:07:27 +02:00
Eduard Braun
cc592c8e8a Improve and fix behaviour when collapsing straight paths segments (#146)
* Do not collapse straight path segments in paths that have intermediate markers (see #145). The intermediate nodes might be unnecessary for the shape of the path, but their markers would be lost.
* Collapse subpaths of moveto `m` and lineto `l` commands if they have the same direction (before we only collapsed horizontal/vertical `h`/`v` lineto commands)
* Attempt to collapse lineto `l` commands into a preceding moveto `m` command (these are then called "implicit lineto commands")
* Preserve empty path segments if they have `stroke-linecap` set to `round` or `square`. They render no visible line but a tiny dot or square.
2017-05-18 00:53:25 +02:00
Eduard Braun
98e3040645 Add unittest for --set-c-precision (7cb0d36d72) 2017-02-25 19:44:18 +01:00
Eduard Braun
090884a70f Don't force whitespace for elliptical paths (fixes #89)
This was only required in an early draft of the SVG spec (an error that was corrected later, see [1,2])

[1] https://github.com/scour-project/scour/issues/89#issuecomment-244216600
[2] https://github.com/scour-project/scour/issues/89#issuecomment-244337118
2017-02-25 19:44:18 +01:00
Eduard Braun
0ffefcd8bb Unittests for --enable-viewboxing 2017-02-19 16:10:01 +01:00
Eduard Braun
3e4c8d793f Typo in unittest svg file 2017-02-19 15:19:53 +01:00
Eduard Braun
f5a61eeeb3 Even better fix for 8f87118725
(previous solution still did not work for numbers like 123.4 with precision < 3)
2017-02-19 00:57:00 +01:00
Eduard Braun
a69efb3a55 Add unittests for b00b374e64 and 8f87118725 2017-02-18 19:36:19 +01:00
Eduard Braun
de1441fd58 Exclude (system specific) absolute paths from test file and add a unittest that creates/tests absolute paths on-the-fly 2016-09-23 23:16:19 +02:00
Eduard Braun
902e112a96 Add unittests for embedding rasters (and --disable-embed-rasters) 2016-09-23 23:14:56 +02:00
Eduard Braun
8d20805976 Add three images (for usage with a future unittest) 2016-09-18 22:41:24 +02:00
Eduard Braun
45a2869a17 Add unittests for --protect-ids-_ options 2016-09-18 18:29:13 +02:00
Eduard Braun
829b630d64 Add unittests which emulate calling the scour module from command line 2016-09-18 17:13:00 +02:00
Eduard Braun
47cfb9aa0e Add unittest for --strip-xml-space 2016-09-18 17:13:00 +02:00
Eduard Braun
9629e87f37 Throw some line breaks in there... 2016-09-11 14:03:31 +02:00
Eduard Braun
082b579410 We don't want spaces in the serialized value of style attributes.
Add a unittest that should catch this and other issues with parsing/serializing the `style` attribute
2016-09-11 14:01:04 +02:00
Eduard Braun
10e687b887 Add unittests for 1cde426009 and 641d2db08a392e4a7df20c700e1accb9cd8d1341 2016-09-11 00:16:17 +02:00
Eduard Braun
1aa5722c6a Fix conversion of cubic Bézier "curveto" commands into "shorthand/smooth curveto" commands. (#110)
When the preceeding path segment is a Bézier curve, too, the first control point of the shorthand defaults to the mirrored version of the second control point of this preceeding path segment. Scour always assumed (0,0) as the control point in this case which could result in modified path data (e.g. #91).
2016-09-06 01:43:36 +02:00
Eduard Braun
ec855211de Fix replacement of duplicate gradients if "fill/stroke" contains fallbacks (#109)
(fixes #79)
2016-09-05 22:44:55 +02:00
Eduard Braun
0c63344ea4 Add a check to prevent we make path data longer by "optimization" 2016-08-31 07:06:42 +02:00
Eduard Braun
21e6c7491b Fix a unittest that failed due to the increased accuracy of paths after 29e005bf7b 2016-08-31 06:32:05 +02:00
Eitot
aa48c90d56 Add options to remove descriptive elements (#102)
* --remove-titles (removes <title>)
* --remove-descriptions (removes <desc>)
* --remove-descriptive-elements (removes <title>, <desc> and <metadata>)
2016-08-29 21:05:12 +02:00
Eduard Braun
842123a393 Fix improper comparison of numeric default attribute values with textvalues resulting in wrongly removed attributes (#101)
For example for `orient="auto"` SVGLength() returns (value=0, units=Unit.INVALID); since the default value for `orient` is zero it was removed as there was check for a valid unit.
2016-08-29 06:37:28 +02:00
Eduard Braun
5844076258 Only attempt to group elements that the content model allows to be children of a <g> when --create-groups is specified. (#98)
(before it could happen that e.g. `tspan` elements were grouped, which is invalid; fixes issues #96 and #97)
2016-08-29 02:33:13 +02:00
Eduard Braun
cbda5dcd86 Add unittests for #66 2016-08-26 23:45:44 +02:00
Eduard Braun
386d5d8656 Allow elements to be found via Document.getElementById() in the minidom document returned by scourXmlFile() (#68) 2016-08-25 21:13:09 +02:00
Eduard Braun
fe2884c3e8 Don't remove unreferenced defs if --keep-unreferenced-defs is specified (#62)
* Don't remove unreferenced defs if `--keep-unreferenced-defs` is specified
(fixes #18)

* Add unittests for previous commit
2016-08-14 18:52:55 +02:00
Tobias Oberstein
b14e801cb7 add option to check and warn or bail out on flowtext 2016-04-02 16:49:10 +02:00
Eduard Braun
946ca3ce4a Unittests: Add a test for proper decoding of ISO 8859-15 2015-12-09 21:32:18 +01:00
Eduard Braun
4eade69201 Open input file in binary mode an let XML parser deal with encoding.
Fixes #26
2015-12-08 23:38:06 +01:00
Eduard Braun
32e7e5517f Unittests: Account for b979fe19e5 (fix one test and add two more)
- Unused XML namespace declarations *are supposed* to be removed
- XML namespace declarations that are used as prefix for elements/attributes *must not* be removed
2015-12-07 00:33:08 +01:00
Eduard Braun
3b7e8a0091 Restore unittests from history 2015-12-06 19:59:06 +01:00