summaryrefslogtreecommitdiff
path: root/src/library/text
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-06-08 19:31:07 +0200
committerGitHub <noreply@github.com>2022-06-08 19:31:07 +0200
commitcd5a14bc240b21f8f538ff7fc1d116d23611d6c5 (patch)
treef4b8a7e8a941f8653d5061d2f7acc0bfd8d92b13 /src/library/text
parentb905048d4bb497252028df6d21b525fefb6b64c3 (diff)
parent72d3f3fffabe6872eb7839585bea925b89aac6a4 (diff)
Merge pull request #75 from typst/semantics
Frame Role and PDF outline
Diffstat (limited to 'src/library/text')
-rw-r--r--src/library/text/par.rs9
-rw-r--r--src/library/text/raw.rs2
2 files changed, 8 insertions, 3 deletions
diff --git a/src/library/text/par.rs b/src/library/text/par.rs
index 695d8066..41246b00 100644
--- a/src/library/text/par.rs
+++ b/src/library/text/par.rs
@@ -551,11 +551,14 @@ fn prepare<'a>(
} else {
let size = Size::new(regions.first.x, regions.base.y);
let pod = Regions::one(size, regions.base, Spec::splat(false));
+
let mut frame = node.layout(ctx, &pod, styles)?.remove(0);
let shift = styles.get(TextNode::BASELINE);
- if !shift.is_zero() {
- Arc::make_mut(&mut frame).translate(Point::with_y(shift));
+ if !shift.is_zero() || frame.role().map_or(true, Role::is_weak) {
+ let frame = Arc::make_mut(&mut frame);
+ frame.translate(Point::with_y(shift));
+ frame.apply_role(Role::GenericInline);
}
items.push(Item::Frame(frame));
@@ -1063,6 +1066,7 @@ fn stack(
let mut finished = vec![];
let mut first = true;
let mut output = Frame::new(Size::with_x(width));
+ output.apply_role(Role::Paragraph);
// Stack the lines into one frame per region.
for line in lines {
@@ -1072,6 +1076,7 @@ fn stack(
while !regions.first.y.fits(height) && !regions.in_last() {
finished.push(Arc::new(output));
output = Frame::new(Size::with_x(width));
+ output.apply_role(Role::Paragraph);
regions.next();
first = true;
}
diff --git a/src/library/text/raw.rs b/src/library/text/raw.rs
index a24d2170..31db811a 100644
--- a/src/library/text/raw.rs
+++ b/src/library/text/raw.rs
@@ -123,7 +123,7 @@ impl Show for RawNode {
realized = realized.spaced(styles.get(Self::ABOVE), styles.get(Self::BELOW));
}
- Ok(realized.styled_with_map(map))
+ Ok(realized.styled_with_map(map).role(Role::Code))
}
}