summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-06-13 14:06:41 +0200
committerLaurenz <laurmaedje@gmail.com>2022-06-13 14:07:48 +0200
commit2fe549c1ec40681829b59f95a5a2f5db335ec3af (patch)
treee8ba3877342e62f458d4668acf3f2f721d534986 /src/library
parent7660978ee5d842648e244e2972273264d94ca37b (diff)
Fix inline math formula frame size
Diffstat (limited to 'src/library')
-rw-r--r--src/library/math/mod.rs2
-rw-r--r--src/library/math/rex.rs15
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),