Skip to content

Helps simplify SVG files. Intended for use as part of a font build.

License

Notifications You must be signed in to change notification settings

googlefonts/picosvg

Repository files navigation

CI Build Status PyPI Dependencies

picosvg

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.svg

Requires Python 3.8 or greater.

Test

Install the dev dependencies specified in extras_require.

pip install -e .[dev]
pytest

If 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.py

If you need to test a certain function (for example: test_topicosvg), please execute:

pytest tests/svg_test.py::test_topicosvg

If you need to display detailed diff information, please execute:

pytest tests/svg_test.py::test_topicosvg --vv

Releasing

See https://googlefonts.github.io/python#make-a-release.

About

Helps simplify SVG files. Intended for use as part of a font build.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages