Improve heuristic for splitting up whitespace

This commit is contained in:
Jeremy Soller 2022-10-10 13:13:04 -06:00
parent 8b57e23906
commit 92634bf720
No known key found for this signature in database
GPG key ID: 87F211AF2BE4C2FE

View file

@ -179,15 +179,16 @@ impl<'a> FontMatches<'a> {
let mut start_word = 0;
for (end_lb, _) in unicode_linebreak::linebreaks(span) {
let mut start_lb = end_lb;
if end_lb != span.len() {
while start_lb > 1 {
start_lb -= 1;
if span.is_char_boundary(start_lb) {
break;
}
for (i, c) in span[start_word..end_lb].char_indices() {
if start_word + i == end_lb {
break;
} else if c.is_whitespace() {
start_lb = start_word + i;
}
}
words.push(self.shape_word(0, line, start_span + start_word, start_span + start_lb, span_rtl, false));
if start_word < start_lb {
words.push(self.shape_word(0, line, start_span + start_word, start_span + start_lb, span_rtl, false));
}
if start_lb < end_lb {
words.push(self.shape_word(0, line, start_span + start_lb, start_span + end_lb, span_rtl, true));
}