崮生(子虚) f1c8315b0c perf(gsub-reachable): 大 coverage 反转路径用字节二分省掉数组展开
collectReachableGsubTargets 的 SingleSubst 反转遍历路径(reachable 小、coverage 大)
原 readCoverageGids 先把 coverage 全部 gid 展开到数组再二分。思源 locl lookup 的 coverage
达 8881/12000/11632 gid,展开是 reach 阶段 #1 热点(0.060ms / 0.165ms)。

新增 coverageIndexOf(format1 二分 / format2 range 二分+累计)与 coverageCount(不展开得
gid 总数),反转路径直接对 coverage 字节二分得 index,完全省掉大数组展开:
- 思源 collectReachable 0.165→0.042ms(-74%)
- 白狐 0.026→0.007ms(-73%)
- FiraCode 持平(coverage 小不走反转路径)

reachable 结果逐字体一致(思源 19 / 白狐 4 / FiraCode 89),基准测试全过:
思源 OTF ssim=1.0000、FiraCode 0.9923 保持。

otf-subset 顺带 findTable 去重(reachable 收集与布局表子集化共用提前解析的 GSUB/GPOS)。

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