崮生(子虚) 58fc647880 perf(gsub): subtable 偏移槽 writeUint16 占位回填替代 reserveOffset16 闭包
subsetGSUB 的 serialize 循环里,每个 lookup 的 subtable 偏移槽原先用
reserveOffset16(per-slot 闭包 + patch push)。思源 GSUB 56 lookup × 323
subtable,分配 323 次闭包。

移植 subsetGPOS 的优化329:writeUint16(0) 占位 + 记录 subtableSlotsStart,
序列化后统一 writeInt16At(subtableSlotsStart+j*2, pos-lookupStart) 回填。
rollback 失败回退后 pos=before(两种路径 subtable 起点一致)。

收益:思源 subsetGSUB 0.2145→0.2021ms (-5.8%),FiraCode 持平(387→378μs 噪声内)。
输出字节完全一致(otf-思源 19188/10664 等),所有字体 SSIM 不变。

与 subsetGPOS 的优化329 同构,统一两处 serialize 实现。

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