fix: TEXT 被 IMAGE 包含时也移除(aria-label 等隐藏文字)
This commit is contained in:
+6
-2
@@ -641,12 +641,16 @@ async function convert(input) {
|
||||
for (var i = sg.children.length - 1; i >= 0; i--) {
|
||||
var ci = sg.children[i];
|
||||
if (!ci.rect) continue;
|
||||
// TEXT 节点被 IMAGE 完全覆盖时移除
|
||||
// TEXT 节点被 IMAGE 完全覆盖或包含时移除
|
||||
if (ci.type === 'TEXT') {
|
||||
var cx = Math.round(ci.rect.x), cy = Math.round(ci.rect.y);
|
||||
var cw = Math.round(ci.rect.w), ch = Math.round(ci.rect.h);
|
||||
for (var ir of imageRects) {
|
||||
if (Math.abs(cx - ir.x) < 3 && Math.abs(cy - ir.y) < 3 && Math.abs(cw - ir.w) < 3 && Math.abs(ch - ir.h) < 3) {
|
||||
// 完全重叠
|
||||
var exactMatch = Math.abs(cx - ir.x) < 3 && Math.abs(cy - ir.y) < 3 && Math.abs(cw - ir.w) < 3 && Math.abs(ch - ir.h) < 3;
|
||||
// TEXT 被 IMAGE 包含(IMAGE 在 TEXT 内部)
|
||||
var contained = ir.x >= cx - 5 && ir.y >= cy - 5 && ir.x + ir.w <= cx + cw + 5 && ir.y + ir.h <= cy + ch + 5;
|
||||
if (exactMatch || contained) {
|
||||
overlapRemove.add(ci.id);
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user