mirror of
https://github.com/2234839/web-font.git
synced 2026-09-04 23:02:27 +08:00
isSubtableSkipableByCoverage 的 ChainContext format3 分支原对每个 coverage 调 readCoverageRemapped(判全子集外)——它 new Array+sort+Map.set 填 covCache,但思源 fmt3 预检 281 个 coverage 全子集外且 avg 仅 1.3 gid:数组分配/sort/cache 操作是纯固定开销, 且这些 skipable coverage 的 cache entry 永不被命中(skipable subtable 不深度解析)。 改用 coverageAllOutOfSubset 内联遍历字节判「全子集外」(不分配数组、不读写 covCache), 预检只判 skipable 不再填 cache;非 skipable subtable 深度解析时 readCoverageRemapped 自行首次填 cache(命中率不变,无双重遍历)。同时从 isSubtableSkipableByCoverage 移除 不再使用的 covCache 参数。 一致性([[gsub-subset-fmt3-prefetch-consistency]]):对齐 coverageAllOutOfSubset 的 COV_RANGE 分支与 readCoverageRemapped——end clamp 到 numGlyphs-1、start>=numGlyphs 的越界 range 计 origNonEmpty 不展开 gid。两者「全子集外」判定完全等价,故预检 skipable ⟺ 深度解析 coverage 失效,输出逐字节一致。 A/B:6 字体 × ttf/woff2 共 12 产物逐字节 IDENTICAL(含 FiraCode calt)。 性能(best-of-min,两轮一致):otf-思源 -12%、思源ttf -6%、FiraCode -2%、初夏 -3%。 基准测试全通过,SSIM 维持。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>