Files
ElyOffice/tasks/reviews/R2.17-r1.md
T

2.1 KiB
Raw Blame History

FAIL

crates/ely-pdf-engine/shim/ely_write.c:145 — 生成的 ToUnicode CMap 在 beginbfchar 前遗漏必需的条目数,保存结果在 macOS PDFKit 中丢失可提取文字,违反 PDF-03、PDF-13。复现:打开 tests/fixtures/office/t.pdf,以 original 将 BUNDLE TEXT 改为 TEXT BUNDLE,框宽乘二,保存后用 PDFDocument.string 读取,结果为 Optional(""),CoreGraphics 报 failed to parse embedded CMap;原文件返回 BUNDLE TEXT。仅将输出流的 beginbfchar 改成 9 beginbfchar,PDFKit 即返回 TEXT BUNDLE。独立构建的引擎包 106 项测试全部通过,其中 content 的 12 项也通过;新增测试只通过 MuPDF 读取内存文字,遗漏了此保存兼容性回归。修复方向:为每组最多 100 条的映射写入实际条目数,并增加保存后由 PDFKit 独立提取文字的断言。证据:/private/tmp/ely-r217-suite.log、/private/tmp/ely-r217-pdfkit-comparison.log。

crates/ely-pdf-engine/shim/ely_write.c:140 — ToUnicode 按 glyph ID 去重,多个 Unicode 字符共享字形时仅保留首个字符;写出又直接以 glyph ID 为字符码,造成文字被静默改写。复现:嵌入 Arial,令 CID 2 映射 U+002D、CID 3 映射 U+00AD,两者在 CIDToGIDMap 中同指向字形 16;正文为 A\u{00AD}B,文字块返回相同原文且 editable=true。以 original 原样应用,worker 返回 Done("1"),随后读取及保存文件的文本均变成 A-B。探针重复运行均失败,违反 R2.17 的面板文字一致性及 PDF-03。修复方向:保留 Unicode 到输出字符码的独立映射,用 CIDToGIDMap 将各字符码映射到共享字形,并回归验证共享字形字符的原样编辑及保存重开。证据:/private/tmp/ely-r217-alias-normal.log。

crates/ely-pdf-engine/shim/ely_write.c:537 — 本次新增字体映射实现使文件从 449 行增长到 537 行,超过 agents.md 第 5 条的 500 行上限;wc -l crates/ely-pdf-engine/shim/ely_write.c 可复现。修复方向:拆分字体映射实现,使各源码文件保持在 500 行以内。