usvg
usvg (micro SVG) is an SVG parser that tries to solve most of SVG complexity.
SVG is notoriously hard to parse. usvg presents a layer between an XML library and
a potential SVG rendering library. It will parse an input SVG into a strongly-typed tree structure
were all the elements, attributes, references and other SVG features are already resolved
and presented in the simplest way possible.
So a caller doesn't have to worry about most of the issues related to SVG parsing
and can focus just on the rendering part.
Features
- All supported attributes are resolved. No need to worry about inheritable, implicit and default attributes
- CSS will be applied
- Only simple paths
- Basic shapes (like
rectandcircle) will be converted into paths - Paths contain only absolute MoveTo, LineTo, QuadTo, CurveTo and ClosePath segments. ArcTo, implicit and relative segments will be converted
- Basic shapes (like
usewill be resolved and replaced with the reference content- Nested
svgwill be resolved - Invalid, malformed elements will be removed
- Relative length units (mm, em, etc.) will be converted into pixels/points
- External images will be loaded
- Internal, base64 images will be decoded
- All references (like
#elemandurl(#elem)) will be resolved switchwill be resolved- Text elements, which are probably the hardest part of SVG, will be completely resolved.
This includes all the attributes resolving, whitespaces preprocessing (
xml:space), text chunks and spans resolving - Markers will be converted into regular elements. No need to place them manually
- All filters are supported. Including filter functions, like
filter="contrast(50%)" - Recursive elements will be detected and removed
objectBoundingBoxwill be replaced withuserSpaceOnUse
Limitations
- Unsupported SVG features will be ignored
- CSS support is minimal
- Only static SVG features,
e.g. no
a,view,cursor,script, no events and no animations
License
usvg is licensed under the MPLv2.0.