#true-type #font #data-points

font-rs

纯Rust(大部分)编写的字体渲染器

4个版本

使用旧的Rust 2015

0.1.3 2018年7月9日
0.1.2 2018年6月13日
0.1.1 2018年6月13日
0.1.0 2018年1月26日

#69数据格式


用于 mono_display

Apache-2.0

95KB
1K SLoC

font-rs

这是一个主要使用纯Rust编写的字体渲染器。有一个可选的SIMD模块用于累积和,目前是用C SSE3内省编写的。

代码当前状态相当粗糙。代码组织不佳,基本上还未准备好投入生产。然而,它运行得足够好,可以进行基准测试,并且这些基准测试表明与Freetype和freetype-go(Freetype到Go的松散移植)相比具有非常令人鼓舞的性能。

光栅化器的设计基本上与libart非常相似,不同之处在于矢量直接绘制到缓冲区,而不是排序并存储在中间形式中,并且光栅化缓冲区是一个密集数组而不是稀疏数据结构。后者主要的动机是避免分支预测错误并更好地利用数据并行性,这两种都是自libart最初编写以来有效的优化趋势。

值得将其算法与Anti-Grain Geometry中的算法进行比较。原始的libart算法也是Freetype当前抗锯齿渲染器的灵感来源。所有这些渲染器共享许多共同的功能,特别是精确子像素区域的计算以及确定环绕数(并转换为像素值)的积分步骤,但在表示矢量和缓冲区的数据结构等细节上有所不同。

TrueType字形数据的解析采用拉取解析器风格,作为底层数据的迭代器。这种技术基本上避免了为表示点和二次贝塞尔曲线分配任何内存。

作者

主要作者是Raph Levien。

贡献

我们很高兴通过GitHub拉取请求接受贡献,只要作者已经签署了Google贡献者许可。有关更多详细信息,请参阅CONTRIBUTIONS.md。

免责声明

这不是一个官方的Google产品(实验性的或其他),这只是Google拥有的代码。

无运行时依赖