36 个版本 (20 个破坏性更新)
0.21.0 | 2024 年 8 月 6 日 |
---|---|
0.20.0 | 2024 年 7 月 2 日 |
0.19.0 | 2024 年 7 月 2 日 |
0.16.2 | 2024 年 2 月 19 日 |
0.2.0 | 2020 年 7 月 21 日 |
#3 在 数据格式
每月 192,347 次下载
用于 223 个crate (32 个直接使用)
110KB
883 行
fontdb
fontdb
是一个简单的内存字体数据库,具有类似 CSS 的查询功能。
功能
- 数据库可以从文件、目录和原始数据(
Vec<u8>
)中加载字体。 - 数据库可以使用类似 CSS 的查询匹配字体。请参阅
Database::query
。 - 数据库可以尝试加载系统字体。目前,这是通过扫描预定义目录来实现的。库不与系统 API 交互。
- 为每个字体面提供唯一标识符。
非目标
-
高级字体属性查询。
数据库仅提供存储和匹配功能。对于字体属性查询,您可以使用 ttf-parser。 -
字体回退机制。
此库可以用于实现字体回退机制,但它没有实现。 -
应用程序的全局数据库。
数据库不使用static
,因此由调用者决定存储位置。 -
支持除了 TrueType 之外的字体类型。
字体与字体面
字体是一组字体面。因此,字体面是字体的一部分。简单的字体 (*.ttf/*.otf) 通常包含单个字体面,但字体集合 (*.ttc) 可以包含多个字体面。
fontdb
存储和匹配字体面,而不是字体。因此,在加载具有 5 个字体面(例如)的字体集合之后,数据库将包含 5 个 FaceInfo
对象,所有这些对象都将指向相同的文件或二进制数据。
性能
数据库性能在很大程度上受存储本身限制。我们使用 ttf-parser,因此解析不应成为瓶颈。
例如,在配备 M1 Pro 的 Mac Book Pro 14 上,加载 1361 个字体面只需约 ~24ms。
安全性
该库依赖于内存映射文件,这本质上是不可靠的。但因为我们没有保持文件打开,所以应该是完全安全的。
如果您想使用字体文件的持久性内存映射,则可以使用不安全的 Database::make_shared_face_data
函数。
许可证
MIT
依赖项
~2MB
~45K SLoC