#svg-icons #vector-graphics #gnome #cairo #2d-graphics #render #image

librsvg

一个将SVG图像渲染到Cairo表面的库。GNOME使用此库来渲染SVG图标。在GNOME之外,其他桌面环境也用于类似的目的。维基媒体使用它来渲染Wikipedia的SVG图表。

19个版本 (10个稳定版)

2.59.0-beta.32024年8月2日
2.59.0-beta.22024年7月13日
2.59.0-beta.12024年4月27日
2.58.3 2024年8月16日
2.56.0 2023年7月21日

#57 in 图像

Download history 433/week @ 2024-04-29 250/week @ 2024-05-06 260/week @ 2024-05-13 545/week @ 2024-05-20 300/week @ 2024-05-27 210/week @ 2024-06-03 377/week @ 2024-06-10 285/week @ 2024-06-17 122/week @ 2024-06-24 86/week @ 2024-07-01 263/week @ 2024-07-08 117/week @ 2024-07-15 196/week @ 2024-07-22 301/week @ 2024-07-29 147/week @ 2024-08-05 234/week @ 2024-08-12

每月880次下载
用于 2 crate

LGPL-2.1-or-later

1.5MB
28K SLoC

Librsvg

这是librsvg - 一个用于渲染可缩放矢量图形(SVG),与GNOME项目相关的小型库。它将SVG文件渲染到Cairo表面。Cairo是GNOME用于在屏幕上绘制事物或生成打印输出的2D、抗锯齿绘制库。

你想用最少的API将非动画SVG渲染到Cairo表面吗?Librsvg可能适合你。

支持的SVG/CSS功能:请参阅开发指南中支持的功能章节。

这是Rust crate的README.md文件;您可能想查看整个项目的主README.md

使用librsvg

非Rust依赖项

Librsvg依赖于许多非Rust库,必须在您的系统上安装。它们需要安装pkg-config .pc文件,以便librsvg的编译可以通过system-deps找到它们。

  • Cairo - 用于主要渲染
  • FreeType2 - 字体渲染器
  • gdk-pixbuf - 图像解码器
  • gio/glib - I/O原语和流
  • Harfbuzz - 文本形状
  • libxml2 - XML解析器
  • Pangocairo - 文本渲染
  • PangoFT2 - 通过Pango和FreeType2渲染文本
  • Fontconfig - 系统字体及其使用规则

这些非Rust库存在一些安全考虑,您可能想阅读一下。

错误跟踪:如果您发现了错误,请查看我们的错误跟踪器。请在开发指南中的"报告错误"页面查看如何提供良好的错误报告。

提问:您可以在GNOME的Discourse的"平台"分类中自由提问关于使用librsvg的问题。您也可以通过GNOME Rust的Matrix聊天室提问。

安全:有关存在安全问题的发布列表、报告安全相关错误的说明以及librsvg依赖项的安全考虑,请参阅开发指南中的安全章节

为librsvg的开发做出贡献

librsvg的贡献者有一套行为准则;请参阅GNOME行为准则

请参阅librsvg开发指南,了解如何为librsvg做出贡献,如何报告错误,如何设置开发环境,以及librsvg架构的描述。

librsvg的目标

librsvg旨在成为渲染SVG1.1和SVG2图像的低内存占用库。它主要用于GNOME项目,以渲染出现在桌面上的SVG图标和矢量图像。它也用于维基百科,以渲染出现在其中的SVG图像,这样即使是旧的网页浏览器也可以显示它们。许多只需要渲染静态SVG图像的项目都使用librsvg。

我们旨在成为一个"为我渲染这个SVG,快速,并且API最小化"的库。

将根据具体情况考虑功能添加。

您可以在开发指南中了解librsvg支持的SVG和CSS功能

librsvg的非目标

我们不旨在

  • 实现规范中每个SVG功能的实现。

  • 实现脚本或外部访问SVG的DOM。

  • 实现基于CSS的动画支持(但如果您能想出一个好的API来做这件事,我们会很高兴知道!)

  • 取代现代网页浏览器中的工业级SVG渲染机制。

当然,欢迎贡献。特别是,如果您找到了实现上述功能的同时仍然维护librsvg现有API的好方法,我们将非常乐意了解!

谁使用librsvg?

librsvg是GNOME平台的一部分。在GNOME内部,librsvg扮演多个角色

  • 从通用的gdk-pixbuf加载器基础设施加载SVG,因此任何使用gdk-pixbuf的应用程序都可以像加载位图图像一样加载SVG。

  • 加载桌面上的SVG图标。

  • 为文件管理器创建SVG缩略图。

  • 在GNOME的默认图像查看器Eye of Gnome中加载SVG。

在GNOME核心之外

  • GNOME游戏(国际象棋、五子棋等,用于绘制游戏棋子)

  • GIMP

  • GCompris

  • Claws-mail

  • Darktable

  • Mate-panel

  • Evas/Enlightenment

  • Emacs

  • ImageMagick

  • 维基百科,以将SVG渲染为旧浏览器的位图图像。特别感谢维基媒体为提供优秀的错误报告。

关于librsvg的演讲

"用Rust替换C库代码:我从librsvg中学到了什么"是在2017年GUADEC会议上提出的。它简要介绍了librsvg的历史,以及为什么需要将其从C迁移到Rust。

"将C代码重构为Rust的模式:以librsvg为例"是在2018年GUADEC会议上提出的。它描述了librsvg的C代码是如何重构的,以便将其迁移到Rust。

维护者

librsvg的维护者是Federico Mena Quintero。如果您对librsvg有任何疑问,无论是其使用还是其开发,都可以随时联系我。您可以通过以下方式联系我

  • 发送邮件[email protected]

  • Matrix:我是GNOME Hackers和gnome.org的Matrix上的Rust ❤️ GNOME频道上的@federico。我大多数工作日(周一至周五)都在那里,大约从UTC 14:00开始(这是我当地时间08:00;我在UTC-6时区)。如果这不是您方便的时间,您可以随时发送邮件,我们可以安排一个时间。

  • 我经常撰写关于librsvg的博客。您可能会对2016年至2020年间关于将librsvg从C迁移到Rust的文章感兴趣。

依赖关系

~25–38MB
~746K SLoC