Ignore graphemes of width 0 when writing to buffer
This commit is contained in:
parent
37634139b0
commit
6b9e4cbc63
3 changed files with 6 additions and 4 deletions
|
|
@ -10,8 +10,8 @@ fn draw(f: &mut Frame) {
|
|||
"After this sentence come two newlines, so it should always break here.\n",
|
||||
"\n",
|
||||
"Since the wrapping algorithm is aware of the Unicode Standard Annex #14, ",
|
||||
"it understands things like nonbreaking spaces: ",
|
||||
"This\u{00a0}sentence\u{00a0}is\u{00a0}separated\u{00a0}by\u{00a0}nonbreaking\u{00a0}spaces.\n",
|
||||
"it understands things like non-breaking spaces and word joiners: ",
|
||||
"This\u{00a0}sentence\u{00a0}is\u{00a0}separated\u{00a0}by\u{00a0}non-\u{2060}breaking\u{00a0}spaces.\n",
|
||||
"\n",
|
||||
"It can also properly handle wide graphemes (like emoji 🤔), ",
|
||||
"including ones usually displayed incorrectly by terminal emulators, like 👩🔬 (a female scientist emoji).",
|
||||
|
|
|
|||
|
|
@ -142,7 +142,9 @@ impl Buffer {
|
|||
|
||||
for grapheme in content.graphemes(true) {
|
||||
let width = widthdb.grapheme_width(grapheme);
|
||||
self.write_grapheme(pos.x, y, width, grapheme, style);
|
||||
if width > 0 {
|
||||
self.write_grapheme(pos.x, y, width, grapheme, style);
|
||||
}
|
||||
pos.x += width as i32;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ impl WidthDB {
|
|||
.queue(MoveTo(0, 0))?
|
||||
.queue(Print(&grapheme))?;
|
||||
out.flush()?;
|
||||
let width = crossterm::cursor::position()?.0.max(1) as u8;
|
||||
let width = crossterm::cursor::position()?.0 as u8;
|
||||
self.known.insert(grapheme, width);
|
||||
}
|
||||
Ok(())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue