#2d-graphics #graphics #cairo #2d #piet #back-end

piet-cairo

Cairo后端为piet 2D图形抽象

28个版本

0.6.2 2023年1月30日
0.6.0 2022年11月24日
0.5.0 2021年11月12日
0.4.0 2021年3月28日
0.0.2 2019年2月22日

#615 in 图形API

Download history 1135/week @ 2024-03-13 1584/week @ 2024-03-20 1557/week @ 2024-03-27 1512/week @ 2024-04-03 1335/week @ 2024-04-10 1492/week @ 2024-04-17 1359/week @ 2024-04-24 1206/week @ 2024-05-01 1310/week @ 2024-05-08 1372/week @ 2024-05-15 1440/week @ 2024-05-22 1399/week @ 2024-05-29 1116/week @ 2024-06-05 1019/week @ 2024-06-12 1324/week @ 2024-06-19 1199/week @ 2024-06-26

4,846 monthly downloads
60 包使用(其中2个直接使用)

MIT/Apache

370KB
4K SLoC

piet-cairo: piet的后端Cairo

这是piet图形API的Cairo后端。

玩具文本API

为了简单起见,后端目前使用Cairo中的玩具文本API。这基本上意味着没有形状,因此复杂的脚本将无法正确渲染,拉丁文将缺少字距调整、连字和其他细微差别。根据文档,“任何严肃的应用都应该避免使用它们”。

不久的将来,我希望能够实现某种类型的高级文本。一个可能的选择是pango。据我所知,这应该在Linux上运行良好,但由于它有一个非可选的glib依赖,可能需要相当多的工作才能使其便携式构建。同时,也不清楚这种方法在系统字体发现方面的表现如何。

另一个可能的选择是更直接地使用HarfBuzz,通过rust-harfbuzz绑定。这将需要对字体发现和选择进行更多的工作,但有可能更加原生。系统字体发现的良好Rust原生候选者是font-kit

第三个可能的选择是改编Flutter中的libTXT。这是一个先进的文本布局库,在使其在移动设备上良好运行方面投入了大量资金。然而,它是用C++编写的,因此至少需要非平凡的工作来创建良好的Rust绑定。

文本形状的需求将是许多不支持系统文本服务的底层渲染器的共同需求,而不仅仅是Cairo。

在非Linux上构建

开罗(Cairo)库非常便携,在其他系统上构建它也是可行的。然而,cairo-rs 包似乎期望提供一个库,而不是从源码构建。

在Windows上,我一直在使用来自cairo-windows的预构建二进制发布版本。

在macOS的Homebrew上,以下命令应该可以工作

brew install cairo

在OpenBSD上,可以从官方软件包安装库

pkg_add cairo

在FreeBSD上,可以使用pkg安装库

pkg install cairo

在NetBSD上,可以使用以下方式安装库

pkgin install cairo

如往常一样提供了一个pkg-config文件,cairo-rs将按预期构建。

待办事项:更友好的安装说明(欢迎贡献)

依赖关系

~12MB
~259K SLoC