ttf-parser 0.5 - 用于处理 TrueType 字体的新库

ttf 解析器 是一个用于解析 TrueType/OpenType 字体的库。
新版本全面支持可变字体
(可变字体)和 C API,因此我决定在传说中宣传它。

直到最近,如果需要使用 TrueType 字体,只有两个选择:FreeType 和 stb_truetype。 第一个是一个巨大的组合,第二个支持相当少量的功能。

ttf-parser 处于中间位置。 它支持与 FreeType 相同的所有 TrueType 表(TrueType 格式由许多单独的二进制表组成),但本身不绘制字形。

同时,ttf-parser 还包含许多其他显着差异:

  1. ttf-parser 是用 Rust 编写的,没有使用 unsafe。 FreeType 和 stb_truetype 是用 C 编写的。
  2. ttf-parser 是唯一内存安全的实现。 读取随机存储器是不可能的。 FreeType 中的漏洞不断得到修复,而且 stb_truetype 原则上并不是为了读取任意字体而设计的。
  3. ttf-parser 是唯一的线程安全实现。 所有解析方法都是不变的。 唯一的例外是为可变字体设置坐标,但此函数是可重入的。 FreeType 基本上是单线程的。 stb_truetype - 可重入(您可以在不同线程中使用单独的副本,但不能使用多个线程之一)。
  4. ttf-parser 是唯一不使用堆分配的实现。 这可以让您加快解析速度并避免 OOM 问题。
  5. 此外,几乎所有算术运算和数字类型的转换都会被检查(包括静态地)。
  6. 在最坏的情况下,库可能会抛出异常。 在这种情况下,在C API中,异常将被捕获并且函数将返回错误,但不会崩溃。

尽管有所有的安全保证,ttf-parser 也是最快的实现。 例如,解析 CFF2 的速度比 FreeType 快 3.5 倍。 与此同时,解析 gly​​f 比 stb_truetype 慢 10%,但这是因为它不支持可变字体,而可变字体的实现需要额外的存储。 信息。 更多详情请参阅 读我.

来源: linux.org.ru

添加评论