跳到正文

ADR-0062:显式字体的 PDF 内容流文字替换 ​

状态:已接受。

决定 ​

已有 PDF 文字编辑独立于叠加绘制与模型编辑。解析受支持页面 show 指令,以 ToUnicode 解码字面匹配,用调用方显式 TrueType 编码替换命中字形范围。范围外保留原编码、字体和字距;切开一个编码字形映射的匹配明确跳过。源字体程序先检查,不请求隐式系统字体。新增字体在最终预检前完成子集化,保证字体程序和 ToUnicode 实际进入文件。

只允许原 advance 内替换,保留字号、颜色和状态;使用 TJ 尾部数值补偿,使后续文字继续在原位置。内部非零字距与字体更换分别报损。复杂塑形/状态只跳过该操作;marked content、共享 Form 和其他复杂结构只跳过整页,不修改共享资源或留下过时 ActualText。

配置和编辑序列快照后执行,全请求完成输入/输出预算和真实编码,才允许发布。重写不宣称移除所有其他副本或历史;安全脱敏另行设计。

验证 ​

初始证据见阶段五十四。阶段七十六将来源扩展到嵌入静态 CFF,并允许同一字体/状态下连续 Tj/TJ 之间查找;任何其他操作符均结束序列。保留原编码字形范围与 advance,未命中或全部跳过不改内容流。连续多次替换在下一次读取前完成本次字体子集嵌入,避免把尚无程序流的候选当作源。

当前契约以 API 为准;跨字体/定位/状态边界、任意字体编码和通用编辑器行为仍未提供。