mirror of
https://github.com/2234839/web-font.git
synced 2026-09-04 23:02:27 +08:00
预检优化(type1-4 + fmt1 + fmt3 全覆盖): - 重构 isPrimaryCoverageOutOfSubset → isSubtableSkipableByCoverage + 抽出 coverageAllOutOfSubset 辅助函数(内联遍历,不分配数组、不碰缓存) - 新增 ChainContext format3 预检:遍历 back/input/look 三组 coverage, 任一组「原非空且全子集外」即判定 subtable 失效,跳过深度解析 - FiraCode 403 lookup 中 ~330 个可预检跳过,子集化 23ms→16ms(-31%) covCache 共享语义污染修复(fmt3 预检能安全启用的前提): - CoverageCacheEntry 的 gids(原始 gid,fmt1 按 index 配对)与 remapped(newGids,fmt3 序列化)两种语义原混写同一字段: 旧 readCoverageRemapped 把 newGids 写进 gids,污染后续 fmt1 的 readCoverageGids(拿到 newGids 当原始 gid 二次重映射,连字规则错位) - 修复:readCoverageRemapped 只写 remapped,gids 留单例占位 EMPTY_GIDS; readCoverageGids 见占位即重新计算并 mergeGidsEntry(保留已有 remapped) - 修复后 fmt3 预检开关下字节完全等价(8724==8724),SSIM 全程无回归 验证:pnpx tsx 基准测试.test.ts 全部 SSIM 无回归 (FiraCode=0.9923, otf-思源黑体=0.9310, 初夏明朝-纯标点=0.9920 不变) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>