mirror of
https://github.com/2234839/web-font.git
synced 2026-09-12 03:35:44 +08:00
otf 子集化路径此前完全跳过 probeGsubAndCmap/collectReachableGsubTargets, subsetGids 仅含 cmap 查到的 codepoint→基础 gid。思源黑体等 CID 字体含 locl feature,浏览器按中文 locale 渲染时 GSUB 把基础字形替换为地区变体(如 "天" gid A → CN 变体 gid A+1)。subsetGids 不含这些 target,子集 GSUB 重 映射后 target gid 指向不存在/错误字形,渲染出错误变体。 逐字 ink 对比定位(地/黄/洪/波一致,天/玄/宇/法/海多 ink、宙少 ink)正是 locl 变体丢失特征。subsetOTF 内部复用 collectReachableGsubTargets 收集 seed 经 GSUB 可达的 target gid 合并进 subsetGids,subsetCFF/FDSelect/charset 与 GSUB/GPOS 重映射统一基于扩展后的 subsetGids,变体字形正确保留。 实测思源 9 字 otf/woff2 输出均 ink 6724/6724 SSIM 1.0000(修复前 0.9530), 白狐 5 字保持 1.0000,其余用例无回归。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>