Tool to simplify SVGs. Converts an input svg into a "pico" svg:
- Exactly 1
<defs>element, first child of root - Only gradients defined under
<defs> - After the initial
<defs>, only<g>and<path><g>is eliminated when possible, but may be retained for opacity
- Only absolute coordinates
- Only commands that specify full coordinates, no shorthand (H, S, etc)
Clip paths and strokes are rendered into equivalent paths using Skia via skia-pathops, <use> references are materialized, etc.
Some SVG features are not supported, of particular note:
<filter><mask>
Usage:
pip install -e .
picosvg mysvg.svgRequires Python 3.8 or greater.
Install the dev dependencies specified in extras_require.
pip install -e .[dev]
pytestIf you use zsh, it will prompt an error(zsh: no matches found: .[dev]). Please use the following command:
pip install -e '.[dev]'You can also use pytest to test the specified files individually.
pytest tests/svg_test.pyIf you need to test a certain function (for example: test_topicosvg), please execute:
pytest tests/svg_test.py::test_topicosvgIf you need to display detailed diff information, please execute:
pytest tests/svg_test.py::test_topicosvg --vv