Fix incorrect width estimation of ascii control characters

This commit is contained in:
Joscha 2025-02-28 14:29:53 +01:00
parent d28ce90ec7
commit 712c1537ad
2 changed files with 6 additions and 3 deletions

View file

@ -13,6 +13,9 @@ Procedure when bumping the version number:
## Unreleased
### Fixed
- Rendering glitches in unicode-based with estimation
## v0.3.2 - 2025-02-23
### Added

View file

@ -88,10 +88,10 @@ impl WidthDb {
.try_into()
.unwrap_or(u8::MAX),
// The unicode width crate considers newlines to have a width of 1
// while the rendering code expects it to have a width of 0.
// The unicode width crate considers control chars to have a width
// of 1 even though they usually have a width of 0 when displayed.
WidthEstimationMethod::Unicode => grapheme
.split('\n')
.split(|c: char| c.is_ascii_control())
.map(|s| s.width())
.sum::<usize>()
.try_into()