diff --git a/crates/typst/src/layout/grid/layout.rs b/crates/typst/src/layout/grid/layout.rs index 24d641a66..b58e73c86 100644 --- a/crates/typst/src/layout/grid/layout.rs +++ b/crates/typst/src/layout/grid/layout.rs @@ -376,6 +376,10 @@ impl<'a> GridLayouter<'a> { self.render_fills_strokes()?; + for frame in &mut self.finished { + frame.meta(self.styles, false); + } + Ok(Fragment::frames(self.finished)) } diff --git a/crates/typst/src/visualize/image/mod.rs b/crates/typst/src/visualize/image/mod.rs index 5bfda381e..7aa8361b2 100644 --- a/crates/typst/src/visualize/image/mod.rs +++ b/crates/typst/src/visualize/image/mod.rs @@ -236,6 +236,7 @@ impl Layout for ImageElem { // Create a clipping group if only part of the image should be visible. if fit == ImageFit::Cover && !target.fits(fitted) { + frame.meta(styles, false); frame.clip(Path::rect(frame.size())); } diff --git a/crates/typst/src/visualize/line.rs b/crates/typst/src/visualize/line.rs index 12ec44733..94841d39e 100644 --- a/crates/typst/src/visualize/line.rs +++ b/crates/typst/src/visualize/line.rs @@ -89,6 +89,7 @@ impl Layout for LineElem { let mut frame = Frame::soft(target); let shape = Geometry::Line(delta.to_point()).stroked(stroke); frame.push(start.to_point(), FrameItem::Shape(shape, self.span())); + frame.meta(styles, false); Ok(Fragment::frame(frame)) } } diff --git a/crates/typst/src/visualize/polygon.rs b/crates/typst/src/visualize/polygon.rs index 14156ce19..3b686f791 100644 --- a/crates/typst/src/visualize/polygon.rs +++ b/crates/typst/src/visualize/polygon.rs @@ -171,6 +171,7 @@ impl Layout for PolygonElem { let shape = Shape { geometry: Geometry::Path(path), stroke, fill }; frame.push(Point::zero(), FrameItem::Shape(shape, self.span())); + frame.meta(styles, false); Ok(Fragment::frame(frame)) } diff --git a/tests/ref/layout/hide.png b/tests/ref/layout/hide.png index 7367e8cef..d89800494 100644 Binary files a/tests/ref/layout/hide.png and b/tests/ref/layout/hide.png differ diff --git a/tests/typ/layout/hide.typ b/tests/typ/layout/hide.typ index a979b24f8..2cd8333e0 100644 --- a/tests/typ/layout/hide.typ +++ b/tests/typ/layout/hide.typ @@ -3,3 +3,74 @@ --- AB #h(1fr) CD \ #hide[A]B #h(1fr) C#hide[D] +--- +Hidden: +#hide[#line(length: 100%)] +#line(length: 100%) +--- +Hidden: +#hide(table(rows: 2, columns: 2)[a][b][c][d]) +#table(rows: 2, columns: 2)[a][b][c][d] +--- +Hidden: +#hide[ + #polygon((20%, 0pt), + (60%, 0pt), + (80%, 2cm), + (0%, 2cm),) +] +#polygon((20%, 0pt), + (60%, 0pt), + (80%, 2cm), + (0%, 2cm),) +--- +#set rect( + inset: 8pt, + fill: rgb("e4e5ea"), + width: 100%, +) + +Hidden: +#hide[ +#grid( + columns: (1fr, 1fr, 2fr), + rows: (auto, 40pt), + gutter: 3pt, + rect[A], + rect[B], + rect[C], + rect(height: 100%)[D], +) +] +#grid( + columns: (1fr, 1fr, 2fr), + rows: (auto, 40pt), + gutter: 3pt, + rect[A], + rect[B], + rect[C], + rect(height: 100%)[D], +) +--- + +Hidden: +#hide[ +- 1 +- 2 + 1. A + 2. B +- 3 +] + + +- 1 +- 2 + 1. A + 2. B +- 3 + +--- +Hidden: +#hide(image("/files/tiger.jpg", width: 5cm, height: 1cm,)) + +#image("/files/tiger.jpg", width: 5cm, height: 1cm,)