mirror of
https://github.com/2234839/web-font.git
synced 2026-09-13 12:25:50 +08:00
subsetCFF 0.313ms 中 0.202ms 集中在 fdaParse 段:readIndex(b, privOrigOff+subrRel) 全量解析 Local Subr INDEX 的 count+1 个 offset 数组,但后续只用 b.subarray(start,end) 取整体字节切片透传——offset 数组从未被消费。思源等 CID 字体 Local Subr 可达数千 subr, 全量解析是 subsetCFF 主要耗时。 新增 indexByteRange:仅读 count/offSize + 第 count 个 offset(位于 offset 数组末尾)算 end,跳过中间全部 offset 解析。Local Subr 透传改用它。 顺带合并 FDSelect 两处 lookupFDSelect 遍历为单次(首次遍历同时记录 gidOrigFds 供 newGidToFd 复用,消除第二次对 newSubsetGids 的二分查找)。 subsetOTF(思源8字) keepGSUB=true 0.704→0.504ms(-28%)、keepGSUB=false 0.428→0.232ms(-46%); fdaParse 0.202→0.003ms;字节级零回归(cmp 输出逐字节一致); 基准测试全字体 SSIM 与优化前完全一致。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>