#font #true-type #css #db #unique-id

无 std fontdb

一个简单的内存字体数据库,具有类似 CSS 的查询功能

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数据格式

Download history 29783/week @ 2024-05-03 28918/week @ 2024-05-10 27246/week @ 2024-05-17 25637/week @ 2024-05-24 26432/week @ 2024-05-31 38320/week @ 2024-06-07 44068/week @ 2024-06-14 44239/week @ 2024-06-21 43504/week @ 2024-06-28 44023/week @ 2024-07-05 50588/week @ 2024-07-12 49140/week @ 2024-07-19 45735/week @ 2024-07-26 43542/week @ 2024-08-02 49678/week @ 2024-08-09 45942/week @ 2024-08-16

每月 192,347 次下载
用于 223 个crate (32 个直接使用)

MIT 许可证

110KB
883

fontdb

Build Status Crates.io Documentation Rust 1.60+

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