summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/typst-html/src/encode.rs2
-rw-r--r--tests/ref/html/html-textarea-starting-with-newline.html10
-rw-r--r--tests/suite/html/syntax.typ3
3 files changed, 14 insertions, 1 deletions
diff --git a/crates/typst-html/src/encode.rs b/crates/typst-html/src/encode.rs
index adcb6e03..9c793836 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 00000000..9c234037
--- /dev/null
+++ b/tests/ref/html/html-textarea-starting-with-newline.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ </head>
+ <body><textarea>
+
+enter</textarea></body>
+</html>
diff --git a/tests/suite/html/syntax.typ b/tests/suite/html/syntax.typ
index eb1c8699..4bda0c68 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(