mirror of
https://github.com/2234839/web-font.git
synced 2026-09-09 17:42:16 +08:00
实现 GSUB/GPOS 的 gid 重映射子集化,解决 CJK 标点压缩丢失与连字不渲染问题。 核心改动: - ot-bytes.ts: 共享 OTWriter/OTReader + ScriptList/FeatureList 紧凑重排 - gpos-subset.ts: SinglePos/PairPos coverage/ClassDef gid 重映射 - gsub-subset.ts: type1/2/3/4/6 coverage/ClassDef/替换目标 gid 重映射 - gsub-reachable.ts: GSUB 替换链不动点迭代,收集无 unicode 的连字 target 字形 - GSUB.js + support/ttfreader/ttfwriter: GSUB 字节透传读写接入 - parse.js: 修复 F2DOT14 复合字形解码(负数 +0.5|0 截断 bug) 关键 bug 修复: - ChainContextSubst format2 字段错位:漏读 coverageOffset 致 chainSubClassSetCount 读成 lookaheadClassDefOffset,连字核心规则降级为空。修复后 FiraCode <= 走对 spacer+liga 路径。 - ScriptList/FeatureList 物理交错 + subtable 散落致 GSUB 膨胀损坏,改遍历重排。 SSIM: FiraCode-代码 0.9636 → 0.9923(与 pyftsubset 黄金像素级一致), CJK 标点压缩全面恢复(初夏明朝纯标点 0.7950→0.9920 等)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>