一个小型 Skia 子集移植到 Rust
tiny-skia 是一个小型的 [Skia] 子集,移植到 Rust 中。目标是为 Rust 生态系统提供一个绝对最小的、仅依赖 CPU 的 2D 渲染库,重点是渲染质量、速度和二进制大小。虽然 tiny-skia 非常小,但它支持所有常见的 2D 操作,例如:用固体颜色、渐变或图案填充和绘制形状;绘制虚线;裁剪;图像混合;PNG 加载/保存。主要缺失的功能是文本渲染(请参阅 #1)。
注意: 这不是 Skia 的替代方案,也永远不会是。这更像是一个研究项目。
这套库的主要动机是要有一个小巧、高质量的 2D 渲染库,可以用于 [resvg]。而选择范围却非常有限。基本上,你只能选择 [cairo],Qt 和 Skia。而它们都相对臃肿、难以编译和分发。更不用说,它们都不是用 Rust 编写的。
但是,如果我们忽略这些问题,只关注质量和速度,Skia 无疑是最好的一个。然而,Skia 的主要问题是它非常庞大。真的非常庞大。它支持 CPU 和 GPU 渲染,多种输入和输出格式(包括 SVG 和 PDF),各种滤镜,色彩空间,色彩类型和文本渲染。它包含 370 KLOC(不含依赖)的代码(含依赖约为 7 MLOC),需要大约 4-8 GiB 的磁盘空间才能从源代码构建。而最终的二进制文件大小为 3-8 MiB,取决于启用的功能。更不用说它需要 clang 而不需要其他编译器,并且使用了一种晦涩的构建系统(gn) ,直到最近还在使用 Python2。
tiny-skia 试图保持小巧、简单且易于构建。目前,它的代码量约为 14 KLOC,在现代 CPU 上编译时间不到 5 秒,并为二进制文件增加约 200 KiB。
暂无开放 Issues,或尚未同步最近议题。