崮生(子虚) 519ce0473b perf(gpos/gsub): 部分命中 lookup 跳过空 subtable(subCount 只数命中的)
此前「部分命中」的 lookup(anyHit=true 但非全命中)仍把每个未命中 subtable
序列化为空 subtable(writeEmpty(Pos)Subtable,~10B/个)。这些空 subtable 的
coverage 必为空,浏览器查不到字形即跳过——直接不输出渲染等价:lookup 的
subtable 按序遍历,第一个匹配 coverage 应用,删掉必然空的 subtable 不改变
非空 subtable 的匹配结果。

GPOS:hits[j]=false 的 subtable 跳过;初夏 lookup[7] 285 subtable 仅 6 命中,
省 (279-1)×10B。
GSUB:subtableSkipable[j]=true 的 subtable 跳过(format2 永远 not skipable
故含 class 驱动 subtable 的 lookup 不受影响);not skipable 但序列化失败的
仍走 fallback 写空(保留在输出)。

与优化330/337(全空 lookup 折叠 subCount=1)互补:那些处理「全部不命中」,
本次处理「部分不命中」。anyHit=true 保证至少 1 个命中,subCount>=1 合法。

收益(30 用例 SSIM 全不变,总体积 -2408B):
- 初夏明朝-汉字标点 woff2 6012→4900 (-1112B)
- 初夏明朝-纯标点 woff2 6252→5260 (-992B)
- FiraCode woff2 8672→8560 (-112B)
- 思源黑体-标点 woff2 2940→2884 (-56B)
- 霞鹜文楷-汉字标点/纯标点 woff2 -20/-12B

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