From 7c248d8ff9f0774a0bcdae019b2a8d65f4f9c13c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E8=88=AA=E5=AE=87?= <3364451258@qq.com> Date: Sat, 27 Jun 2026 14:56:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20ASCII=E6=B8=B2=E6=9F=93=E9=9D=99?= =?UTF-8?q?=E5=8C=BAbug=20=E2=80=94=20saturating=5Fsub=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=B7=A6/=E4=B8=8A=E8=BE=B9=E8=B7=9D=E8=AF=BB=E5=8F=96?= =?UTF-8?q?=E6=A8=A1=E5=9D=97=E8=BE=B9=E7=95=8C=E8=80=8C=E9=9D=9E=E7=A9=BA?= =?UTF-8?q?=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit x < margin 时 mx 被 saturating_sub 截断为 0,导致读取 modules[0][*] 而不是渲染空白静区。 改为显式边界检查 x >= margin && x < margin+size,四边静区均为空白。 --- core/src/render/ascii.rs | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/core/src/render/ascii.rs b/core/src/render/ascii.rs index 9d2f2f4..83c353e 100644 --- a/core/src/render/ascii.rs +++ b/core/src/render/ascii.rs @@ -12,12 +12,11 @@ pub fn render_ascii(qr: &QrCode, invert: bool) -> String { let mut result = String::new(); for y in 0..total { for x in 0..total { - let mx = x.saturating_sub(margin); - let my = y.saturating_sub(margin); - let is_dark = if mx < size && my < size { - qr.modules()[my][mx] + let in_qr = x >= margin && x < margin + size && y >= margin && y < margin + size; + let is_dark = if in_qr { + qr.modules()[y - margin][x - margin] } else { - false + false // 静区始终为亮色 }; result.push_str(if is_dark { dark_char } else { light_char }); }