Shell script to convert strokes in an SVG to paths using Inkscape's CLI.
I needed a tool that converts strokes into paths for a font automation tool. Long story short, FontForge really does not like strokes.
The svg-stroke-to-path
script makes batch-processing hundreds of SVG files easier, and also adds the ability to select specific objects using CSS selectors.
svg-stroke-to-path
uses Inkscape's command-line-interface (CLI).
Behind the scenes, it is running the following command, just with added functionality.
inkscape \
--actions="select-all:all;object-stroke-to-path" \
--export-filename="myFile.svg" \
myFile.svg
Inkscape 1.2 or newer.
Note: The script has only been tested on Inkscape versions:
- Inkscape 1.3 (0e150ed, 2023-07-21)
For older versions of Inkscape, specifically older than 1.2, checkout the code from an older version of svg-stroke-to-path
.
After git cloning this repository, the script can be run locally from the directory by running:
./svg-stroke-to-path ...
To run it from anywhere, run the following command to install the script into /usr/lib/bin
:
make install
svg-stroke-to-path ...
$ svg-stroke-to-path -h
Usage: svg-stroke-to-path select_attr file ...
select_attr can be
* 'all' to select all elements
or, it can be a variety of CSS selectors, for example:
* 'path' to select only <path> objects
* 'rect,circle' to select both <rect> and <circle> elements
* '[stroke="#000000"]' to select elements with specific attributes
* 'path[stroke="#000000"]' to select only paths with specific attributes
* '[stroke="#000000"][stroke-weight="0.5"]' to select multiple attributes
Note: On macOS, running this command will launch Inkscape in the Dock for a split second. This is the default behavior Inkscape's CLI.
# To convert all strokes to paths in a single file
svg-stroke-to-path all myFile.svg
# To convert all black strokes to paths in all SVG files in a directory
svg-stroke-to-path '[stroke="#000000"]' *.svg