mirror of
https://github.com/2234839/web-font.git
synced 2026-09-15 21:51:35 +08:00
loca 偏移是大端,原 DataView.getUint16/32 逐次调用含边界检查开销。改用 Uint16/32Array 直接 view 共享 buffer + 内联字节翻转,微基准实测: - format0(Uint16):157→84μs(-46%) - format1(Uint32):152→93μs(-39%) (思源 30907 条 loca) 返回 Uint32Array 替代普通 Array,glyf.js 仅按下标 loca[index] 只读访问, 与 TypedArray 兼容(已确认 loca 仅被 glyf.js:22 读取、ttfreader.js:216 置 null)。 对齐保护:Uint16Array 需 2 字节对齐、Uint32Array 需 4 字节对齐,loca offset 来自表目录不保证对齐。检测 srcByteOff 对齐情况,未对齐回退 DataView 路径。 验证:基准测试 29 用例 SSIM 全部无回归;4 用例(思源千字文/标点/FiraCode/ttf) sha256 输出字节逐字节等价。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>