mirror of
https://github.com/2234839/web-font.git
synced 2026-09-14 21:05:49 +08:00
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>