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
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拥有的代码。