16 个不稳定版本 (7 个破坏性更新)
1.1.1 |
|
---|---|
0.42.2 | 2024年5月13日 |
0.30.0 | 2024年3月22日 |
0.28.5 | 2023年10月2日 |
0.26.0 | 2022年11月20日 |
#212 in 图像
每月下载量 159
在 7 个 crate 中使用 (5 个直接使用)
575KB
14K SLoC
usvgr
usvgr
(微型 SVG) 是一个 SVG 解析器,旨在解决 SVG 的大部分复杂性。
SVG 解析一直很困难。 usvgr
在 XML 库和潜在的 SVG 渲染库之间提供了一个层。它将输入 SVG 解析为强类型树结构,其中所有元素、属性、引用以及其他 SVG 功能都已解决并以最简单的方式呈现。因此,调用者不必担心与 SVG 解析相关的大部分问题,只需关注渲染部分即可。
功能
- 所有支持的属性都已解析。无需担心可继承、隐式和默认属性
- CSS 将被应用
- 仅简单路径
- 基本形状(如
rect
和circle
)将转换为路径 - 路径仅包含绝对 MoveTo、LineTo、QuadTo、CurveTo 和 ClosePath 段。ArcTo、隐式和相对段将被转换
- 基本形状(如
use
将被解析并替换为引用内容- 嵌套
svg
将被解析 - 无效、格式不正确的元素将被删除
- 相对长度单位(mm、em 等)将转换为像素/点
- 外部图像将被加载
- 内部、base64 图像将被解码
- 所有引用(如
#elem
和url(#elem)
)将被解析 switch
将被解析- 文本元素,这可能是SVG中最困难的部分,将得到完全解决。这包括所有属性的解析、空格预处理(
xml:space
)、文本块和跨度解析 - 标记将被转换为常规元素。无需手动放置
- 所有过滤器都受到支持。包括过滤器函数,如
filter="contrast(50%)"
- 递归元素将被检测并删除
objectBoundingBox
将被替换为userSpaceOnUse
限制
- 不受支持的SVG功能将被忽略
- CSS支持有限
- 仅支持静态 SVG功能,例如没有
a
、view
、cursor
、script
,没有事件和没有动画
许可
usvgr根据MPLv2.0许可。
依赖关系
~3.5–5MB
~90K SLoC