mirror of
https://github.com/2234839/web-font.git
synced 2026-09-04 23:02:27 +08:00
此前「部分命中」的 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>