mirror of
https://github.com/2234839/web-font.git
synced 2026-09-13 04:15:42 +08:00
covCache 被 readCoverageRemapped(fmt3 用,产 newGids)与 readCoverageGids (type1/2/3/4 用,需原始 gid)共享同一 CoverageCacheEntry。readCoverageGids 填的 entry remapped=null/outOfSubset=false,readCoverageRemapped 命中时原直接 `return entry.outOfSubset ? null : entry.remapped` 会返回 null——null 被当作 「outOfSubset」语义,误判 coverage 失效。 修复:命中 entry 时若 gids!==EMPTY_GIDS(readCoverageGids 填的,非 readCoverageRemapped 自己的占位),从已缓存的原始 gids 现场重映射(gidLookup 过滤),并回填 remapped/outOfSubset 供后续命中。仅 readCoverageRemapped 自己的 entry(gids===EMPTY_GIDS)才走原快路径。 此为潜在顺序依赖隐患:改变 covCache 填充顺序(如预扫描完整扫描)会暴露它致 FiraCode calt 输出变化。修复使 covCache 真正顺序无关。 A/B:思源/白狐/令东/思源ttf/初夏 逐字节 IDENTICAL;FiraCode ttf +32B(一个被误判空的 fmt3 subtable 现正确序列化)、woff2 不变(brotli 压掉)。基准测试全通过,FiraCode SSIM 维持 0.9923(多保留的规则不影响 => !== 渲染)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>