summaryrefslogtreecommitdiff
path: root/crates/typst-html/src
diff options
context:
space:
mode:
Diffstat (limited to 'crates/typst-html/src')
-rw-r--r--crates/typst-html/src/encode.rs15
-rw-r--r--crates/typst-html/src/lib.rs7
2 files changed, 15 insertions, 7 deletions
diff --git a/crates/typst-html/src/encode.rs b/crates/typst-html/src/encode.rs
index 9c793836..84860dbe 100644
--- a/crates/typst-html/src/encode.rs
+++ b/crates/typst-html/src/encode.rs
@@ -3,9 +3,8 @@ use std::fmt::Write;
use typst_library::diag::{bail, At, SourceResult, StrResult};
use typst_library::foundations::Repr;
use typst_library::html::{
- attr, charsets, tag, HtmlDocument, HtmlElement, HtmlNode, HtmlTag,
+ attr, charsets, tag, HtmlDocument, HtmlElement, HtmlFrame, HtmlNode, HtmlTag,
};
-use typst_library::layout::Frame;
use typst_syntax::Span;
/// Encodes an HTML document into a string.
@@ -304,9 +303,15 @@ fn write_escape(w: &mut Writer, c: char) -> StrResult<()> {
}
/// Encode a laid out frame into the writer.
-fn write_frame(w: &mut Writer, frame: &Frame) {
+fn write_frame(w: &mut Writer, frame: &HtmlFrame) {
// FIXME: This string replacement is obviously a hack.
- let svg = typst_svg::svg_frame(frame)
- .replace("<svg class", "<svg style=\"overflow: visible;\" class");
+ let svg = typst_svg::svg_frame(&frame.inner).replace(
+ "<svg class",
+ &format!(
+ "<svg style=\"overflow: visible; width: {}em; height: {}em;\" class",
+ frame.inner.width() / frame.text_size,
+ frame.inner.height() / frame.text_size,
+ ),
+ );
w.buf.push_str(&svg);
}
diff --git a/crates/typst-html/src/lib.rs b/crates/typst-html/src/lib.rs
index 703948f6..49518716 100644
--- a/crates/typst-html/src/lib.rs
+++ b/crates/typst-html/src/lib.rs
@@ -9,7 +9,7 @@ use typst_library::diag::{bail, warning, At, SourceResult};
use typst_library::engine::{Engine, Route, Sink, Traced};
use typst_library::foundations::{Content, StyleChain, Target, TargetElem};
use typst_library::html::{
- attr, tag, FrameElem, HtmlDocument, HtmlElem, HtmlElement, HtmlNode,
+ attr, tag, FrameElem, HtmlDocument, HtmlElem, HtmlElement, HtmlFrame, HtmlNode,
};
use typst_library::introspection::{
Introspector, Locator, LocatorLink, SplitLocator, TagElem,
@@ -246,7 +246,10 @@ fn handle(
styles.chain(&style),
Region::new(Size::splat(Abs::inf()), Axes::splat(false)),
)?;
- output.push(HtmlNode::Frame(frame));
+ output.push(HtmlNode::Frame(HtmlFrame {
+ inner: frame,
+ text_size: TextElem::size_in(styles),
+ }));
} else {
engine.sink.warn(warning!(
child.span(),