diff options
Diffstat (limited to 'crates/typst-html/src')
| -rw-r--r-- | crates/typst-html/src/encode.rs | 15 | ||||
| -rw-r--r-- | crates/typst-html/src/lib.rs | 7 |
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(), |
