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图像

Download history 29192/week @ 2024-05-03 29072/week @ 2024-05-10 28247/week @ 2024-05-17 29416/week @ 2024-05-24 28684/week @ 2024-05-31 37426/week @ 2024-06-07 44152/week @ 2024-06-14 45002/week @ 2024-06-21 44819/week @ 2024-06-28 41342/week @ 2024-07-05 44963/week @ 2024-07-12 43377/week @ 2024-07-19 40536/week @ 2024-07-26 39213/week @ 2024-08-02 43431/week @ 2024-08-09 42144/week @ 2024-08-16

172,441 每月下载量
用于 315 个crate (96 直接)

MPL-2.0 许可证

585KB
14K SLoC

usvg

Crates.io Documentation Rust 1.65+

usvg (微SVG) 是一个 SVG 解析器,旨在解决 SVG 的许多复杂性。

SVG 极难解析。 usvg 在 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,没有事件和动画

许可证

usvg许可协议为MPLv2.0

依赖

~2.3–3.5MB
~66K SLoC