#true-type #opentype #font-rendering #font #text-rendering #otf

不再维护 无std rusttype

FreeType等库的纯Rust替代品。RustType提供了一个用于加载、查询和光栅化TrueType字体的API。它还提供了一个用于硬件字体渲染的动态GPU字形缓存的实现。

38个版本

0.9.3 2022年11月2日
0.9.2 2020年5月23日
0.9.1 2020年4月25日
0.8.2 2019年11月23日
0.2.0 2016年3月19日

#630 in 图形API

Download history 37044/week @ 2024-03-14 29883/week @ 2024-03-21 61764/week @ 2024-03-28 28978/week @ 2024-04-04 32767/week @ 2024-04-11 32570/week @ 2024-04-18 30545/week @ 2024-04-25 26048/week @ 2024-05-02 25668/week @ 2024-05-09 41053/week @ 2024-05-16 40649/week @ 2024-05-23 28980/week @ 2024-05-30 40016/week @ 2024-06-06 28856/week @ 2024-06-13 28980/week @ 2024-06-20 29266/week @ 2024-06-27

132,100 每月下载量
用于 699 个crate(178直接)

MIT/Apache

92KB
1.5K SLoC

RustType

crates.io docs.rs

RustType是FreeType等库的纯Rust替代品。

当前RustType的功能

  • 读取OpenType格式的字体和字体集合。这包括*.ttf以及*.otf字体文件。
  • 检索字体及其字形的形状和常用属性。
  • 使用水平和垂直度量以及字形对特定间距进行水平布局。
  • 使用精确的解析算法(不基于采样)进行具有亚像素定位的字形光栅化。
  • 使用gpu_cache模块在GPU上管理字体缓存。这将在GPU内存中的动态缓存中保留最近使用的字形渲染,以最小化每帧的纹理上传。它还允许您将文本的绘制调用次数保持在非常低,因为所有字形都保留在一个GPU纹理中。

RustType目前不支持以下功能

  • 字体提示。
  • 任何类型的连字符。
  • 一些不太常见的TrueType子格式。
  • 从右到左和垂直文本布局。

测试和示例

更重的示例、测试和基准测试在./dev目录中。这避免了dev-dependency功能泄露。

使用cargo test --all --all-features运行所有测试。

使用 cargo run --example <名称> -p dev 运行示例。

入门指南

要快速开始使用 RustType,请查看随 crate 一起提供的 dev/examples/ascii.rs。它演示了加载字体文件、将任意字符串进行光栅化,并将结果显示为 ASCII 艺术品。如果您只想查看文档,加载字体的入口点是 Font,从这里您可以访问单个字体,然后是它们的字形。

未来计划

项目的初始动机是为游戏提供易于使用的字体渲染。RustType 有许多改进的途径。想法

  • 支持一些常见的连字符形式。
  • 并且,最终,支持嵌入的从右到左的 Unicode 文本。

如果您认为您可以帮助实现这些目标中的任何一个,请随时为讨论它们打开一个跟踪问题。

最低支持的 rust 编译器

此 crate 使用 最新稳定的 rust

许可证

根据您的选择,许可为以下之一

贡献

除非您明确声明,否则您根据 Apache-2.0 许可证定义的任何旨在包含在作品中的有意贡献,应按上述方式双重许可,不附加任何额外条款或条件。

另请参阅

  • glyph_brush - 可以缓存顶点生成并提供更复杂的布局。

依赖关系

~1MB
~22K SLoC