summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortingerrr <me@tinger.dev>2023-10-27 00:17:47 +0200
committerGitHub <noreply@github.com>2023-10-27 00:17:47 +0200
commit1603e2df268dbcf4bddd2a019ddc39bce3454883 (patch)
treeb43610ab6596ebf14e916eb18e032ec28c6e78cf
parentb80382b216d79b56358002687ab288241873bb5b (diff)
Fix trailing mandatory breaks being swallowed (#2502)
-rw-r--r--crates/typst-library/src/layout/par.rs9
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;
}