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

添加評論