文件: core/io/wrap.rs:17-28 分类: 渲染 / Unicode
core/io/wrap.rs:17-28
问题: 包裹逻辑将每个非 Tab Unicode 标量视为显示宽度 1。CJK 字符、emoji、组合标记、零宽字符的宽度都被错误计算。
建议修复: 使用 unicode-width crate (UnicodeWidthChar/UnicodeWidthStr) 处理宽字符和零宽字符。
unicode-width
UnicodeWidthChar
UnicodeWidthStr
修复已合并: b58d66f
b58d66f
crates/core/src/io/wrap.rs
wrap_line_chars
width=1
UnicodeWidthChar::width()
Cargo.toml
crates/core/Cargo.toml
unicode-width = "0.2"
No dependencies set.
The note is not visible to the blocked user.
文件:
core/io/wrap.rs:17-28分类: 渲染 / Unicode
问题: 包裹逻辑将每个非 Tab Unicode 标量视为显示宽度 1。CJK 字符、emoji、组合标记、零宽字符的宽度都被错误计算。
建议修复: 使用
unicode-widthcrate (UnicodeWidthChar/UnicodeWidthStr) 处理宽字符和零宽字符。修复已合并:
b58d66f变更内容
crates/core/src/io/wrap.rs:wrap_line_chars中将硬编码width=1替换为unicode-widthcrate 的UnicodeWidthChar::width(),正确处理 CJK (width=2)、emoji (width=2)、零宽字符 (width=0) 和控制字符 (width=0)。Cargo.toml+crates/core/Cargo.toml: 添加unicode-width = "0.2"直接依赖。已知限制(超出本 Issue scope)