42 个重大版本发布
0.43.0 | 2024年8月10日 |
---|---|
0.42.0 | 2024年6月1日 |
0.41.0 | 2024年4月3日 |
0.40.0 | 2024年2月17日 |
0.2.0 | 2018年5月23日 |
#241 在 图像
172,441 每月下载量
用于 315 个crate (96 直接)
585KB
14K SLoC
usvg
usvg
(微SVG) 是一个 SVG 解析器,旨在解决 SVG 的许多复杂性。
SVG 极难解析。 usvg
在 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
,没有事件和动画
许可证
usvg许可协议为MPLv2.0。
依赖
~2.3–3.5MB
~66K SLoC