Scour - An SVG Optimizer / Cleaner
Find a file
Niels Thykier 5dc1b7a820 scour: Make optimized default_attribute data structures
There are a lot of "DefaultAttribute"s and for a given tag, most of
the "DefaultAttribute"s are not applicable.  Therefore, we create two
data structures to assist us with only dealing with the attributes
that matter.

Here there are two cases:

 * Those that always matter.  These go into
   default_attributes_unrestricted list.
 * Those that matter only based on the node name.  These go into the
   default_attributes_restricted_by_tag with the node name as key
   (with the value being a list of matching attributes).

In the next commit, we will use those for optimizing the removal of
default attributes.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-04-15 18:29:58 +02:00
scour scour: Make optimized default_attribute data structures 2018-04-15 18:29:58 +02:00
unittests Fix handling of boolean flags in elliptical path commands (#183) 2018-04-08 15:32:47 +02:00
.gitignore initial source import (v0.26) and packaging 2013-10-22 16:31:42 +02:00
.travis.yml Add sudo: false to .travis.yml for faster execution of jobs 2017-02-19 18:06:57 +01:00
CONTRIBUTING.md Add CONTRIBUTING.md with some (hopefully) useful pointers 2016-09-18 22:36:21 +02:00
HISTORY.md Fix typo in HISTORY.md 2018-03-10 13:36:49 +01:00
LICENSE initial source import (v0.26) and packaging 2013-10-22 16:31:42 +02:00
Makefile Update Makefile 2016-09-17 17:09:35 +02:00
README.md Update project description and use in both, README.md and setup.py 2017-08-06 04:38:33 +02:00
scour.sublime-project initial source import (v0.26) and packaging 2013-10-22 16:31:42 +02:00
setup.py make flake8 happier 2017-08-06 04:55:43 +02:00
testcss.py Some whitespace fixes to make newer versions of flake8 happy 2016-11-27 18:52:39 +01:00
testscour.py Fix handling of boolean flags in elliptical path commands (#183) 2018-04-08 15:32:47 +02:00
tox.ini Add Python 3.6 to tests and simplify .travis.yml by using 'tox-travis' 2017-02-19 18:04:36 +01:00

Scour

PyPI Build status Codecov


Scour is an SVG optimizer/cleaner that reduces the size of scalable vector graphics by optimizing structure and removing unnecessary data written in Python.

It can be used to create streamlined vector graphics suitable for web deployment, publishing/sharing or further processing.

The goal of Scour is to output a file that renderes identically at a fraction of the size by removing a lot of redundant information created by most SVG editors. Optimization options are typically lossless but can be tweaked for more agressive cleaning.

Scour is open-source and licensed under Apache License 2.0.

Scour was originally developed by Jeff "codedread" Schiller and Louis Simard in in 2010. The project moved to GitLab in 2013 an is now maintained by Tobias "oberstet" Oberstein and Eduard "Ede_123" Braun.

Installation

Scour requires Python 2.7 or 3.3+. Further, for installation, pip should be used.

To install the latest release of Scour from PyPI:

pip install scour

To install the latest trunk version (which might be broken!) from GitHub:

pip install https://github.com/codedread/scour/archive/master.zip

Usage

Standard:

scour -i input.svg -o output.svg

Better (for older versions of Internet Explorer):

scour -i input.svg -o output.svg --enable-viewboxing

Maximum scrubbing:

scour -i input.svg -o output.svg --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none

Maximum scrubbing and a compressed SVGZ file:

scour -i input.svg -o output.svgz --enable-viewboxing --enable-id-stripping \
  --enable-comment-stripping --shorten-ids --indent=none