diff --git a/crates/typst-html/src/encode.rs b/crates/typst-html/src/encode.rs index adcb6e032..9c7938360 100644 --- a/crates/typst-html/src/encode.rs +++ b/crates/typst-html/src/encode.rs @@ -113,7 +113,7 @@ fn write_element(w: &mut Writer, element: &HtmlElement) -> SourceResult<()> { /// Encodes the children of an element. fn write_children(w: &mut Writer, element: &HtmlElement) -> SourceResult<()> { // See HTML spec ยง 13.1.2.5. - if element.tag == tag::pre && starts_with_newline(element) { + if matches!(element.tag, tag::pre | tag::textarea) && starts_with_newline(element) { w.buf.push('\n'); } diff --git a/tests/ref/html/html-textarea-starting-with-newline.html b/tests/ref/html/html-textarea-starting-with-newline.html new file mode 100644 index 000000000..9c234037d --- /dev/null +++ b/tests/ref/html/html-textarea-starting-with-newline.html @@ -0,0 +1,10 @@ + + +
+ + + + + diff --git a/tests/suite/html/syntax.typ b/tests/suite/html/syntax.typ index eb1c86994..4bda0c686 100644 --- a/tests/suite/html/syntax.typ +++ b/tests/suite/html/syntax.typ @@ -11,6 +11,9 @@ #html.pre("\nhello") #html.pre("\n\nhello") +--- html-textarea-starting-with-newline html --- +#html.textarea("\nenter") + --- html-script html --- // This should be pretty and indented. #html.script(