From 51a21403ba2e8ced2aeb6a80996d9247f0b7ffd0 Mon Sep 17 00:00:00 2001 From: damaxwell Date: Thu, 20 Jul 2023 02:59:22 -0800 Subject: [PATCH] Improved #box baselines in math (#1755) * Improved #box baselines in math * add a test --- crates/typst-library/src/math/mod.rs | 10 +++++++--- tests/ref/math/content.png | Bin 7891 -> 10381 bytes tests/typ/math/content.typ | 14 ++++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/crates/typst-library/src/math/mod.rs b/crates/typst-library/src/math/mod.rs index c29ad29b4..1b5c27f87 100644 --- a/crates/typst-library/src/math/mod.rs +++ b/crates/typst-library/src/math/mod.rs @@ -43,7 +43,7 @@ use self::ctx::*; use self::fragment::*; use self::row::*; use self::spacing::*; -use crate::layout::{HElem, ParElem, Spacing}; +use crate::layout::{BoxElem, HElem, ParElem, Spacing}; use crate::meta::Supplement; use crate::meta::{ Count, Counter, CounterUpdate, LocalName, Numbering, Outlinable, Refable, @@ -480,8 +480,12 @@ impl LayoutMath for Content { let mut frame = ctx.layout_content(self)?; if !frame.has_baseline() { - let axis = scaled!(ctx, axis_height); - frame.set_baseline(frame.height() / 2.0 + axis); + if self.is::() { + frame.set_baseline(frame.height()); + } else { + let axis = scaled!(ctx, axis_height); + frame.set_baseline(frame.height() / 2.0 + axis); + } } ctx.push(FrameFragment::new(ctx, frame).with_spaced(true)); diff --git a/tests/ref/math/content.png b/tests/ref/math/content.png index a5f5f13781be3e5671b0ce143697078e88f77599..4fbd4670573931a2d2d527fe97e3aacbc7d57f8b 100644 GIT binary patch delta 3458 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