From 93138e2d4bb7dbc09ab6ef3c6e139881a8f3bc61 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 3 Feb 2023 17:47:05 +0100 Subject: [PATCH] Fix font switch in math --- library/src/math/mod.rs | 6 ++++++ tests/ref/math/content.png | Bin 5372 -> 6731 bytes tests/typ/math/content.typ | 5 +++++ 3 files changed, 11 insertions(+) diff --git a/library/src/math/mod.rs b/library/src/math/mod.rs index 3e461150b..5aeedf6f8 100644 --- a/library/src/math/mod.rs +++ b/library/src/math/mod.rs @@ -252,6 +252,12 @@ impl LayoutMath for Content { } if let Some(styled) = self.to::() { + if styled.map.contains(TextNode::FAMILY) { + let frame = ctx.layout_content(self)?; + ctx.push(FrameFragment::new(ctx, frame).with_spaced(true)); + return Ok(()); + } + let prev_map = std::mem::replace(&mut ctx.map, styled.map.clone()); let prev_size = ctx.size; ctx.map.apply(prev_map.clone()); diff --git a/tests/ref/math/content.png b/tests/ref/math/content.png index f02045269d3457004be6373aca7a27eaae2400d3..3476dbc48284bffee0368a120e1835ddd7a7aae2 100644 GIT binary patch literal 6731 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 Zad^|nY!r9SBWHBml$BJHC>4M0^B*=JlR5wZ literal 5372 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 diff --git a/tests/typ/math/content.typ b/tests/typ/math/content.typ index 271e00a52..c5a62fb41 100644 --- a/tests/typ/math/content.typ +++ b/tests/typ/math/content.typ @@ -12,3 +12,8 @@ $ x := #table(columns: 2)[x][y]/mat(1, 2, 3) $ --- // Test non-formula math directly in content. #math.attach($a$, top: [b]) + +--- +// Test font switch. +#let here = text.with("Noto Sans") +$#here[f] := #here[Hi there]$.