崮生(子虚) b17d5a3700 perf(gsub): lookup 级全空预扫描跳过逐子表序列化
subsetGSUB 对每个 supported lookup 预扫描所有子表是否都 coverage 全子集外
(isSubtableSkipableByCoverage)。全空 lookup 序列化结果必然是 N 个空 subtable
(与逐子表 serializeSubtable 失败后 writeEmptySubtable 逐字节相同),直接在 lookup 级
批量写空,跳过 N 次 serializeSubtable 函数调用 + 预检 + rollback 开销。

初夏 lookup[5] type6 268 子表(小子集全不命中)是典型受益场景。

安全性:allEmpty 当且仅当所有子表 isSubtableSkipableByCoverage===true,而 serializeSubtable
内部对 skipable 子表直接 return false(→空 subtable),故输出逐字节相同(含 FiraCode 连字)。
format2 class 驱动子表不预检(返回 false),含 format2 的 lookup allEmpty 必为 false 走原路径。
subCount 不变、lookup 不删(区别于已证危险的 GSUB lookup 删除)。

subsetGSUB 初夏 0.215→0.178ms(-17%),全基准 SSIM 与输出字节完全不变(diff 验证 hash 一致)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 15:14:00 +08:00
..
2026-04-08 22:05:17 +08:00
2024-08-19 18:10:09 +08:00