可重现性与字体安全
字体识别
创建一般的 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 几何都不会不同。