Turn a consequtive whitespaces into separate words
Currently a sequence like this "hello " (a word followed by 6 spaces). Would be shaped into two words: ["hello " , " "] This causes issues, since the first word is only 5 letters long, not 10 This commit will break this sequence into: ["hello", " ", " ", " ", " ", " ", " "] This helps with correct line wrappipng
This commit is contained in:
parent
3ef56b7112
commit
25a3367ef9
1 changed files with 12 additions and 8 deletions
20
src/shape.rs
20
src/shape.rs
|
|
@ -378,6 +378,7 @@ impl ShapeSpan {
|
|||
break;
|
||||
} else if c.is_whitespace() {
|
||||
start_lb = start_word + i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if start_word < start_lb {
|
||||
|
|
@ -391,14 +392,17 @@ impl ShapeSpan {
|
|||
));
|
||||
}
|
||||
if start_lb < end_lb {
|
||||
words.push(ShapeWord::new(
|
||||
font_system,
|
||||
line,
|
||||
attrs_list,
|
||||
(span_range.start + start_lb)..(span_range.start + end_lb),
|
||||
level,
|
||||
true,
|
||||
));
|
||||
for (i, c) in span[start_lb..end_lb].char_indices() {
|
||||
// assert!(c.is_whitespace());
|
||||
words.push(ShapeWord::new(
|
||||
font_system,
|
||||
line,
|
||||
attrs_list,
|
||||
(span_range.start + start_lb + i)..(span_range.start + start_lb + i + c.len_utf8()),
|
||||
level,
|
||||
true,
|
||||
));
|
||||
}
|
||||
}
|
||||
start_word = end_lb;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue