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;
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue