mirror of
https://github.com/2234839/web-font.git
synced 2026-09-17 06:35:49 +08:00
serializeSingleSubst/MultipleSubst/AlternateSubst/LigatureSubst 原用 remapGid(origToNew Map) 对每个 coverage gid + 分量 gid 做哈希查询。subsetGSUB 入口已构建 gidLookup 数组 (下标=原gid,值=新gid/-1,比 Map.get 快 ~2×),但这四个函数未使用,仍传 origToNew Map。 serializeLigatureSubst 是 CJK ligature 子集化热点(50gid 子集占 subsetGSUB 65%, 每条 ligature 对全部分量密集 remapGid)。改为收 gidLookup 参数,remapGid(Map.get) → gidLookup[gid](数组索引,-1 即子集外)。 四个函数签名 origToNew: Map → gidLookup: GidLookup,serializeSubtable 调度相应更新。 ChainContext format1 的两处 remapGid(serializeChain/parseChainRuleFormat1or2)暂未改 (FiraCode 路径 serialize 占比小,readCoverageRemapped 是主瓶颈)。 验证:基准测试 29 用例 SSIM 全部无回归;4 用例 sha256 输出字节逐字节等价。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>