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