1个不稳定版本
使用旧的Rust 2015
0.2.1 | 2017年7月19日 |
---|
#310 in 缓存
205KB
4K SLoC
RustType
RustType是FreeType等库的纯Rust替代方案。
RustType当前的功能
- 读取TrueType格式的字体和字体集合。这包括
*.ttf
以及*.otf
字体文件的一个子集。 - 检索字体及其字形的字形形状和常用属性。
- 使用水平和垂直度量以及字形对特定间距进行字形横向布局。
- 使用精确的分析算法(不基于采样)进行亚像素定位的字形光栅化。
- 使用
gpu_cache
模块管理GPU上的字体缓存。这将在GPU内存中保留最近使用的字形渲染结果,以最小化每帧的纹理上传。它还允许您将文本的绘制调用计数保持在非常低的水平,因为所有字形都保留在一个GPU纹理中。
RustType目前不支持的事项
- 除了TrueType字体之外,OpenType格式的字体(OpenType是TrueType的超集)。值得注意的是,目前还没有支持用于字形的立方贝塞尔曲线。
- 字体提示。
- 任何类型的连字符。
- 一些不太常见的TrueType子格式。
- 从右到左和垂直文本布局。
入门指南
将以下内容添加到您的Cargo.toml中
[dependencies]
rusttype = "0.2.1"
要快速开始使用RustType,请查看crate中提供的simple.rs
示例。它演示了加载字体文件、光栅化任意字符串,并将结果显示为ASCII艺术。如果您只想查看文档,加载字体的入口点是FontCollection
,从这里您可以访问单个字体,然后是它们的字形。
文档
未来计划
RustType 的当前状态只是开始。有许多途径可以对其进行改进。我进行这个项目的最主要动机是为游戏提供易于使用的字体渲染。我目前关注的重点是使用 RustType 的 UI 库。一旦我有时间回过头来改进 RustType 本身,我最感兴趣的改进是:
- 在小型字体大小下提高可读性的某种提示形式。
- 用用 Rust 编写的 OpenType 字体加载替换对我其他库的依赖,即 stb_truetype-rs(stb_truetype.h 的直接翻译)。
- 在 OpenType 字体中添加对立方曲线的支持。
- 将光栅化代码提取到一个单独的矢量图形渲染包中。
- 支持某些常见的连字形式。
- 最终,支持嵌入的从右到左的 Unicode 文本。
如果您认为可以帮助实现这些目标中的任何一个,请随时为此打开一个跟踪问题以进行讨论。
许可
根据您的要求,许可如下:
- Apache License,版本 2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
。
贡献
除非您明确表示,否则,根据 Apache-2.0 许可证的定义,您有意提交给作品以包含在内的任何贡献,均应按上述方式双许可,而不附加任何额外条款或条件。
依赖项
~420KB