diff --git a/crates/typst/src/math/stretch.rs b/crates/typst/src/math/stretch.rs index d316fa9a2..232252b99 100644 --- a/crates/typst/src/math/stretch.rs +++ b/crates/typst/src/math/stretch.rs @@ -73,9 +73,15 @@ pub(super) fn stretch_fragment( _ => return, }; - let Some(axis) = axis.or_else(|| stretch_axis(ctx, &glyph)) else { + // Return if we attempt to stretch along an axis which isn't stretchable, + // so that the original fragment isn't modified. + let Some(stretch_axis) = stretch_axis(ctx, &glyph) else { return; }; + let axis = axis.unwrap_or(stretch_axis); + if axis != stretch_axis { + return; + } let relative_to_size = relative_to.unwrap_or_else(|| fragment.size().get(axis)); diff --git a/tests/ref/issue-4188-lr-corner-brackets.png b/tests/ref/issue-4188-lr-corner-brackets.png index 81e9ecdcd..6e247908b 100644 Binary files a/tests/ref/issue-4188-lr-corner-brackets.png and b/tests/ref/issue-4188-lr-corner-brackets.png differ diff --git a/tests/ref/math-stretch-attach.png b/tests/ref/math-stretch-horizontal-attach.png similarity index 100% rename from tests/ref/math-stretch-attach.png rename to tests/ref/math-stretch-horizontal-attach.png diff --git a/tests/ref/math-stretch-vertical-attach.png b/tests/ref/math-stretch-vertical-attach.png new file mode 100644 index 000000000..213ab89b6 Binary files /dev/null and b/tests/ref/math-stretch-vertical-attach.png differ diff --git a/tests/suite/math/stretch.typ b/tests/suite/math/stretch.typ index e6817ee5e..606967466 100644 --- a/tests/suite/math/stretch.typ +++ b/tests/suite/math/stretch.typ @@ -13,8 +13,8 @@ $ H stretch(=)^"define" U + p V \ f : X stretch(arrow.hook, size: #150%)_"injective" Y \ V stretch(->, size: #(100% + 1.5em))^("surjection") ZZ $ ---- math-stretch-attach --- -// Test stretch interactions with attachments. +--- math-stretch-horizontal-attach --- +// Test horizontal stretch interactions with attachments. #set page(width: auto) $stretch(stretch(=, size: #4em))_A$ @@ -28,6 +28,13 @@ $ P = Q U stretch(equiv)^(forall i)_"Chern-Weil" V stretch(equiv, size: #(120% + 2mm))^(forall i)_"Chern-Weil" W $ +--- math-stretch-vertical-attach --- +// Test vertical stretch interactions with attachments. +$arrow.t$ +$stretch(arrow.t)^"map"$ +$stretch(arrow.t, size: #2em)^"map"$ +$stretch(arrow.t, size: #200%)^"map"$ + --- math-stretch-horizontal --- // Test stretching along horizontal axis. #let ext(sym) = math.stretch(sym, size: 2em)