Skip blanks at line breaks when wrapping LTR text inside RTL text

This commit is contained in:
Jeremy Soller 2022-10-10 08:50:36 -06:00
parent a52bb1956e
commit 3bf92c1f04
No known key found for this signature in database
GPG key ID: 87F211AF2BE4C2FE

View file

@ -148,12 +148,17 @@ impl<'a> FontShapeLine<'a> {
};
if wrap {
word_ranges.push((i + 1..fitting_end, true));
if word.blank {
fitting_end = i;
} else {
fitting_end = i + 1;
//TODO: ensure blanks are not processed later
let mut fitting_start = i + 1;
while fitting_start < fitting_end {
if span.words[fitting_start].blank {
fitting_start += 1;
} else {
break;
}
}
word_ranges.push((fitting_start..fitting_end, true));
fitting_end = i + 1;
fit_x = start_x;
}
@ -164,6 +169,15 @@ impl<'a> FontShapeLine<'a> {
fit_x += word_size;
}
}
if ! word_ranges.is_empty() {
while fitting_end > 0 {
if span.words[fitting_end - 1].blank {
fitting_end -= 1;
} else {
break;
}
}
}
word_ranges.push((0..fitting_end, false));
println!("{:?}", word_ranges);
@ -185,12 +199,9 @@ impl<'a> FontShapeLine<'a> {
};
if wrap {
//TODO: skip blanks
word_ranges.push((fitting_start..i, true));
if word.blank {
fitting_start = i + 1;
} else {
fitting_start = i;
}
fitting_start = i;
fit_x = start_x;
}