19个版本 (10个稳定版)
2.59.0-beta.3 | 2024年8月2日 |
---|---|
2.59.0-beta.2 | 2024年7月13日 |
2.59.0-beta.1 | 2024年4月27日 |
2.58.3 | 2024年8月16日 |
2.56.0 | 2023年7月21日 |
#57 in 图像
每月880次下载
用于 2 crate
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有任何疑问,无论是其使用还是其开发,都可以随时联系我。您可以通过以下方式联系我
-
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