mirror of
https://github.com/2234839/web-font.git
synced 2026-09-13 04:15:42 +08:00
FiraCode 含 403 个 lookup,子集仅命中少数字形,多数 lookup 主 coverage 引用 的 gid 全部不在子集内——深度序列化后必然得到空 entries、回退 writeEmptySubtable。 预检在深度解析前用 gidLookup 内联判定主 coverage 是否全子集外,命中即跳过 (type1-4 + type6-format1,共 ~216 个空 lookup),消除其 entries 构建/rule 解析开销。 关键正确性: - format2(class 驱动)/format3(多 coverage)不预检——主 coverage 非充分条件, 误判全空会丢连字(实测 FiraCode calt format2,SSIM 0.9923→0.9368) - 预检不经 covCache——该缓存被 readCoverageRemapped(存 newGids)与 readCoverageGids(format1 期望原始 gid)共享,语义不一致,预检写入会污染 format1 深度解析(newGids 被当原始 gid 二次重映射,连字规则错位) - 输出字节与预检关闭时完全等价(已 dump 对比验证),SSIM 全部无回归 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>