跳轉到

可重現性與字型安全

字型識別

建立一般的 FontLibrary 時,GlyphKit 絕不搜尋這台機器。請提供字型路徑、不可變的位元組或二進位資料流。它只讀取輸入一次,並用位元組的 SHA-256 與字型集合索引識別字型面,所以把相同的位元組搬到別處,識別不會改變。

可重現的輸入

要得到可重現的輸出,請提供明確的 FontSource,保持它們的順序穩定,宣告後備字族,並把排版結果或字型清單序列化。搜尋系統字型是要主動選用的列舉步驟,絕不是暗中的後備。discover_system_fonts() 回傳一份清單;請把它凍結,之後只透過會檢查已記錄指紋的解析器還原。清單是目錄,不是字型位元組的打包。

FontManifest(faces, generic_families, diagnostics=())

可序列化的字型面清單,帶有穩定的識別、來源與可變字型的中繼資料。

FontUse(face_id, source_ranges, variation_coordinates=())

記錄一份排版結果中,哪個字型面與可變字型座標負責了哪些原文範圍。

字型輸入上限是 128 MiB。空的、格式錯誤的、無法存取的與過大的資料,都會拋出結構化的 GlyphKit 錯誤。GlyphKit 不使用網路,也絕不會偷偷選用沒有設定的系統字型。

字型安全

library.subset() 回傳位元組與中繼資料。這個政策是機械式的,不是法律意見:

宣告的權限 預設結果
可安裝或可編輯 允許用於相容的用途
預覽或列印 只允許不可編輯的預覽或列印輸出
受限 拒絕
不明或沒有 拒絕,除非 allow_unknown=True

字型授權與散布權利仍由呼叫端負責。選用的 portable 設定檔啟用 WOFF2,基本套件則提供 SFNT 子集。

使用端的義務

繪圖端依序取用已定位的字形,把 \(s/U\) 套用到精確輪廓,遵守位移與基線,並用 MathRule 提供的粗細畫每條線。它不可以重新處理字形,也不可以重做字型配對。

與繪圖端無關

命題 · 與繪圖端無關

如果兩個繪圖端取用相同的排版結果、相同的精確輪廓、相同的仿射單位換算與相同的裁切矩形,它們的字形幾何在輸出數值精度內完全相同。

點陣的抗鋸齒可能不同,但字形處理、字幅、換行位置與 Bézier 幾何都不會不同。

留言