diff options
| author | tingerrr <me@tinger.dev> | 2023-10-27 00:17:47 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-27 00:17:47 +0200 |
| commit | 1603e2df268dbcf4bddd2a019ddc39bce3454883 (patch) | |
| tree | b43610ab6596ebf14e916eb18e032ec28c6e78cf /crates | |
| parent | b80382b216d79b56358002687ab288241873bb5b (diff) | |
Fix trailing mandatory breaks being swallowed (#2502)
Diffstat (limited to 'crates')
| -rw-r--r-- | crates/typst-library/src/layout/par.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/crates/typst-library/src/layout/par.rs b/crates/typst-library/src/layout/par.rs index bb280069..9b5f641b 100644 --- a/crates/typst-library/src/layout/par.rs +++ b/crates/typst-library/src/layout/par.rs @@ -1206,15 +1206,20 @@ impl Iterator for Breakpoints<'_> { // Fix for: https://github.com/unicode-org/icu4x/issues/4146 if let Some(c) = self.p.bidi.text[..self.end].chars().next_back() { + if self.end == self.p.bidi.text.len() { + self.mandatory = true; + break; + } + self.mandatory = match lb.get(c) { LineBreak::Glue | LineBreak::WordJoiner | LineBreak::ZWJ => continue, LineBreak::MandatoryBreak | LineBreak::CarriageReturn | LineBreak::LineFeed | LineBreak::NextLine => true, - _ => self.end == self.p.bidi.text.len(), + _ => false, }; - }; + } break; } |
