崮生(子虚) 65e238cdca perf(cmap): subset 模式 format4 延迟解析,跳过 4×segCount 数组构建
subset 模式下 format4 不再急切构建 endCode/startCode/idDelta/idRangeOffset
共 4 个 segCount 项数组,只记录各段在 view 的偏移;lookupFormat4 二分时
按需从 view 读(mid*2 偏移)。原 subset 模式仍执行 4×segCount 次 getUint16
+ 4 个数组分配,得意黑 segCount=3929 → 1.5 万次读,占 readSubTable 0.101ms。
延迟后 view 读次数 = O(S × log(segCount)),远小于 4×segCount。

lookupFormat4 新增 _lazySegs 分支,非延迟路径(全量模式)保持急切数组不变。
idDelta 仍用 getUint16 读(与原急切模式一致),依赖 % 0x10000 处理符号。

字节逐字节一致(令东/思源/初夏/得意黑/otf 全 cmp 通过),SSIM 全程不变。
cmap: 初夏 0.075→0.009ms(-88%),得意黑→0.004ms(-94%),思源 0.063→0.014(-78%)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-24 10:57:36 +08:00
..