fix(xeCJK): 排除 fntef 装饰字符的 PDF 文本语义 - #1023
Conversation
PR 审查
实现、依赖清单、回归基线、llmdoc 和固定 SHA 的 reusable workflow 合同保持一致,未发现需要修改的问题。runner 未安装 风险分级:高 —— 变更包含 PDF 文本语义处理以及具有写权限的第三方 reusable workflow 固定版本升级;已按高风险范围核对实现、权限边界和模板提交差异。 完整性声明:据本轮审查,以上为本 PR 已知的全部阻塞级风险;未发现阻塞问题。
|
PR 审查
实现将空 风险分级:中 —— 变更影响 PDF 文本提取语义,但实现集中于 xeCJKfntef 的装饰盒构造路径,并有八类装饰及既有节点基线覆盖。 完整性声明:据本轮审查,以上为本 PR 已知的全部阻塞级风险。已通过 workflow 契约测试、Python 编译检查和
|
|
已核对本轮审查:结论为 APPROVE,阻塞问题、重要建议和小问题均为 0。新增的两份 github472-02 基线只移除了新版 LaTeX 不再输出的末尾字体替代汇总警告;同一轮 CI 中 XeTeX/LuaTeX 的 ctex 测试已在 Ubuntu、macOS 和 Windows 全部通过,其余测试与文档构建也全部通过,无需继续修改。 |
|
补充说明本 PR 中 CI 与本机原有环境的差异确实同时包含 LaTeX 内核和
进一步做了最小因果实验:保持旧版 LaTeX 内核不变,只临时模拟新版
进入规范化日志;新版不再插入这些标记,因此末尾的 随后已实际全量更新本机 TeX Live,并在不修改测试文件的情况下重新运行: $ l3build check -q -e xetex --first github472-02 --last github472-02
All checks passed
$ l3build check -q -e luatex --first github472-02 --last github472-02
All checks passed因此,这两处 |
Closes #1017
Related to #1012(本 PR 不改变线条绘制和重叠行为)。
问题
xeCJKfntef的部分装饰由真实字符或数学内容组成,再由ulem的 leaders 重复排出。页面看起来只有下划线或删除线,但复制、搜索和文本提取会把装饰字符也当成正文。同一组八类装饰命令在修复前的原始文本提取结果中混有
:、/、.、*:修复后的普通 PDF 和 tagged PDF 均只提取正文:
修复
flowchart LR A[构造 fntef 装饰盒] --> B[用空 ActualText 包住装饰内容] B --> C{LaTeX tagging 接口存在?} C -- 是 --> D[暂停 tagging] D --> E[排出装饰] E --> F[恢复 tagging] C -- 否 --> G[直接排出装饰] F --> H[页面视觉不变,文本提取忽略装饰] G --> H\xeCJK_fntef_sbox:n中,用空的ActualText标记装饰盒。ActualText。xeCJKfntef增加accsupp软依赖,并把普通和 tagged PDF 回归所需的 TeX Live 包加入 CI 清单。v3.10.5。验证
xeCJK:112/112。ctexXeTeX:185/185。elegantbook、pkuthss、thuthesis)。fntef-actualtext01,覆盖下划线、双下划线、波浪线、删除线、交叉删除线、自定义线条、着重号和自定义符号,并检查八组空ActualText与 tagging 暂停/恢复。pdftotext -layout/-raw均只保留正文。magick compare -metric AE为0 (0);因此本 PR 没有改变 xeCJKfntef: 删除线/下划线存在重叠 #1012 讨论的线条外观,也不声称解决该问题。同分支的工作流更新
按维护者的同步修改,三个 Agent caller 已升级到 reusable workflow 提交
2a0bb28e6583d869645e0a0522568df4a5d4d921;离线合同测试和稳定文档中的固定 SHA 已一并更新。