16 个不稳定版本 (7 个破坏性更新)

1.1.1 2024年3月21日
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 图像

Download history 126/week @ 2024-05-06 145/week @ 2024-05-13 20/week @ 2024-05-20 19/week @ 2024-05-27 10/week @ 2024-06-03 12/week @ 2024-06-10 3/week @ 2024-06-17 5/week @ 2024-06-24 18/week @ 2024-07-01 3/week @ 2024-07-08 17/week @ 2024-07-15 138/week @ 2024-07-29 4/week @ 2024-08-05

每月下载量 159
7 个 crate 中使用 (5 个直接使用)

MPL-2.0 许可证

575KB
14K SLoC

usvgr

Crates.io Documentation Rust 1.65+

usvgr (微型 SVG) 是一个 SVG 解析器,旨在解决 SVG 的大部分复杂性。

SVG 解析一直很困难。 usvgr 在 XML 库和潜在的 SVG 渲染库之间提供了一个层。它将输入 SVG 解析为强类型树结构,其中所有元素、属性、引用以及其他 SVG 功能都已解决并以最简单的方式呈现。因此,调用者不必担心与 SVG 解析相关的大部分问题,只需关注渲染部分即可。

功能

  • 所有支持的属性都已解析。无需担心可继承、隐式和默认属性
  • CSS 将被应用
  • 仅简单路径
    • 基本形状(如 rectcircle)将转换为路径
    • 路径仅包含绝对 MoveToLineToQuadToCurveToClosePath 段。ArcTo、隐式和相对段将被转换
  • use 将被解析并替换为引用内容
  • 嵌套 svg 将被解析
  • 无效、格式不正确的元素将被删除
  • 相对长度单位(mm、em 等)将转换为像素/点
  • 外部图像将被加载
  • 内部、base64 图像将被解码
  • 所有引用(如 #elemurl(#elem))将被解析
  • switch 将被解析
  • 文本元素,这可能是SVG中最困难的部分,将得到完全解决。这包括所有属性的解析、空格预处理(xml:space)、文本块和跨度解析
  • 标记将被转换为常规元素。无需手动放置
  • 所有过滤器都受到支持。包括过滤器函数,如filter="contrast(50%)"
  • 递归元素将被检测并删除
  • objectBoundingBox将被替换为userSpaceOnUse

限制

  • 不受支持的SVG功能将被忽略
  • CSS支持有限
  • 仅支持静态 SVG功能,例如没有aviewcursorscript,没有事件和没有动画

许可

usvgr根据MPLv2.0许可。

依赖关系

~3.5–5MB
~90K SLoC