43 breaking releases
0.44.0 | Sep 28, 2024 |
---|---|
0.42.0 | Jun 1, 2024 |
0.40.0 | Feb 17, 2024 |
0.37.0 | Dec 16, 2023 |
0.2.0 | May 23, 2018 |
#230 in Images
220,835 downloads per month
Used in 355 crates
(99 directly)
590KB
14K
SLoC
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
rect
andcircle
) 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
use
will be resolved and replaced with the reference content- Nested
svg
will 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
#elem
andurl(#elem)
) will be resolved switch
will 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
objectBoundingBox
will 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.
Dependencies
~2.2–3MB
~65K SLoC