From cd1a786539e81c8b83b774289fd16645d740d5de Mon Sep 17 00:00:00 2001 From: Max Date: Fri, 1 Aug 2025 10:55:37 +0000 Subject: [PATCH] Prevent broken glyph assemblies when font data is incorrect (#6688) --- crates/typst-layout/src/math/fragment.rs | 4 +++- .../ref/math-stretch-min-overlap-exceeds-max.png | Bin 0 -> 585 bytes tests/suite/math/stretch.typ | 9 +++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 tests/ref/math-stretch-min-overlap-exceeds-max.png diff --git a/crates/typst-layout/src/math/fragment.rs b/crates/typst-layout/src/math/fragment.rs index 3497587c..fce0ca30 100644 --- a/crates/typst-layout/src/math/fragment.rs +++ b/crates/typst-layout/src/math/fragment.rs @@ -739,7 +739,9 @@ fn assemble( } advance -= max_overlap; - growable += max_overlap - min_overlap; + // In case we have that max_overlap < min_overlap, ensure we + // don't decrease the value of growable. + growable += (max_overlap - min_overlap).max(Abs::zero()); } full += advance; diff --git a/tests/ref/math-stretch-min-overlap-exceeds-max.png b/tests/ref/math-stretch-min-overlap-exceeds-max.png new file mode 100644 index 0000000000000000000000000000000000000000..a75437fd960a4dad089f5c72add051e356fc7cb1 GIT binary patch literal 585 zcmV-P0=E5$P);&D#2^~3Qv@fvP8U?8{}bHu>naS)-?i6 z6l(+4S}3)|NjyDU&8^jcsj?&uWVymubx^p2;X` z62RhR_}sMpK)!PUI0zii+s`dow-$!_a-yxPJRV#(WIfHm;Q=@e`2xB>&PaDsTa3H7 z??His&WZ#uXveJPNUvt`p1CP~RVTQw0R;4kjCr`A4CUnxwdIjAE6d3~LFS0>$_v@r zv0TGSeWpGu+raj1+n{^Q;JFcVm^M$W%0>2_4mCLMl?DzH9Mu3JMg^K4HHx|iMQJ2t zK!v7TgTnO^GOXYUx!sJZ>k`WO>x9@8cL~wAU>fWsCtJ%>z)6au_fjh8&^S#fW+#eH zpw!!s=Ai{;$VIW5qIBXG8ix&qAEh*)o2GR94kn+Ss)^"Gauss-Jordan Elimination" $