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:
Hojjat 2022-12-17 14:24:22 -07:00 committed by Jeremy Soller
parent 3ef56b7112
commit 25a3367ef9

View file

@ -378,6 +378,7 @@ impl ShapeSpan {
break; break;
} else if c.is_whitespace() { } else if c.is_whitespace() {
start_lb = start_word + i; start_lb = start_word + i;
break;
} }
} }
if start_word < start_lb { if start_word < start_lb {
@ -391,14 +392,17 @@ impl ShapeSpan {
)); ));
} }
if start_lb < end_lb { if start_lb < end_lb {
words.push(ShapeWord::new( for (i, c) in span[start_lb..end_lb].char_indices() {
font_system, // assert!(c.is_whitespace());
line, words.push(ShapeWord::new(
attrs_list, font_system,
(span_range.start + start_lb)..(span_range.start + end_lb), line,
level, attrs_list,
true, (span_range.start + start_lb + i)..(span_range.start + start_lb + i + c.len_utf8()),
)); level,
true,
));
}
} }
start_word = end_lb; start_word = end_lb;
} }