diff options
| author | Laurenz <laurmaedje@gmail.com> | 2022-06-13 14:06:41 +0200 |
|---|---|---|
| committer | Laurenz <laurmaedje@gmail.com> | 2022-06-13 14:07:48 +0200 |
| commit | 2fe549c1ec40681829b59f95a5a2f5db335ec3af (patch) | |
| tree | e8ba3877342e62f458d4668acf3f2f721d534986 /src/library | |
| parent | 7660978ee5d842648e244e2972273264d94ca37b (diff) | |
Fix inline math formula frame size
Diffstat (limited to 'src/library')
| -rw-r--r-- | src/library/math/mod.rs | 2 | ||||
| -rw-r--r-- | src/library/math/rex.rs | 15 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/library/math/mod.rs b/src/library/math/mod.rs index 6ed759b7..1eed89b1 100644 --- a/src/library/math/mod.rs +++ b/src/library/math/mod.rs @@ -56,7 +56,7 @@ impl Show for MathNode { }; Ok(if self.display { - Content::block(node) + Content::block(node.pack().aligned(Spec::with_x(Some(Align::Center.into())))) } else { Content::inline(node) }) diff --git a/src/library/math/rex.rs b/src/library/math/rex.rs index a8dbd764..a1777372 100644 --- a/src/library/math/rex.rs +++ b/src/library/math/rex.rs @@ -58,19 +58,24 @@ impl Layout for RexNode { // Determine the metrics. let (x0, y0, x1, y1) = renderer.size(&layout); let width = Length::pt(x1 - x0); - let height = Length::pt(y1 - y0); - let size = Size::new(width, height); - let baseline = Length::pt(y1); + let mut top = Length::pt(y1); + let mut bottom = Length::pt(-y0); + if !self.display { + let metrics = face.metrics(); + top = styles.get(TextNode::TOP_EDGE).resolve(styles, metrics); + bottom = -styles.get(TextNode::BOTTOM_EDGE).resolve(styles, metrics); + }; // Prepare a frame rendering backend. + let size = Size::new(width, top + bottom); let mut backend = FrameBackend { frame: { let mut frame = Frame::new(size); - frame.set_baseline(baseline); + frame.set_baseline(top); frame.apply_role(Role::Formula); frame }, - baseline, + baseline: top, face_id, fill: styles.get(TextNode::FILL), lang: styles.get(TextNode::LANG), |
