From baba4593c0a9a7d1446b83e24f627436b96e5719 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E7=94=B5=E8=8A=BD=E8=A1=A3?= Date: Sat, 10 Oct 2026 00:29:44 -0400 Subject: [PATCH] Reviews for P-14 --- tasks/reviews/P-14-r1.md | 3 +++ tasks/reviews/P-14-r2.md | 3 +++ tasks/reviews/P-14-r3.md | 1 + 3 files changed, 7 insertions(+) create mode 100644 tasks/reviews/P-14-r1.md create mode 100644 tasks/reviews/P-14-r2.md create mode 100644 tasks/reviews/P-14-r3.md diff --git a/tasks/reviews/P-14-r1.md b/tasks/reviews/P-14-r1.md new file mode 100644 index 0000000..ab3c187 --- /dev/null +++ b/tasks/reviews/P-14-r1.md @@ -0,0 +1,3 @@ +FAIL + +crates/ely-pdf-engine/shim/ely_text.c:320 — 字体名改用 `ely_json_string` 后,非 UTF-8 名称中的高位字节被原样写入 JSON,导致整页文字块读取失败,违反 PRD PDF-03。复现:单页 PDF 使用字体 `<< /Type /Font /Subtype /Type1 /BaseFont /Review#E9Font /Encoding /WinAnsiEncoding >>`,内容为 `BT /F1 24 Tf 72 700 Td (ABC) Tj ET`;真实 worker 的 `text` 正常返回 `ABC`,当前 `text_blocks` 报 `invalid unicode code point at line 1 column 71`。同一探针在旧 `%q` 实现下通过,返回文字 `ABC`、字体 `Review�Font`、`editable=true`。`ely_json_string` 按字节写出字体名中的 `0xE9`,使这类原本可编辑的页面无法取得文字块。修复方向:保证字体名经过明确的编码处理后产生有效 UTF-8,再进行包含控制字符的 JSON 转义;添加上述字体名称的真实 worker 回归测试。复现源码与前后日志:`/tmp/ely-p14-probe-source.log`、`/tmp/ely-p14-font-before.log`、`/tmp/ely-p14-probes.log`。 diff --git a/tasks/reviews/P-14-r2.md b/tasks/reviews/P-14-r2.md new file mode 100644 index 0000000..6fa619f --- /dev/null +++ b/tasks/reviews/P-14-r2.md @@ -0,0 +1,3 @@ +FAIL + +crates/ely-pdf-engine/shim/ely_annot.c:26 — `fz_chartorune` 会接受 U+D800–U+DFFF,`fz_runetochar` 又将其原样编码,故共享 JSON 写入函数仍会输出非法 UTF-8,违反 PRD PDF-03。具体复现:单页 PDF 的字体为 `<< /Type /Font /Subtype /Type1 /BaseFont /Review#ED#A0#BD#ED#B8#80Font /Encoding /WinAnsiEncoding >>`,内容为 `BT /F1 24 Tf 72 700 Td (ABC) Tj ET`。真实 worker 的 `text` 返回 `ABC`,`text_blocks` 报 `invalid unicode code point at line 1 column 76`,整页文字块无法读取;隔离副本中只将字体输出恢复为原 `%q` 时,同一探针通过并返回 `Review😀Font`。修复方向:编码前校验 Unicode 标量,将代理码点等非法序列规范化为有效 Unicode,并增加上述多字节异常字体名的 worker 回归测试。上一轮 `/Review#E9Font` 已确认修复,旧按字节写法的变异测试会使新增测试失败;当前引擎 117 项测试通过,恢复源码并重建后原有 5 项字体测试通过,上述新增探针仍失败。证据:`/tmp/ely-p14-r2-probes.log`、`/tmp/ely-p14-r2-original-font-writer.log`、`/tmp/ely-p14-r2-byte-mutant.log`、`/tmp/ely-p14-r2-restored.log`、`/tmp/ely-p14-r2-reconfirmed.log`、`/tmp/ely-p14-r2-probe-source.log`。探针副本及其独立构建目录已删除。 diff --git a/tasks/reviews/P-14-r3.md b/tasks/reviews/P-14-r3.md new file mode 100644 index 0000000..7ef22e9 --- /dev/null +++ b/tasks/reviews/P-14-r3.md @@ -0,0 +1 @@ +PASS