Files
ElyOffice/tasks/reviews/P-04-r1.md
T

1.6 KiB

FAIL

crates/ely-pdf-engine/shim/ely_text.c:250 — at++ 位于 && 右侧,旋转文字让 upright(block) 返回 0 后,后续文字块的 reached 索引错位,违反 PDF-03 的编辑要求。实测单页依次绘制 18 pt ROTATED(矩阵 0 1 -1 0 50 500)、位于 (300,400) 的 Form XObject 文字 STAMP、位于 (72,200) 的页面自身横排文字 OWN,返回的 editable 为 [false,true,false];界面因此允许选择 STAMP,应用时引擎报 this text is not in the page's own content,可正常预览修改的 OWN 则无法选择。改动前返回 [false,false,true],同一探针通过;当前代码重复失败。修复方向:每处理一个文字块都递增索引,使递增独立于横排判定,并加入旋转文字后混排 Form 与页面文字的回归测试。

crates/ely-pdf-engine/shim/ely_text.c:74 — 页级匹配把一次字形命中只计入首个匹配目标的 owner,随后 return 1;不同文字块共享原点和字符时,较早块抢占较晚块的计数,使可编辑文字被标为不可编辑。实测先以 Form XObject 在 (72,700) 绘制 36 pt AX,再在页面 (72,300) 绘制 18 pt BREAK,最后在页面 (72,700) 绘制 18 pt AB;三块均横排,AB 的 A 被计入 AX,最终 AB 的 editable 为 false,界面无法选中编辑,违反 PDF-03。改动前同一文件的 AB 为 true,同一探针通过;当前代码重复失败。修复方向:在一次整页干跑中保留各块独立的匹配语义,对同一字形匹配到的每个块分别计数,每个块每个字形至多计一次,并加入共享原点的重叠块回归测试。