Ignore the last space when wrapping.

This commit is contained in:
Hojjat 2022-12-16 21:58:26 -07:00 committed by Jeremy Soller
parent cb958c63f8
commit 3ef56b7112

View file

@ -633,7 +633,9 @@ impl ShapeLine {
if self.rtl != span.level.is_rtl() { if self.rtl != span.level.is_rtl() {
let mut fit_x = x; let mut fit_x = x;
let mut fitting_end = span.words.len(); let mut fitting_end = span.words.len();
for i in (0..span.words.len()).rev() { if !span.words.is_empty() {
let mut i = span.words.len()-1;
loop {
let word = &span.words[i]; let word = &span.words[i];
let word_size = font_size as f32 * word.x_advance; let word_size = font_size as f32 * word.x_advance;
@ -663,6 +665,11 @@ impl ShapeLine {
} else { } else {
fit_x += word_size; fit_x += word_size;
} }
if i == 0 {
break;
}
i -= 1;
}
} }
if !word_ranges.is_empty() { if !word_ranges.is_empty() {
while fitting_end > 0 { while fitting_end > 0 {
@ -677,7 +684,9 @@ impl ShapeLine {
} else { } else {
let mut fit_x = x; let mut fit_x = x;
let mut fitting_start = 0; let mut fitting_start = 0;
for i in 0..span.words.len() { if !span.words.is_empty() {
let mut i = 0;
loop {
let word = &span.words[i]; let word = &span.words[i];
let word_size = font_size as f32 * word.x_advance; let word_size = font_size as f32 * word.x_advance;
@ -688,8 +697,11 @@ impl ShapeLine {
}; };
if wrap { if wrap {
//TODO: skip blanks
word_ranges.push((fitting_start..i, true)); word_ranges.push((fitting_start..i, true));
if word.blank {
i += 1;
}
fitting_start = i; fitting_start = i;
fit_x = start_x; fit_x = start_x;
@ -700,6 +712,12 @@ impl ShapeLine {
} else { } else {
fit_x += word_size; fit_x += word_size;
} }
i += 1;
if i >= span.words.len() {
break;
}
}
} }
word_ranges.push((fitting_start..span.words.len(), false)); word_ranges.push((fitting_start..span.words.len(), false));
} }