+bold normal
+dim normal
+italic normal
+underline normal
+██████
+invert normal
+hidden normal
+strikethrough normal
+all three no bold no italic plain
+
+
+
+
+
diff --git a/crates/anstyle-svg/tests/sgr_off_codes.svg b/crates/anstyle-svg/tests/sgr_off_codes.svg
new file mode 100644
index 00000000..703f4d97
--- /dev/null
+++ b/crates/anstyle-svg/tests/sgr_off_codes.svg
@@ -0,0 +1,49 @@
+
diff --git a/crates/anstyle-svg/tests/sgr_off_codes.vte b/crates/anstyle-svg/tests/sgr_off_codes.vte
new file mode 100644
index 00000000..16011406
--- /dev/null
+++ b/crates/anstyle-svg/tests/sgr_off_codes.vte
@@ -0,0 +1,8 @@
+[1mbold[22m normal
+[2mdim[22m normal
+[3mitalic[23m normal
+[4munderline[24m normal
+[7minvert[27m normal
+[8mhidden[28m normal
+[9mstrikethrough[29m normal
+[1;3;4mall three[22m no bold[23m no italic[24m plain
diff --git a/crates/anstyle-svg/tests/term.rs b/crates/anstyle-svg/tests/term.rs
index df244827..7e934a3c 100644
--- a/crates/anstyle-svg/tests/term.rs
+++ b/crates/anstyle-svg/tests/term.rs
@@ -73,3 +73,57 @@ fn custom_background_color_html() {
snapbox::file!["custom_background_color.html": Text].raw()
);
}
+
+#[test]
+fn sgr_off_codes() {
+ let input = std::fs::read_to_string("tests/sgr_off_codes.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_svg(&input);
+ snapbox::assert_data_eq!(actual, snapbox::file!["sgr_off_codes.svg": Text].raw());
+}
+
+#[test]
+fn sgr_off_codes_html() {
+ let input = std::fs::read_to_string("tests/sgr_off_codes.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_html(&input);
+ snapbox::assert_data_eq!(actual, snapbox::file!["sgr_off_codes.html": Text].raw());
+}
+
+#[test]
+fn underline_subparams() {
+ let input = std::fs::read_to_string("tests/underline_subparams.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_svg(&input);
+ snapbox::assert_data_eq!(
+ actual,
+ snapbox::file!["underline_subparams.svg": Text].raw()
+ );
+}
+
+#[test]
+fn underline_subparams_html() {
+ let input = std::fs::read_to_string("tests/underline_subparams.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_html(&input);
+ snapbox::assert_data_eq!(
+ actual,
+ snapbox::file!["underline_subparams.html": Text].raw()
+ );
+}
+
+#[test]
+fn underline_color_reset() {
+ let input = std::fs::read_to_string("tests/underline_color_reset.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_svg(&input);
+ snapbox::assert_data_eq!(
+ actual,
+ snapbox::file!["underline_color_reset.svg": Text].raw()
+ );
+}
+
+#[test]
+fn underline_color_reset_html() {
+ let input = std::fs::read_to_string("tests/underline_color_reset.vte").unwrap();
+ let actual = anstyle_svg::Term::new().render_html(&input);
+ snapbox::assert_data_eq!(
+ actual,
+ snapbox::file!["underline_color_reset.html": Text].raw()
+ );
+}
diff --git a/crates/anstyle-svg/tests/underline_color_reset.html b/crates/anstyle-svg/tests/underline_color_reset.html
new file mode 100644
index 00000000..b4360bf2
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_color_reset.html
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
+
+
+
+red underline default color underline normal
+orange underline default color underline normal
+blue underline default color underline normal
+
+
+
+
+
diff --git a/crates/anstyle-svg/tests/underline_color_reset.svg b/crates/anstyle-svg/tests/underline_color_reset.svg
new file mode 100644
index 00000000..5ce70e8c
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_color_reset.svg
@@ -0,0 +1,33 @@
+
diff --git a/crates/anstyle-svg/tests/underline_color_reset.vte b/crates/anstyle-svg/tests/underline_color_reset.vte
new file mode 100644
index 00000000..e9d85bdc
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_color_reset.vte
@@ -0,0 +1,3 @@
+[4m[58;2;255;0;0mred underline[59m default color underline[24m normal
+[4m[58;5;202morange underline[59m default color underline[24m normal
+[4m[58:2:0:128:255mblue underline[59m default color underline[24m normal
diff --git a/crates/anstyle-svg/tests/underline_subparams.html b/crates/anstyle-svg/tests/underline_subparams.html
new file mode 100644
index 00000000..710977cc
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_subparams.html
@@ -0,0 +1,38 @@
+
+
+
+
+
+
+
+
+
+
+
+
+underline normal
+double normal
+curly normal
+dotted normal
+dashed normal
+
+
+
+
+
diff --git a/crates/anstyle-svg/tests/underline_subparams.svg b/crates/anstyle-svg/tests/underline_subparams.svg
new file mode 100644
index 00000000..02d3c87c
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_subparams.svg
@@ -0,0 +1,38 @@
+
diff --git a/crates/anstyle-svg/tests/underline_subparams.vte b/crates/anstyle-svg/tests/underline_subparams.vte
new file mode 100644
index 00000000..34bf43be
--- /dev/null
+++ b/crates/anstyle-svg/tests/underline_subparams.vte
@@ -0,0 +1,5 @@
+[4munderline[4:0m normal
+[4:2mdouble[4:0m normal
+[4:3mcurly[4:0m normal
+[4:4mdotted[4:0m normal
+[4:5mdashed[4:0m normal