diff mbox series

[FFmpeg-devel,2/2] lavf/assenc: normalize line endings to \n

Message ID 20240128223830.57736-2-rcombs@rcombs.me
State New
Headers show
Series [FFmpeg-devel,1/2] lavf/avio_internal: add ffio_write_lines for line ending normalization | expand

Checks

Context Check Description
yinshiyou/configure_loongarch64 warning Failed to apply patch
andriy/configure_x86 warning Failed to apply patch

Commit Message

rcombs Jan. 28, 2024, 10:38 p.m. UTC
Previously, we produced output with either \r\n or mixed line endings.
This was undesirable unto itself, but also made working with patches affecting
FATE output particularly challenging, especially via the mailing list.

Everything that consumes the SSA/ASS format is line-ending-agnostic,
so \n is selected to simplify git/ML usage in FATE.

Extra \r characters at the end of a packet are dropped. These are always
ignored by the renderer anyway.
---
 .gitattributes                          |   1 -
 libavformat/assenc.c                    |  20 ++-
 tests/ref/fate/sub-aqtitle              |  94 ++++++------
 tests/ref/fate/sub-ass-to-ass-transcode | 104 ++++++-------
 tests/ref/fate/sub-cc                   |  32 ++--
 tests/ref/fate/sub-cc-realtime          |  44 +++---
 tests/ref/fate/sub-cc-scte20            |  34 ++---
 tests/ref/fate/sub-charenc              | 128 ++++++++--------
 tests/ref/fate/sub-jacosub              |  50 +++----
 tests/ref/fate/sub-microdvd             |  48 +++---
 tests/ref/fate/sub-movtext              |  34 ++---
 tests/ref/fate/sub-mpl2                 |  36 ++---
 tests/ref/fate/sub-mpsub                |  70 ++++-----
 tests/ref/fate/sub-mpsub-frames         |  32 ++--
 tests/ref/fate/sub-pjs                  |  34 ++---
 tests/ref/fate/sub-realtext             |  38 ++---
 tests/ref/fate/sub-sami                 |  46 +++---
 tests/ref/fate/sub-sami2                | 186 ++++++++++++------------
 tests/ref/fate/sub-srt                  | 102 ++++++-------
 tests/ref/fate/sub-srt-badsyntax        |  48 +++---
 tests/ref/fate/sub-ssa-to-ass-remux     | 158 ++++++++++----------
 tests/ref/fate/sub-stl                  |  62 ++++----
 tests/ref/fate/sub-subviewer            |  34 ++---
 tests/ref/fate/sub-subviewer1           |  48 +++---
 tests/ref/fate/sub-vplayer              |  34 ++---
 tests/ref/fate/sub-webvtt               |  58 ++++----
 tests/ref/fate/sub-webvtt2              |  52 +++----
 27 files changed, 815 insertions(+), 812 deletions(-)
diff mbox series

Patch

diff --git a/.gitattributes b/.gitattributes
index 5a19b963b6..a900528e47 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1 @@ 
 *.pnm -diff -text
-tests/ref/fate/sub-scc eol=crlf
diff --git a/libavformat/assenc.c b/libavformat/assenc.c
index 62ea0745a4..bb18d4f5a4 100644
--- a/libavformat/assenc.c
+++ b/libavformat/assenc.c
@@ -21,6 +21,7 @@ 
 
 #include "libavutil/avstring.h"
 #include "avformat.h"
+#include "avio_internal.h"
 #include "internal.h"
 #include "mux.h"
 
@@ -70,13 +71,11 @@  static int write_header(AVFormatContext *s)
                 ass->trailer = trailer;
         }
 
-        header_size = av_strnlen(par->extradata, header_size);
-        avio_write(s->pb, par->extradata, header_size);
-        if (header_size && par->extradata[header_size - 1] != '\n')
-            avio_write(s->pb, "\r\n", 2);
+        ffio_write_lines(s->pb, par->extradata, header_size, NULL);
+
         ass->ssa_mode = !strstr(par->extradata, "\n[V4+ Styles]");
         if (!strstr(par->extradata, "\n[Events]"))
-            avio_printf(s->pb, "[Events]\r\nFormat: %s, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\r\n",
+            avio_printf(s->pb, "[Events]\nFormat: %s, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text\n",
                         ass->ssa_mode ? "Marked" : "Layer");
     }
 
@@ -96,7 +95,7 @@  static void purge_dialogues(AVFormatContext *s, int force)
                    ass->expected_readorder, dialogue->readorder);
             ass->expected_readorder = dialogue->readorder;
         }
-        avio_print(s->pb, "Dialogue: ", dialogue->line, "\r\n");
+        avio_print(s->pb, "Dialogue: ", dialogue->line, "\n");
         if (dialogue == ass->last_added_dialogue)
             ass->last_added_dialogue = next;
         av_freep(&dialogue->line);
@@ -158,6 +157,7 @@  static int write_packet(AVFormatContext *s, AVPacket *pkt)
     ASSContext *ass = s->priv_data;
 
     long int layer;
+    int text_len;
     char *p = pkt->data;
     int64_t start = pkt->pts;
     int64_t end   = start + pkt->duration;
@@ -188,9 +188,13 @@  static int write_packet(AVFormatContext *s, AVPacket *pkt)
     if (hh1 > 9) hh1 = 9, mm1 = 59, ss1 = 59, ms1 = 99;
     if (hh2 > 9) hh2 = 9, mm2 = 59, ss2 = 59, ms2 = 99;
 
-    dialogue->line = av_asprintf("%s%ld,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%s",
+    text_len = strlen(p);
+    while (text_len > 0 && p[text_len - 1] == '\r' || p[text_len - 1] == '\n')
+        text_len--;
+
+    dialogue->line = av_asprintf("%s%ld,%d:%02d:%02d.%02d,%d:%02d:%02d.%02d,%.*s",
                                  ass->ssa_mode ? "Marked=" : "",
-                                 layer, hh1, mm1, ss1, ms1, hh2, mm2, ss2, ms2, p);
+                                 layer, hh1, mm1, ss1, ms1, hh2, mm2, ss2, ms2, text_len, p);
     if (!dialogue->line) {
         av_free(dialogue);
         return AVERROR(ENOMEM);
diff --git a/tests/ref/fate/sub-aqtitle b/tests/ref/fate/sub-aqtitle
index 2980d39427..d0045ac25d 100644
--- a/tests/ref/fate/sub-aqtitle
+++ b/tests/ref/fate/sub-aqtitle
@@ -1,47 +1,47 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:03:29.92,0:03:31.28,Default,,0,0,0,,Dougu?
-Dialogue: 0,0:03:33.36,0:03:35.76,Default,,0,0,0,,Zlato, jseš v pořádku?
-Dialogue: 0,0:03:37.72,0:03:39.12,Default,,0,0,0,,Měl jsi sny.
-Dialogue: 0,0:03:41.44,0:03:43.32,Default,,0,0,0,,Byly o Marsu?
-Dialogue: 0,0:03:48.92,0:03:50.52,Default,,0,0,0,,Je to lepší?
-Dialogue: 0,0:03:53.12,0:03:54.72,Default,,0,0,0,,Chudinko moje.
-Dialogue: 0,0:03:55.76,0:03:58.08,Default,,0,0,0,,Začíná to být\Nposedlost.
-Dialogue: 0,0:04:05.92,0:04:07.16,Default,,0,0,0,,Byla tam i ona?
-Dialogue: 0,0:04:09.12,0:04:10.48,Default,,0,0,0,,Kdo?
-Dialogue: 0,0:04:12.44,0:04:15.16,Default,,0,0,0,,Ta, o které jsi mi vyprávěl.\NTa bruneta.
-Dialogue: 0,0:04:16.32,0:04:17.52,Default,,0,0,0,,Lori.
-Dialogue: 0,0:04:20.32,0:04:23.16,Default,,0,0,0,,Nemůžu uvěřit\Nže žárlíš na sen.
-Dialogue: 0,0:04:23.84,0:04:26.60,Default,,0,0,0,,- Kdo je ona?\N- Nikdo.
-Dialogue: 0,0:04:26.60,0:04:28.80,Default,,0,0,0,,"Nikdo"? Jak se jmenuje?
-Dialogue: 0,0:04:28.80,0:04:30.24,Default,,0,0,0,,Nevím.
-Dialogue: 0,0:04:31.52,0:04:33.20,Default,,0,0,0,,- Pověz!\N- Nevím!
-Dialogue: 0,0:04:33.20,0:04:35.48,Default,,0,0,0,,Radši bys mi to měl říct!
-Dialogue: 0,0:04:35.48,0:04:39.16,Default,,0,0,0,,To není legrace Dougu.\NZdá se ti o ní každou noc.
-Dialogue: 0,0:04:39.16,0:04:41.84,Default,,0,0,0,,Ale vždy se ráno probudím.
-Dialogue: 0,0:04:41.84,0:04:43.28,Default,,0,0,0,,Nech mě být!
-Dialogue: 0,0:04:45.72,0:04:47.76,Default,,0,0,0,,No tak, zlato.
-Dialogue: 0,0:04:47.76,0:04:50.72,Default,,0,0,0,,Ty víš, že jsi dívkou\Nmých snů.
-Dialogue: 0,0:04:50.72,0:04:52.40,Default,,0,0,0,,Myslíš to vážně?
-Dialogue: 0,0:04:53.48,0:04:55.32,Default,,0,0,0,,To víš že ano.
-Dialogue: 0,0:05:04.40,0:05:07.20,Default,,0,0,0,,Dám ti něco\No čem budeš snít.
-Dialogue: 0,0:05:16.76,0:05:16.92,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
-Dialogue: 0,0:05:16.92,0:05:20.36,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
-Dialogue: 0,0:05:20.36,0:05:24.36,Default,,0,0,0,,jsou naše jediná obrana proti\Npočetní převaze z jižního bloku.
-Dialogue: 0,0:05:24.36,0:05:26.76,Default,,0,0,0,,A další násilí na Marsu...
-Dialogue: 0,0:05:26.76,1:44:16.00,Default,,0,0,0,,[...]
-Dialogue: 0,1:44:16.00,1:44:17.60,Default,,0,0,0,,Co se děje?
-Dialogue: 0,1:44:17.60,1:44:21.28,Default,,0,0,0,,Měl jsem jenom hroznou představu.\NCo když tohle je jenom sen?
-Dialogue: 0,1:44:22.76,1:44:25.68,Default,,0,0,0,,Tak mi dej ryhcle pusu\Nnež se probudíš.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:03:29.92,0:03:31.28,Default,,0,0,0,,Dougu?
+Dialogue: 0,0:03:33.36,0:03:35.76,Default,,0,0,0,,Zlato, jseš v pořádku?
+Dialogue: 0,0:03:37.72,0:03:39.12,Default,,0,0,0,,Měl jsi sny.
+Dialogue: 0,0:03:41.44,0:03:43.32,Default,,0,0,0,,Byly o Marsu?
+Dialogue: 0,0:03:48.92,0:03:50.52,Default,,0,0,0,,Je to lepší?
+Dialogue: 0,0:03:53.12,0:03:54.72,Default,,0,0,0,,Chudinko moje.
+Dialogue: 0,0:03:55.76,0:03:58.08,Default,,0,0,0,,Začíná to být\Nposedlost.
+Dialogue: 0,0:04:05.92,0:04:07.16,Default,,0,0,0,,Byla tam i ona?
+Dialogue: 0,0:04:09.12,0:04:10.48,Default,,0,0,0,,Kdo?
+Dialogue: 0,0:04:12.44,0:04:15.16,Default,,0,0,0,,Ta, o které jsi mi vyprávěl.\NTa bruneta.
+Dialogue: 0,0:04:16.32,0:04:17.52,Default,,0,0,0,,Lori.
+Dialogue: 0,0:04:20.32,0:04:23.16,Default,,0,0,0,,Nemůžu uvěřit\Nže žárlíš na sen.
+Dialogue: 0,0:04:23.84,0:04:26.60,Default,,0,0,0,,- Kdo je ona?\N- Nikdo.
+Dialogue: 0,0:04:26.60,0:04:28.80,Default,,0,0,0,,"Nikdo"? Jak se jmenuje?
+Dialogue: 0,0:04:28.80,0:04:30.24,Default,,0,0,0,,Nevím.
+Dialogue: 0,0:04:31.52,0:04:33.20,Default,,0,0,0,,- Pověz!\N- Nevím!
+Dialogue: 0,0:04:33.20,0:04:35.48,Default,,0,0,0,,Radši bys mi to měl říct!
+Dialogue: 0,0:04:35.48,0:04:39.16,Default,,0,0,0,,To není legrace Dougu.\NZdá se ti o ní každou noc.
+Dialogue: 0,0:04:39.16,0:04:41.84,Default,,0,0,0,,Ale vždy se ráno probudím.
+Dialogue: 0,0:04:41.84,0:04:43.28,Default,,0,0,0,,Nech mě být!
+Dialogue: 0,0:04:45.72,0:04:47.76,Default,,0,0,0,,No tak, zlato.
+Dialogue: 0,0:04:47.76,0:04:50.72,Default,,0,0,0,,Ty víš, že jsi dívkou\Nmých snů.
+Dialogue: 0,0:04:50.72,0:04:52.40,Default,,0,0,0,,Myslíš to vážně?
+Dialogue: 0,0:04:53.48,0:04:55.32,Default,,0,0,0,,To víš že ano.
+Dialogue: 0,0:05:04.40,0:05:07.20,Default,,0,0,0,,Dám ti něco\No čem budeš snít.
+Dialogue: 0,0:05:16.76,0:05:16.92,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
+Dialogue: 0,0:05:16.92,0:05:20.36,Default,,0,0,0,,Premiér se útoku ubránil\Na řekl, že zbraně založené na vesmírných...
+Dialogue: 0,0:05:20.36,0:05:24.36,Default,,0,0,0,,jsou naše jediná obrana proti\Npočetní převaze z jižního bloku.
+Dialogue: 0,0:05:24.36,0:05:26.76,Default,,0,0,0,,A další násilí na Marsu...
+Dialogue: 0,0:05:26.76,1:44:16.00,Default,,0,0,0,,[...]
+Dialogue: 0,1:44:16.00,1:44:17.60,Default,,0,0,0,,Co se děje?
+Dialogue: 0,1:44:17.60,1:44:21.28,Default,,0,0,0,,Měl jsem jenom hroznou představu.\NCo když tohle je jenom sen?
+Dialogue: 0,1:44:22.76,1:44:25.68,Default,,0,0,0,,Tak mi dej ryhcle pusu\Nnež se probudíš.
diff --git a/tests/ref/fate/sub-ass-to-ass-transcode b/tests/ref/fate/sub-ass-to-ass-transcode
index bfc4e95419..0a8fa39f53 100644
--- a/tests/ref/fate/sub-ass-to-ass-transcode
+++ b/tests/ref/fate/sub-ass-to-ass-transcode
@@ -1,55 +1,55 @@ 
-[Script Info]
-; Script generated by Aegisub 3.2.2
-; http://www.aegisub.org/
-Title: Default Aegisub file
-ScriptType: v4.00+
-WrapStyle: 0
-PlayResX: 1280
-PlayResY: 720
-ScaledBorderAndShadow: yes
-Video Zoom: 4
-Video Colorspace: BT.601
-Video Aspect Ratio: c1.77778
-YCbCr Matrix: TV.709
-
-[Aegisub Project Garbage]
-Automation Scripts: ~../../../../Aegisub autoload folder/New Folder/cmconv.lua
-Last Style Storage: Default1
-Audio File: kamisama05-premux.mkv
-Video File: kamisama05-premux.mkv
-Keyframes File: ../Desktop/Keyframe Raws/kamisama05-wr.keyframes.txt
-Video AR Mode: 4
-Video AR Value: 1.777778
-Video Zoom Percent: 0.875000
-Video Position: 306
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,110,110,40,0
-Style: Default2,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,60,60,40,0
-Style: Default - Alt,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A673308,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,8,110,110,40,0
-Style: OP2-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
-Style: OP1-Eng-furigana,Chinacat,20,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,2.5,0.05,2,40,40,30,1
-Style: OP1-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
-Style: OP1-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
-Style: OP1-Eng,Chinacat,39,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,5,0.1,2,40,40,30,1
-Style: OP2-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
-Style: ED1-Romaji,Agency FB,44,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,3,0,7,40,40,30,1
-Style: ED1-Eng,ClaudeSansPlain,40,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,4,0,3,40,40,30,1
-Style: ED1-Eng-furigana,ClaudeSansPlain,20,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,2,0,3,40,40,30,1
-Style: ED1-Romaji-furigana,Agency FB,22,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,1.5,0,7,40,40,30,1
-Style: Signs,Arial,46,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 3,0:00:12.74,0:00:13.49,OP1-Romaji,,0,0,0,fx,{\an5\pos(352,54)\move(352,-101,352,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(365,54)\move(365,-101,365,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(383,54)\move(383,-101,383,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(402,54)\move(402,-101,402,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}a
-Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(416,54)\move(416,-101,416,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
-Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(438,54)\move(438,-101,438,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}k
-Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(455,54)\move(455,-101,455,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}o
-Dialogue: 10,0:23:52.82,0:23:54.80,Default,,0,0,100,,Wing Fling Hazard!
+[Script Info]
+; Script generated by Aegisub 3.2.2
+; http://www.aegisub.org/
+Title: Default Aegisub file
+ScriptType: v4.00+
+WrapStyle: 0
+PlayResX: 1280
+PlayResY: 720
+ScaledBorderAndShadow: yes
+Video Zoom: 4
+Video Colorspace: BT.601
+Video Aspect Ratio: c1.77778
+YCbCr Matrix: TV.709
+
+[Aegisub Project Garbage]
+Automation Scripts: ~../../../../Aegisub autoload folder/New Folder/cmconv.lua
+Last Style Storage: Default1
+Audio File: kamisama05-premux.mkv
+Video File: kamisama05-premux.mkv
+Keyframes File: ../Desktop/Keyframe Raws/kamisama05-wr.keyframes.txt
+Video AR Mode: 4
+Video AR Value: 1.777778
+Video Zoom Percent: 0.875000
+Video Position: 306
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,110,110,40,0
+Style: Default2,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A093346,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,2,60,60,40,0
+Style: Default - Alt,Luxi Sub Sans,48,&H00F9FDFB,&H00003FFF,&H0A673308,&HDC0A0E10,-1,0,0,0,99,100,0,0,1,2.5,1,8,110,110,40,0
+Style: OP2-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
+Style: OP1-Eng-furigana,Chinacat,20,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,2.5,0.05,2,40,40,30,1
+Style: OP1-Romaji-furigana,Chinacat,21,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,2.5,0,8,40,40,30,1
+Style: OP1-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
+Style: OP1-Eng,Chinacat,39,&H003B1A9A,&H000019FF,&H00FFFFFF,&H007857D5,0,0,0,0,96,114,0.5,0,1,5,0.1,2,40,40,30,1
+Style: OP2-Romaji,Chinacat,42,&H003B1A9A,&H00CBCB9F,&H00FFFFFF,&H00000000,0,0,0,0,96,114,0,0,1,5,0,8,40,40,30,1
+Style: ED1-Romaji,Agency FB,44,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,3,0,7,40,40,30,1
+Style: ED1-Eng,ClaudeSansPlain,40,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,4,0,3,40,40,30,1
+Style: ED1-Eng-furigana,ClaudeSansPlain,20,&H00000000,&H00EBDCCD,&H00FFFFFF,&H007857D5,0,0,0,0,90,115,0,0,1,2,0,3,40,40,30,1
+Style: ED1-Romaji-furigana,Agency FB,22,&H00000000,&H00EBDCCD,&H00FFFFFF,&H00000000,0,0,0,0,98,115,0,0,1,1.5,0,7,40,40,30,1
+Style: Signs,Arial,46,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,0,0,5,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 3,0:00:12.74,0:00:13.49,OP1-Romaji,,0,0,0,fx,{\an5\pos(352,54)\move(352,-101,352,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(365,54)\move(365,-101,365,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(383,54)\move(383,-101,383,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}t
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(402,54)\move(402,-101,402,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}a
+Dialogue: 3,0:00:12.78,0:00:14.28,OP1-Romaji,,0,0,0,fx,{\an5\pos(416,54)\move(416,-101,416,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}i
+Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(438,54)\move(438,-101,438,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}k
+Dialogue: 3,0:00:12.78,0:00:15.11,OP1-Romaji,,0,0,0,fx,{\an5\pos(455,54)\move(455,-101,455,54,0,400)\bord3\blur2\2c&HD4B5CB&\fad(300,0)}o
+Dialogue: 10,0:23:52.82,0:23:54.80,Default,,0,0,100,,Wing Fling Hazard!
 
 
 [Aegisub Extradata]
diff --git a/tests/ref/fate/sub-cc b/tests/ref/fate/sub-cc
index 5e4f5ff7fc..f5216b3de2 100644
--- a/tests/ref/fate/sub-cc
+++ b/tests/ref/fate/sub-cc
@@ -1,16 +1,16 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.83,0:00:02.97,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
-Dialogue: 0,0:00:02.97,0:00:04.34,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.83,0:00:02.97,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
+Dialogue: 0,0:00:02.97,0:00:04.34,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
diff --git a/tests/ref/fate/sub-cc-realtime b/tests/ref/fate/sub-cc-realtime
index 22f09d5cdd..bda890bfe5 100644
--- a/tests/ref/fate/sub-cc-realtime
+++ b/tests/ref/fate/sub-cc-realtime
@@ -1,22 +1,22 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.97,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}(
-Dialogue: 0,0:00:01.17,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudibl
-Dialogue: 0,0:00:01.37,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chat
-Dialogue: 0,0:00:01.57,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
-Dialogue: 0,0:00:03.10,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>>
-Dialogue: 0,0:00:03.30,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety rema
-Dialogue: 0,0:00:03.50,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our numb
-Dialogue: 0,0:00:03.70,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.97,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}(
+Dialogue: 0,0:00:01.17,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudibl
+Dialogue: 0,0:00:01.37,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chat
+Dialogue: 0,0:00:01.57,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,44)}({\i1} inaudible radio chatter{\i0} )
+Dialogue: 0,0:00:03.10,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>>
+Dialogue: 0,0:00:03.30,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety rema
+Dialogue: 0,0:00:03.50,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our numb
+Dialogue: 0,0:00:03.70,9:59:59.99,Default,,0,0,0,,{\an7}{\pos(38,28)}({\i1} inaudible radio chatter{\i0} )\N{\an7}{\pos(38,44)}>> Safety remains our number one
diff --git a/tests/ref/fate/sub-cc-scte20 b/tests/ref/fate/sub-cc-scte20
index cded979cb8..49715301de 100644
--- a/tests/ref/fate/sub-cc-scte20
+++ b/tests/ref/fate/sub-cc-scte20
@@ -1,17 +1,17 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:01.44,Default,,0,0,0,,{\an7}{\pos(48,182)}BESIDES THE 
-Dialogue: 0,0:00:01.43,0:00:03.93,Default,,0,0,0,,{\an7}{\pos(38,166)}\hBESIDES THE \N{\an7}{\pos(38,197)}SPENDING AND THIS, IS THAT CAR 
-Dialogue: 0,0:00:03.94,0:00:06.31,Default,,0,0,0,,{\an7}{\pos(38,182)}SPENDING AND THIS, IS THAT CAR \N{\an7}{\pos(38,197)}MANUFACTURERS ARE ABOUT AS 
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Monospace,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,3,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:01.44,Default,,0,0,0,,{\an7}{\pos(48,182)}BESIDES THE 
+Dialogue: 0,0:00:01.43,0:00:03.93,Default,,0,0,0,,{\an7}{\pos(38,166)}\hBESIDES THE \N{\an7}{\pos(38,197)}SPENDING AND THIS, IS THAT CAR 
+Dialogue: 0,0:00:03.94,0:00:06.31,Default,,0,0,0,,{\an7}{\pos(38,182)}SPENDING AND THIS, IS THAT CAR \N{\an7}{\pos(38,197)}MANUFACTURERS ARE ABOUT AS 
diff --git a/tests/ref/fate/sub-charenc b/tests/ref/fate/sub-charenc
index 67e209856f..8d5d188a4e 100644
--- a/tests/ref/fate/sub-charenc
+++ b/tests/ref/fate/sub-charenc
@@ -1,64 +1,64 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:32.95,0:00:38.25,Default,,0,0,0,,КОЛУМБИА ПИКЧЪРС - АЗИЯ\NСОНИ ПИКЧЪРС и Е.Е. Co.\Nпредставят
-Dialogue: 0,0:00:52.76,0:00:58.60,Default,,0,0,0,,Т И Г Ъ Р   И   Д Р А К О Н
-Dialogue: 0,0:01:22.17,0:01:24.05,Default,,0,0,0,,Учителят Ли е тук.
-Dialogue: 0,0:01:45.48,0:01:47.32,Default,,0,0,0,,Шу Лиен!
-Dialogue: 0,0:01:54.53,0:01:57.24,Default,,0,0,0,,Ли Му Бай е тук.
-Dialogue: 0,0:02:05.83,0:02:09.00,Default,,0,0,0,,- Как вървят нещата?\N- Добре. Моля, влезте!
-Dialogue: 0,0:02:23.48,0:02:26.53,Default,,0,0,0,,Му Бай...\NМина много време.
-Dialogue: 0,0:02:26.73,0:02:28.11,Default,,0,0,0,,Така е.
-Dialogue: 0,0:02:28.57,0:02:31.41,Default,,0,0,0,,- Как върви бизнесът?\N- Добре.
-Dialogue: 0,0:02:31.61,0:02:33.90,Default,,0,0,0,,- А ти как си?\N- Добре.
-Dialogue: 0,0:02:40.16,0:02:42.79,Default,,0,0,0,,Монахът Дзенг каза,\Nче си в планината Удан.
-Dialogue: 0,0:02:43.04,0:02:46.54,Default,,0,0,0,,Каза, че практикуваш\Nдълбока медитация.
-Dialogue: 0,0:02:48.84,0:02:50.68,Default,,0,0,0,,Сигурно в планината\Nе много спокойно.
-Dialogue: 0,0:02:51.25,0:02:53.46,Default,,0,0,0,,Завиждам ти.
-Dialogue: 0,0:02:53.67,0:02:58.34,Default,,0,0,0,,Имам толкова много работа,\Nпочти не ми остава\Nвреме за почивка.
-Dialogue: 0,0:03:00.26,0:03:03.89,Default,,0,0,0,,Оставих обучението рано.
-Dialogue: 0,0:03:05.69,0:03:11.28,Default,,0,0,0,,Защо? Ти си боец на Удан.\NОбучението е всичко.
-Dialogue: 0,0:03:11.90,0:03:14.86,Default,,0,0,0,,По време на медитация…
-Dialogue: 0,0:03:15.07,0:03:18.49,Default,,0,0,0,,стигнах до място,\Nкъдето имаше дълбока тишина...
-Dialogue: 0,0:03:19.87,0:03:22.79,Default,,0,0,0,,бях обграден от светлина...
-Dialogue: 0,0:03:23.41,0:03:28.08,Default,,0,0,0,,времето и пространството изчезнаха.
-Dialogue: 0,0:03:28.71,0:03:34.09,Default,,0,0,0,,Достигнах до състояние, за което\Nучителят не ми беше казвал.
-Dialogue: 0,0:03:37.05,0:03:39.14,Default,,0,0,0,,Постигнал си просветление?
-Dialogue: 0,0:03:39.34,0:03:41.22,Default,,0,0,0,,Не.
-Dialogue: 0,0:03:41.72,0:03:45.81,Default,,0,0,0,,Не почувствах блаженството\Nна просветлението.
-Dialogue: 0,0:03:46.02,0:03:52.86,Default,,0,0,0,,Вместо това... ме обгърна\Nбезкрайна мъка.
-Dialogue: 0,0:03:53.40,0:03:56.57,Default,,0,0,0,,Не можах да издържа.
-Dialogue: 0,0:03:57.49,0:03:59.74,Default,,0,0,0,,Прекъснах медитацията си.
-Dialogue: 0,0:03:59.95,0:04:02.24,Default,,0,0,0,,Не можах да продължа.
-Dialogue: 0,0:04:03.20,0:04:07.79,Default,,0,0,0,,Нещо...\Nме дърпаше назад.
-Dialogue: 0,0:04:09.62,0:04:10.91,Default,,0,0,0,,Какво беше?
-Dialogue: 0,0:04:15.46,0:04:18.00,Default,,0,0,0,,Нещо, от което не\Nмога да се освободя.
-Dialogue: 0,0:04:23.39,0:04:24.68,Default,,0,0,0,,Скоро ли ще тръгваш?
-Dialogue: 0,0:04:26.77,0:04:30.27,Default,,0,0,0,,Подготвяме охрана\Nза една доставка...
-Dialogue: 0,0:04:30.48,0:04:31.94,Default,,0,0,0,,за Пекин.
-Dialogue: 0,0:04:32.56,0:04:34.10,Default,,0,0,0,,Мога ли да те помоля...
-Dialogue: 0,0:04:35.07,0:04:38.82,Default,,0,0,0,,да занесеш нещо на господин Те.
-Dialogue: 0,0:04:44.28,0:04:48.12,Default,,0,0,0,,Зеленият меч на Съдбата!?\NДаваш го на господин Те!?
-Dialogue: 0,0:04:48.37,0:04:52.67,Default,,0,0,0,,Да. Той винаги е бил\Nнашият най-голям покровител.
-Dialogue: 0,0:04:52.88,0:04:56.55,Default,,0,0,0,,Не разбирам.\NКак можеш да се разделиш с него?
-Dialogue: 0,0:04:56.76,0:04:59.93,Default,,0,0,0,,Той винаги е бил с теб.
-Dialogue: 0,0:05:01.18,0:05:05.52,Default,,0,0,0,,Твърде много хора са\Nзагинали от това острие.
-Dialogue: 0,0:05:09.68,0:05:14.52,Default,,0,0,0,,Чисто е единствено защото\Nкръвта се отмива лесно.
-Dialogue: 0,0:05:15.40,0:05:20.61,Default,,0,0,0,,Ти го използваш справедливо.\NДостоен си за него.
-Dialogue: 0,0:05:23.66,0:05:27.37,Default,,0,0,0,,Дойде време\Nда го оставя.
-Dialogue: 0,0:05:27.58,0:05:31.21,Default,,0,0,0,,Е, какво ще правиш\Nот сега нататък?
-Dialogue: 0,0:05:34.71,0:05:37.50,Default,,0,0,0,,Ела с мен в Пекин.
-Dialogue: 0,0:05:37.71,0:05:41.42,Default,,0,0,0,,Лично ще дадеш меча\Nна господин Те.
-Dialogue: 0,0:05:41.68,0:05:44.89,Default,,0,0,0,,Ще бъде както преди.
-Dialogue: 0,0:05:47.01,0:05:51.68,Default,,0,0,0,,Първо трябва да отида\Nна гроба на учителя си.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:32.95,0:00:38.25,Default,,0,0,0,,КОЛУМБИА ПИКЧЪРС - АЗИЯ\NСОНИ ПИКЧЪРС и Е.Е. Co.\Nпредставят
+Dialogue: 0,0:00:52.76,0:00:58.60,Default,,0,0,0,,Т И Г Ъ Р   И   Д Р А К О Н
+Dialogue: 0,0:01:22.17,0:01:24.05,Default,,0,0,0,,Учителят Ли е тук.
+Dialogue: 0,0:01:45.48,0:01:47.32,Default,,0,0,0,,Шу Лиен!
+Dialogue: 0,0:01:54.53,0:01:57.24,Default,,0,0,0,,Ли Му Бай е тук.
+Dialogue: 0,0:02:05.83,0:02:09.00,Default,,0,0,0,,- Как вървят нещата?\N- Добре. Моля, влезте!
+Dialogue: 0,0:02:23.48,0:02:26.53,Default,,0,0,0,,Му Бай...\NМина много време.
+Dialogue: 0,0:02:26.73,0:02:28.11,Default,,0,0,0,,Така е.
+Dialogue: 0,0:02:28.57,0:02:31.41,Default,,0,0,0,,- Как върви бизнесът?\N- Добре.
+Dialogue: 0,0:02:31.61,0:02:33.90,Default,,0,0,0,,- А ти как си?\N- Добре.
+Dialogue: 0,0:02:40.16,0:02:42.79,Default,,0,0,0,,Монахът Дзенг каза,\Nче си в планината Удан.
+Dialogue: 0,0:02:43.04,0:02:46.54,Default,,0,0,0,,Каза, че практикуваш\Nдълбока медитация.
+Dialogue: 0,0:02:48.84,0:02:50.68,Default,,0,0,0,,Сигурно в планината\Nе много спокойно.
+Dialogue: 0,0:02:51.25,0:02:53.46,Default,,0,0,0,,Завиждам ти.
+Dialogue: 0,0:02:53.67,0:02:58.34,Default,,0,0,0,,Имам толкова много работа,\Nпочти не ми остава\Nвреме за почивка.
+Dialogue: 0,0:03:00.26,0:03:03.89,Default,,0,0,0,,Оставих обучението рано.
+Dialogue: 0,0:03:05.69,0:03:11.28,Default,,0,0,0,,Защо? Ти си боец на Удан.\NОбучението е всичко.
+Dialogue: 0,0:03:11.90,0:03:14.86,Default,,0,0,0,,По време на медитация…
+Dialogue: 0,0:03:15.07,0:03:18.49,Default,,0,0,0,,стигнах до място,\Nкъдето имаше дълбока тишина...
+Dialogue: 0,0:03:19.87,0:03:22.79,Default,,0,0,0,,бях обграден от светлина...
+Dialogue: 0,0:03:23.41,0:03:28.08,Default,,0,0,0,,времето и пространството изчезнаха.
+Dialogue: 0,0:03:28.71,0:03:34.09,Default,,0,0,0,,Достигнах до състояние, за което\Nучителят не ми беше казвал.
+Dialogue: 0,0:03:37.05,0:03:39.14,Default,,0,0,0,,Постигнал си просветление?
+Dialogue: 0,0:03:39.34,0:03:41.22,Default,,0,0,0,,Не.
+Dialogue: 0,0:03:41.72,0:03:45.81,Default,,0,0,0,,Не почувствах блаженството\Nна просветлението.
+Dialogue: 0,0:03:46.02,0:03:52.86,Default,,0,0,0,,Вместо това... ме обгърна\Nбезкрайна мъка.
+Dialogue: 0,0:03:53.40,0:03:56.57,Default,,0,0,0,,Не можах да издържа.
+Dialogue: 0,0:03:57.49,0:03:59.74,Default,,0,0,0,,Прекъснах медитацията си.
+Dialogue: 0,0:03:59.95,0:04:02.24,Default,,0,0,0,,Не можах да продължа.
+Dialogue: 0,0:04:03.20,0:04:07.79,Default,,0,0,0,,Нещо...\Nме дърпаше назад.
+Dialogue: 0,0:04:09.62,0:04:10.91,Default,,0,0,0,,Какво беше?
+Dialogue: 0,0:04:15.46,0:04:18.00,Default,,0,0,0,,Нещо, от което не\Nмога да се освободя.
+Dialogue: 0,0:04:23.39,0:04:24.68,Default,,0,0,0,,Скоро ли ще тръгваш?
+Dialogue: 0,0:04:26.77,0:04:30.27,Default,,0,0,0,,Подготвяме охрана\Nза една доставка...
+Dialogue: 0,0:04:30.48,0:04:31.94,Default,,0,0,0,,за Пекин.
+Dialogue: 0,0:04:32.56,0:04:34.10,Default,,0,0,0,,Мога ли да те помоля...
+Dialogue: 0,0:04:35.07,0:04:38.82,Default,,0,0,0,,да занесеш нещо на господин Те.
+Dialogue: 0,0:04:44.28,0:04:48.12,Default,,0,0,0,,Зеленият меч на Съдбата!?\NДаваш го на господин Те!?
+Dialogue: 0,0:04:48.37,0:04:52.67,Default,,0,0,0,,Да. Той винаги е бил\Nнашият най-голям покровител.
+Dialogue: 0,0:04:52.88,0:04:56.55,Default,,0,0,0,,Не разбирам.\NКак можеш да се разделиш с него?
+Dialogue: 0,0:04:56.76,0:04:59.93,Default,,0,0,0,,Той винаги е бил с теб.
+Dialogue: 0,0:05:01.18,0:05:05.52,Default,,0,0,0,,Твърде много хора са\Nзагинали от това острие.
+Dialogue: 0,0:05:09.68,0:05:14.52,Default,,0,0,0,,Чисто е единствено защото\Nкръвта се отмива лесно.
+Dialogue: 0,0:05:15.40,0:05:20.61,Default,,0,0,0,,Ти го използваш справедливо.\NДостоен си за него.
+Dialogue: 0,0:05:23.66,0:05:27.37,Default,,0,0,0,,Дойде време\Nда го оставя.
+Dialogue: 0,0:05:27.58,0:05:31.21,Default,,0,0,0,,Е, какво ще правиш\Nот сега нататък?
+Dialogue: 0,0:05:34.71,0:05:37.50,Default,,0,0,0,,Ела с мен в Пекин.
+Dialogue: 0,0:05:37.71,0:05:41.42,Default,,0,0,0,,Лично ще дадеш меча\Nна господин Те.
+Dialogue: 0,0:05:41.68,0:05:44.89,Default,,0,0,0,,Ще бъде както преди.
+Dialogue: 0,0:05:47.01,0:05:51.68,Default,,0,0,0,,Първо трябва да отида\Nна гроба на учителя си.
diff --git a/tests/ref/fate/sub-jacosub b/tests/ref/fate/sub-jacosub
index 9f555fb747..9c8d9cbdf6 100644
--- a/tests/ref/fate/sub-jacosub
+++ b/tests/ref/fate/sub-jacosub
@@ -1,25 +1,25 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.12,0:00:04.12,Default,,0,0,0,,{\an5}JACOsub\N\NThis script demonstrates some of the capabilities of JACOsub.
-Dialogue: 0,0:00:04.12,0:00:06.62,Default,,0,0,0,,{\an8}Text may be positioned at the top,
-Dialogue: 0,0:00:05.12,0:00:07.22,Default,,0,0,0,,{\an5}middle,
-Dialogue: 0,0:00:06.12,0:00:07.82,Default,,0,0,0,,{\an2}or bottom of the screen.
-Dialogue: 0,0:00:08.12,0:00:11.12,Default,,0,0,0,,{\an5}{this is a comment} (And, you just saw, {another comment} timing ranges for different lines of text.
-Dialogue: 0,0:00:11.12,0:00:13.62,Default,,0,0,0,,{\an1}Within margin constraints\Nthat you set, text may be\Nleft justified,
-Dialogue: 0,0:00:13.62,0:00:14.87,Default,,0,0,0,,{\an2}{the JC is redundant - it's the default}center\Njustified,
-Dialogue: 0,0:00:14.87,0:00:16.12,Default,,0,0,0,,{\an3}and also\Nright justified.
-Dialogue: 0,0:00:22.42,0:00:27.92,Default,,0,0,0,,Text may appear in different styles\N(Normal, {\b1}Bold{\r}, {\i1}Italic{\r})
-Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,{\an5}\N\NAt that time, you may press any key to return to the Editor.
-Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,OK, this script will be finished when the screen goes blank.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.12,0:00:04.12,Default,,0,0,0,,{\an5}JACOsub\N\NThis script demonstrates some of the capabilities of JACOsub.
+Dialogue: 0,0:00:04.12,0:00:06.62,Default,,0,0,0,,{\an8}Text may be positioned at the top,
+Dialogue: 0,0:00:05.12,0:00:07.22,Default,,0,0,0,,{\an5}middle,
+Dialogue: 0,0:00:06.12,0:00:07.82,Default,,0,0,0,,{\an2}or bottom of the screen.
+Dialogue: 0,0:00:08.12,0:00:11.12,Default,,0,0,0,,{\an5}{this is a comment} (And, you just saw, {another comment} timing ranges for different lines of text.
+Dialogue: 0,0:00:11.12,0:00:13.62,Default,,0,0,0,,{\an1}Within margin constraints\Nthat you set, text may be\Nleft justified,
+Dialogue: 0,0:00:13.62,0:00:14.87,Default,,0,0,0,,{\an2}{the JC is redundant - it's the default}center\Njustified,
+Dialogue: 0,0:00:14.87,0:00:16.12,Default,,0,0,0,,{\an3}and also\Nright justified.
+Dialogue: 0,0:00:22.42,0:00:27.92,Default,,0,0,0,,Text may appear in different styles\N(Normal, {\b1}Bold{\r}, {\i1}Italic{\r})
+Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,{\an5}\N\NAt that time, you may press any key to return to the Editor.
+Dialogue: 0,0:01:16.12,0:01:21.12,Default,,0,0,0,,OK, this script will be finished when the screen goes blank.
diff --git a/tests/ref/fate/sub-microdvd b/tests/ref/fate/sub-microdvd
index fa418f53db..cd12c65652 100644
--- a/tests/ref/fate/sub-microdvd
+++ b/tests/ref/fate/sub-microdvd
@@ -1,24 +1,24 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Comic Sans MS,30,&H123456,&H123456,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:40.00,0:00:52.00,Default,,0,0,0,,{\c&H345678&}foo{\c}\N{\c&HABCDEF&}bar{\c}\Nbla
-Dialogue: 0,0:00:52.00,0:00:56.00,Default,,0,0,0,,{\u1}{\s1}{\i1}{\b1}italic bold underline strike{\s0}{\u0}\Nitalic bold no-underline no-strike
-Dialogue: 0,0:00:56.00,0:01:00.00,Default,,0,0,0,,back to
-Dialogue: 0,0:01:00.00,0:01:04.00,Default,,0,0,0,,the future
-Dialogue: 0,0:01:20.00,0:01:24.92,Default,,0,0,0,,{\pos(10,20)}Some more crazy stuff
-Dialogue: 0,0:02:14.00,0:02:15.60,Default,,0,0,0,,this subtitle...
-Dialogue: 0,0:02:15.60,0:02:40.00,Default,,0,0,0,,...continues up to...
-Dialogue: 0,0:02:40.00,0:03:00.00,Default,,0,0,0,,this one.
-Dialogue: 0,0:03:04.00,0:03:12.00,Default,,0,0,0,,and now...
-Dialogue: 0,0:03:12.00,9:59:59.99,Default,,0,0,0,,...to the end of the presentation
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Comic Sans MS,30,&H123456,&H123456,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:40.00,0:00:52.00,Default,,0,0,0,,{\c&H345678&}foo{\c}\N{\c&HABCDEF&}bar{\c}\Nbla
+Dialogue: 0,0:00:52.00,0:00:56.00,Default,,0,0,0,,{\u1}{\s1}{\i1}{\b1}italic bold underline strike{\s0}{\u0}\Nitalic bold no-underline no-strike
+Dialogue: 0,0:00:56.00,0:01:00.00,Default,,0,0,0,,back to
+Dialogue: 0,0:01:00.00,0:01:04.00,Default,,0,0,0,,the future
+Dialogue: 0,0:01:20.00,0:01:24.92,Default,,0,0,0,,{\pos(10,20)}Some more crazy stuff
+Dialogue: 0,0:02:14.00,0:02:15.60,Default,,0,0,0,,this subtitle...
+Dialogue: 0,0:02:15.60,0:02:40.00,Default,,0,0,0,,...continues up to...
+Dialogue: 0,0:02:40.00,0:03:00.00,Default,,0,0,0,,this one.
+Dialogue: 0,0:03:04.00,0:03:12.00,Default,,0,0,0,,and now...
+Dialogue: 0,0:03:12.00,9:59:59.99,Default,,0,0,0,,...to the end of the presentation
diff --git a/tests/ref/fate/sub-movtext b/tests/ref/fate/sub-movtext
index f96af3f8cf..ad8af98d50 100644
--- a/tests/ref/fate/sub-movtext
+++ b/tests/ref/fate/sub-movtext
@@ -1,17 +1,17 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Serif,18,&Hffffff,&Hffffff,&Hff000000,&Hff000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.97,0:00:02.54,Default,,0,0,0,,- Test 1.\N- Test 2.
-Dialogue: 0,0:00:03.05,0:00:04.74,Default,,0,0,0,,Test 3.
-Dialogue: 0,0:00:05.85,0:00:08.14,Default,,0,0,0,,- Test 4.\N- Test 5.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Serif,18,&Hffffff,&Hffffff,&Hff000000,&Hff000000,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.97,0:00:02.54,Default,,0,0,0,,- Test 1.\N- Test 2.
+Dialogue: 0,0:00:03.05,0:00:04.74,Default,,0,0,0,,Test 3.
+Dialogue: 0,0:00:05.85,0:00:08.14,Default,,0,0,0,,- Test 4.\N- Test 5.
diff --git a/tests/ref/fate/sub-mpl2 b/tests/ref/fate/sub-mpl2
index f4e46e48e9..ad9e36d10d 100644
--- a/tests/ref/fate/sub-mpl2
+++ b/tests/ref/fate/sub-mpl2
@@ -1,18 +1,18 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,Foo\Nbar\Nbla
-Dialogue: 0,0:00:04.10,0:00:05.30,Default,,0,0,0,,{\i1}italic{\r}\N{\b1}bold{\r}\N{\b1}{\i1}italicbold
-Dialogue: 0,0:00:05.30,0:00:07.20,Default,,0,0,0,,{\u1}underline{\r}\Nnormal
-Dialogue: 0,0:00:08.40,0:00:12.80,Default,,0,0,0,,hello
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:01.20,Default,,0,0,0,,Foo\Nbar\Nbla
+Dialogue: 0,0:00:04.10,0:00:05.30,Default,,0,0,0,,{\i1}italic{\r}\N{\b1}bold{\r}\N{\b1}{\i1}italicbold
+Dialogue: 0,0:00:05.30,0:00:07.20,Default,,0,0,0,,{\u1}underline{\r}\Nnormal
+Dialogue: 0,0:00:08.40,0:00:12.80,Default,,0,0,0,,hello
diff --git a/tests/ref/fate/sub-mpsub b/tests/ref/fate/sub-mpsub
index 28c36ea40c..2a66bf85b3 100644
--- a/tests/ref/fate/sub-mpsub
+++ b/tests/ref/fate/sub-mpsub
@@ -1,35 +1,35 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:15.00,0:00:18.00,Default,,0,0,0,,A long, long time ago...
-Dialogue: 0,0:00:18.00,0:00:21.00,Default,,0,0,0,,in a galaxy far away...
-Dialogue: 0,0:00:21.00,0:00:24.00,Default,,0,0,0,,Naboo was under an attack.
-Dialogue: 0,0:00:25.00,0:00:27.50,Default,,0,0,0,,And I thought me and\NQui-Gon Jinn could
-Dialogue: 0,0:00:27.50,0:00:30.00,Default,,0,0,0,,talk the Federation into
-Dialogue: 0,0:00:30.00,0:00:34.00,Default,,0,0,0,,...maybe cutting them a\Nlittle slack.
-Dialogue: 0,0:00:36.00,0:00:39.00,Default,,0,0,0,,But their response, it\Ndidn't thrill us,
-Dialogue: 0,0:00:39.00,0:00:42.00,Default,,0,0,0,,They locked the doors,\Nand tried to kill us.
-Dialogue: 0,0:00:42.00,0:00:44.50,Default,,0,0,0,,We escaped from that gas,
-Dialogue: 0,0:00:44.50,0:00:48.00,Default,,0,0,0,,then met Jar-jar and\NBoss-Nass.
-Dialogue: 0,0:00:49.00,0:00:55.00,Default,,0,0,0,,We took a bongo from the\Nscene and we went to\NTheed to see the Queen.
-Dialogue: 0,0:00:55.00,0:01:00.00,Default,,0,0,0,,We all wound' up on\NTatooine.
-Dialogue: 0,0:01:00.00,0:01:06.00,Default,,0,0,0,,That's where, we've found\Nthis boy.
-Dialogue: 0,0:01:06.00,0:01:10.00,Default,,0,0,0,,Oh my, my this here\NAnakin guy,
-Dialogue: 0,0:01:10.00,0:01:15.00,Default,,0,0,0,,maybe Vader someday\Nlater now he's just\Na small fry.
-Dialogue: 0,0:01:15.00,0:01:19.00,Default,,0,0,0,,And he left his home and\Nkissed his mommy goodbye,
-Dialogue: 0,0:01:19.00,0:01:24.00,Default,,0,0,0,,singing "Soon I'm gonna be\Na Jedi!"
-Dialogue: 0,0:01:30.00,0:01:36.00,Default,,0,0,0,,Did you know this junkyard\Nslave isn't even old enough\Nto shave,
-Dialogue: 0,0:01:36.00,0:01:39.00,Default,,0,0,0,,but he can use the Force,\Nthey say.
-Dialogue: 0,0:01:40.00,0:01:46.00,Default,,0,0,0,,Ahh, do you see him hitting\Non the queen though he's\Njust nine and she's fourteen
-Dialogue: 0,0:01:46.00,0:01:52.00,Default,,0,0,0,,yeah, he's probably gonna\Nmarry her, someday!
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:15.00,0:00:18.00,Default,,0,0,0,,A long, long time ago...
+Dialogue: 0,0:00:18.00,0:00:21.00,Default,,0,0,0,,in a galaxy far away...
+Dialogue: 0,0:00:21.00,0:00:24.00,Default,,0,0,0,,Naboo was under an attack.
+Dialogue: 0,0:00:25.00,0:00:27.50,Default,,0,0,0,,And I thought me and\NQui-Gon Jinn could
+Dialogue: 0,0:00:27.50,0:00:30.00,Default,,0,0,0,,talk the Federation into
+Dialogue: 0,0:00:30.00,0:00:34.00,Default,,0,0,0,,...maybe cutting them a\Nlittle slack.
+Dialogue: 0,0:00:36.00,0:00:39.00,Default,,0,0,0,,But their response, it\Ndidn't thrill us,
+Dialogue: 0,0:00:39.00,0:00:42.00,Default,,0,0,0,,They locked the doors,\Nand tried to kill us.
+Dialogue: 0,0:00:42.00,0:00:44.50,Default,,0,0,0,,We escaped from that gas,
+Dialogue: 0,0:00:44.50,0:00:48.00,Default,,0,0,0,,then met Jar-jar and\NBoss-Nass.
+Dialogue: 0,0:00:49.00,0:00:55.00,Default,,0,0,0,,We took a bongo from the\Nscene and we went to\NTheed to see the Queen.
+Dialogue: 0,0:00:55.00,0:01:00.00,Default,,0,0,0,,We all wound' up on\NTatooine.
+Dialogue: 0,0:01:00.00,0:01:06.00,Default,,0,0,0,,That's where, we've found\Nthis boy.
+Dialogue: 0,0:01:06.00,0:01:10.00,Default,,0,0,0,,Oh my, my this here\NAnakin guy,
+Dialogue: 0,0:01:10.00,0:01:15.00,Default,,0,0,0,,maybe Vader someday\Nlater now he's just\Na small fry.
+Dialogue: 0,0:01:15.00,0:01:19.00,Default,,0,0,0,,And he left his home and\Nkissed his mommy goodbye,
+Dialogue: 0,0:01:19.00,0:01:24.00,Default,,0,0,0,,singing "Soon I'm gonna be\Na Jedi!"
+Dialogue: 0,0:01:30.00,0:01:36.00,Default,,0,0,0,,Did you know this junkyard\Nslave isn't even old enough\Nto shave,
+Dialogue: 0,0:01:36.00,0:01:39.00,Default,,0,0,0,,but he can use the Force,\Nthey say.
+Dialogue: 0,0:01:40.00,0:01:46.00,Default,,0,0,0,,Ahh, do you see him hitting\Non the queen though he's\Njust nine and she's fourteen
+Dialogue: 0,0:01:46.00,0:01:52.00,Default,,0,0,0,,yeah, he's probably gonna\Nmarry her, someday!
diff --git a/tests/ref/fate/sub-mpsub-frames b/tests/ref/fate/sub-mpsub-frames
index 44a23b273a..ab9d5a78b2 100644
--- a/tests/ref/fate/sub-mpsub-frames
+++ b/tests/ref/fate/sub-mpsub-frames
@@ -1,16 +1,16 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:01.00,0:00:02.50,Default,,0,0,0,,Start at 1sec,\Nlast 1.5 seconds
-Dialogue: 0,0:00:02.54,0:00:11.54,Default,,0,0,0,,One frame later,\Nduring 9 seconds
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:01.00,0:00:02.50,Default,,0,0,0,,Start at 1sec,\Nlast 1.5 seconds
+Dialogue: 0,0:00:02.54,0:00:11.54,Default,,0,0,0,,One frame later,\Nduring 9 seconds
diff --git a/tests/ref/fate/sub-pjs b/tests/ref/fate/sub-pjs
index 0eb6880a14..c374aa276c 100644
--- a/tests/ref/fate/sub-pjs
+++ b/tests/ref/fate/sub-pjs
@@ -1,17 +1,17 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:04:04.70,0:04:11.30,Default,,0,0,0,,You should come to the Drama Club, too.
-Dialogue: 0,0:04:11.30,0:04:19.40,Default,,0,0,0,,Yeah. The Drama Club is worried\Nthat you haven't been coming.
-Dialogue: 0,0:04:20.30,0:04:27.50,Default,,0,0,0,,I see. Sorry, I'll drop by next time.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:04:04.70,0:04:11.30,Default,,0,0,0,,You should come to the Drama Club, too.
+Dialogue: 0,0:04:11.30,0:04:19.40,Default,,0,0,0,,Yeah. The Drama Club is worried\Nthat you haven't been coming.
+Dialogue: 0,0:04:20.30,0:04:27.50,Default,,0,0,0,,I see. Sorry, I'll drop by next time.
diff --git a/tests/ref/fate/sub-realtext b/tests/ref/fate/sub-realtext
index 347a8c0eab..126011affd 100644
--- a/tests/ref/fate/sub-realtext
+++ b/tests/ref/fate/sub-realtext
@@ -1,19 +1,19 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,Mary had a little lamb, \N
-Dialogue: 0,0:00:03.00,0:00:18.00,Default,,0,0,0,,little lamb, \N
-Dialogue: 0,0:00:06.99,0:00:21.99,Default,,0,0,0,,little lamb, \N
-Dialogue: 0,0:00:09.00,0:00:23.00,Default,,0,0,0,,Mary had a little lamb \N
-Dialogue: 0,0:00:12.34,0:00:27.34,Default,,0,0,0,,whose fleece was white as snow. 
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,Mary had a little lamb, \N
+Dialogue: 0,0:00:03.00,0:00:18.00,Default,,0,0,0,,little lamb, \N
+Dialogue: 0,0:00:06.99,0:00:21.99,Default,,0,0,0,,little lamb, \N
+Dialogue: 0,0:00:09.00,0:00:23.00,Default,,0,0,0,,Mary had a little lamb \N
+Dialogue: 0,0:00:12.34,0:00:27.34,Default,,0,0,0,,whose fleece was white as snow. 
diff --git a/tests/ref/fate/sub-sami b/tests/ref/fate/sub-sami
index 7c1eff3bcc..a119db019a 100644
--- a/tests/ref/fate/sub-sami
+++ b/tests/ref/fate/sub-sami
@@ -1,23 +1,23 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:00.01,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\N
-Dialogue: 0,0:00:00.01,0:00:08.80,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\NLet the word go forth, from this time and place to friend and foe alike that the torch
-Dialogue: 0,0:00:08.80,0:00:19.50,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nhas been passed to a new generation of Americans, born in this century, tempered by war,
-Dialogue: 0,0:00:19.50,0:00:28.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Ndisciplined by a hard and bitter peace, proud of our ancient heritage, and unwilling to witness
-Dialogue: 0,0:00:28.00,0:00:38.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nor permit the slow undoing of those human rights to which this nation has always
-Dialogue: 0,0:00:38.00,0:00:46.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nbeen committed and to which we are committed today at home and around the world.
-Dialogue: 0,0:00:46.00,0:01:01.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\NLet every nation know, whether it wishes us well or ill, that we shall pay any price, bear any burden,
-Dialogue: 0,0:01:01.00,0:01:13.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nmeet any hardship, support any friend, oppose any foe, to ensure the survival and success of liberty.
-Dialogue: 0,0:01:13.00,9:59:59.99,Default,,0,0,0,,{\i1}End of:{\i0}\NPresident John F. Kennedy Speech
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:00.01,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\N
+Dialogue: 0,0:00:00.01,0:00:08.80,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\NLet the word go forth, from this time and place to friend and foe alike that the torch
+Dialogue: 0,0:00:08.80,0:00:19.50,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nhas been passed to a new generation of Americans, born in this century, tempered by war,
+Dialogue: 0,0:00:19.50,0:00:28.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Ndisciplined by a hard and bitter peace, proud of our ancient heritage, and unwilling to witness
+Dialogue: 0,0:00:28.00,0:00:38.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nor permit the slow undoing of those human rights to which this nation has always
+Dialogue: 0,0:00:38.00,0:00:46.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nbeen committed and to which we are committed today at home and around the world.
+Dialogue: 0,0:00:46.00,0:01:01.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\NLet every nation know, whether it wishes us well or ill, that we shall pay any price, bear any burden,
+Dialogue: 0,0:01:01.00,0:01:13.00,Default,,0,0,0,,{\i1}Pres. John F. Kennedy{\i0}\Nmeet any hardship, support any friend, oppose any foe, to ensure the survival and success of liberty.
+Dialogue: 0,0:01:13.00,9:59:59.99,Default,,0,0,0,,{\i1}End of:{\i0}\NPresident John F. Kennedy Speech
diff --git a/tests/ref/fate/sub-sami2 b/tests/ref/fate/sub-sami2
index 9b5dcbe7a2..f18d3b7163 100644
--- a/tests/ref/fate/sub-sami2
+++ b/tests/ref/fate/sub-sami2
@@ -1,93 +1,93 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:01.51,0:00:01.51,Default,,0,0,0,,by Psyence Fictionist\Npsyencefictionist@gmail.com
-Dialogue: 0,0:00:01.51,0:00:08.61,Default,,0,0,0,,Sync by: honeybunny and Kerensky\Nwww.Addic7ed.com
-Dialogue: 0,0:00:10.11,0:00:10.11,Default,,0,0,0,,\N{\b1}사랑과 배신\N탐욕과 살육의 이야기죠{\b0}
-Dialogue: 0,0:00:10.11,0:00:13.98,Default,,0,0,0,,\N{\c&H800080&}The{\c}{\c&HCBC0FF&}re{\c} {\c&HFF&}is{\c} {\c&HA5FF&}lo{\c}{\c&HFFFF&}ve{\c} {\c&H8000&}and{\c}{\c&HFFFF00&} bet{\c}{\c&HFF0000&}rayal{\c},\N{\b1}{\c&H808080&}g{\c}r{\c&H808080&}e{\c}e{\c&H808080&}d{\c} and {\c&HFF&}m{\c}{\c&H808080&}u{\c}{\c&HFF&}rder{\c}{\b0}.
-Dialogue: 0,0:00:17.67,0:00:17.67,Default,,0,0,0,,\N{\c&HFFFF&}선악의 정의에 대해서\N대립하는 가치관을 가진{\c}
-Dialogue: 0,0:00:17.67,0:00:21.72,Default,,0,0,0,,\N{\c&HCBC0FF&}{\fs6}It's{\fs} {\fs8}set{\fs}{\fs10} in {\fs}{\fs12}this{\fs}{\fs14} intere{\fs}{\fs14}sting{\fs}\N{\fs16} world{\fs}{\fs18} of{\fs} {\fs20}cont{\fs}{\fs22}rasting{\fs}{\fs24} ideology{\fs}{\c}
-Dialogue: 0,0:00:21.84,0:00:21.84,Default,,0,0,0,,\N{\u1}매력적인 세계에서\N이 모든 것이 펼쳐집니다{\u1}
-Dialogue: 0,0:00:21.84,0:00:23.58,Default,,0,0,0,,\N{\i1}{\c&H9966CC&}of{\c}{\c&HC2A3E0&} what's{\c} {\c&HE0D1F0&}right{\c} {\c&HFCFAFE&}and{\c} wrong.{\i0}
-Dialogue: 0,0:00:23.69,0:00:23.69,Default,,0,0,0,,\N{\i1}이 주제를 심오한 철학으로\N담아내고 있어요{\i0}
-Dialogue: 0,0:00:23.69,0:00:25.67,Default,,0,0,0,,\N{\c&HFF0000&}{\fs20}{\s1}It{\s0}{\fs}{\c} has {\c&HFFFF00&}{\fs15}a{\fs}{\c} great {\c&HFFCC00&}{\fs16}philosophy{\fs}{\c} about it.
-Dialogue: 0,0:00:40.22,0:00:40.22,Default,,0,0,0,,\N{\s1}"왕좌의 게임"은 웨스테로스라는 가상왕국의\N권력 분쟁 이야기입니다{\s0}
-Dialogue: 0,0:00:40.22,0:00:47.94,Default,,0,0,0,,\N{\c&HA5FF&}{\fs26}"Game of Thrones"{\fs}{\c} {\c&H2A2AA5&}{\b1}is{\b0}{\c}{\c&HFFFF&}{\fs24}{\i1} about{\i0}{\fs}{\c} {\c&H336699&}{\fs14}power{\fs}{\c}{\c&HFF&} struggles{\c}\N{\c&HA5FF&}{\fs8}in a fantasy{\fs}{\c&HCBC0FF&} kingdom{\c&HA5FF&}, called {\fs6}Westeros.{\fs}{\c}
-Dialogue: 0,0:00:48.06,0:00:48.06,Default,,0,0,0,,\N철의 왕좌를 둘러싼\N권력 분쟁이죠
-Dialogue: 0,0:00:48.06,0:00:50.76,Default,,0,0,0,,\N{\c&H8000&}And it's a power struggle\Nfor the Iron Throne,{\c}
-Dialogue: 0,0:00:50.88,0:00:50.88,Default,,0,0,0,,\N{\fs20}왕국의 권력 정점이라고\N할 수 있는 자리에요{\fs}
-Dialogue: 0,0:00:50.88,0:00:53.13,Default,,0,0,0,,\Nwhich is the seat of power\Nin this kingdom.
-Dialogue: 0,0:00:53.25,0:00:53.25,Default,,0,0,0,,\N전운이 감도네, 네드
-Dialogue: 0,0:00:53.25,0:00:55.07,Default,,0,0,0,,\NThere's a war coming, Ned.
-Dialogue: 0,0:00:56.01,0:00:56.01,Default,,0,0,0,, \N언제 누구와 싸우게 될지는 몰라\N하지만 분명 전쟁이 일어날걸세
-Dialogue: 0,0:00:56.01,0:01:00.09,Default,,0,0,0,,\NI don't know when, I don't know who\Nwould be fighting, but it's coming.
-Dialogue: 0,0:01:01.10,0:01:01.10,Default,,0,0,0,,\N이야기의 핵심은 두 주요 가문의\N권력을 둘러싼 갈등입니다
-Dialogue: 0,0:01:01.10,0:01:07.04,Default,,0,0,0,,\N{\i1}At the core of it there's a conflict for\Npower between two great houses initially.{\i0}
-Dialogue: 0,0:01:07.16,0:01:07.16,Default,,0,0,0,,\N스타크 가문과 라니스터 가문이죠
-Dialogue: 0,0:01:07.16,0:01:10.04,Default,,0,0,0,,\NHouse Stark and House Lannister.
-Dialogue: 0,0:01:10.16,0:01:10.16,Default,,0,0,0,,\N그 외에 여러 가문이\N서로 경쟁합니다
-Dialogue: 0,0:01:10.16,0:01:13.25,Default,,0,0,0,,\NThe other major houses are\Nall contenders as well.
-Dialogue: 0,0:01:13.37,0:01:13.37,Default,,0,0,0,,\N흥미진진하게 정치적으로\N얽혀있는 상황이죠
-Dialogue: 0,0:01:13.37,0:01:16.11,Default,,0,0,0,,\NIt's a suitably complicated\Npolitical situation.
-Dialogue: 0,0:01:16.34,0:01:16.34,Default,,0,0,0,,\N옛 말에 "권력은 부패한다"라죠
-Dialogue: 0,0:01:16.34,0:01:18.80,Default,,0,0,0,,\NThe old truth "the power corrupts",\NI think
-Dialogue: 0,0:01:18.92,0:01:18.92,Default,,0,0,0,,\N옳은 말입니다\N이 작품에서도 드러나죠
-Dialogue: 0,0:01:18.92,0:01:21.66,Default,,0,0,0,,\Nit's very valid and it\Nshows in this series.
-Dialogue: 0,0:01:21.78,0:01:21.78,Default,,0,0,0,,\N권력을 얻은 등장인물들이\N어떻게 변해가는지 보시게 될겁니다
-Dialogue: 0,0:01:21.78,0:01:24.59,Default,,0,0,0,,\NYou see characters come into\Npower and how they change.
-Dialogue: 0,0:01:24.71,0:01:24.71,Default,,0,0,0,,\N그렇게 등장인물들은\N대의를 보는 시야를 잃어가고
-Dialogue: 0,0:01:24.71,0:01:28.86,Default,,0,0,0,,\NIn a way it's about how people\Nforget to see the bigger picture,
-Dialogue: 0,0:01:28.98,0:01:28.98,Default,,0,0,0,,\N사리사욕을 쫒는데 정신이 팔려\N공공의 위협을 외면하게 되죠
-Dialogue: 0,0:01:28.98,0:01:33.89,Default,,0,0,0,,\N{\u1}this common threat, that everybody\Nkind of ignores, because they're too busy{\u0}
-Dialogue: 0,0:01:34.01,0:01:35.24,Default,,0,0,0,,\Npursuing their own interests.
-Dialogue: 0,0:01:35.36,0:01:35.36,Default,,0,0,0,,\N한편, 일곱 왕국의 밖에서는\N두 개의 거대한 위협이 부상합니다
-Dialogue: 0,0:01:35.36,0:01:40.23,Default,,0,0,0,,\N{\fs30}And meanwhile, outside the Seven\NKingdoms, two great threats arising.{\fs}
-Dialogue: 0,0:01:40.35,0:01:40.35,Default,,0,0,0,,\N하나는 바다 건너\N타가리엔 일족 유배자들이며
-Dialogue: 0,0:01:40.35,0:01:44.06,Default,,0,0,0,,\NOne across the sea, in the exile\NTargaryen siblings,
-Dialogue: 0,0:01:44.17,0:01:44.17,Default,,0,0,0,,\N또 하나는 일곱 왕국의\N국경이 자리잡은
-Dialogue: 0,0:01:44.17,0:01:47.39,Default,,0,0,0,,\Nand another far to the north,\Nbeyond the Wall,
-Dialogue: 0,0:01:47.51,0:01:47.51,Default,,0,0,0,,\N저 멀리 북쪽 장벽 너머\N초자연적인 존재들이 도사리는
-Dialogue: 0,0:01:47.51,0:01:50.07,Default,,0,0,0,,\Nwhich is the boundary\Nof the Seven Kingdoms,
-Dialogue: 0,0:01:50.18,0:01:50.18,Default,,0,0,0,,\N춥디 추운 땅에서 일어납니다
-Dialogue: 0,0:01:50.18,0:01:55.28,Default,,0,0,0,,\Nin lands of perpetual ice and cold,\Nwhere supernatural threat is stirring.
-Dialogue: 0,0:01:56.45,0:01:56.45,Default,,0,0,0,,\N기존의 어떤 작품과도 다릅니다
-Dialogue: 0,0:01:56.45,0:02:00.45,Default,,0,0,0,,\NIt's very different from\Nanything that's been done.
-Dialogue: 0,0:02:00.58,0:02:00.58,Default,,0,0,0,,\N이 작품처럼 어두운 판타지는\N없을거라고 봅니다
-Dialogue: 0,0:02:00.58,0:02:03.97,Default,,0,0,0,,\NI can't think of another fantasy\Nwhich is as dark as this one is,
-Dialogue: 0,0:02:04.09,0:02:04.09,Default,,0,0,0,,\N아주 적나라하고 현실적이죠
-Dialogue: 0,0:02:04.09,0:02:05.65,Default,,0,0,0,,\Nwhich is as gritty and as real.
-Dialogue: 0,0:02:05.77,0:02:05.77,Default,,0,0,0,,\N등장인물 하나 하나가\N매우 심도깊습니다
-Dialogue: 0,0:02:05.77,0:02:08.18,Default,,0,0,0,,\NEvery single character\Nis incredibly complex.
-Dialogue: 0,0:02:08.30,0:02:08.30,Default,,0,0,0,,\N보여주는 모습만으로\N생기는 고정관념으로는
-Dialogue: 0,0:02:08.30,0:02:09.33,Default,,0,0,0,,\NYou think you know them.
-Dialogue: 0,0:02:09.45,0:02:09.45,Default,,0,0,0,,\N등장인물을 제대로 이해했다고\N할 수 없습니다
-Dialogue: 0,0:02:09.45,0:02:14.14,Default,,0,0,0,,\NYou think you got them pegged as what\Nthey seemingly are but they really aren't.
-Dialogue: 0,0:02:14.25,0:02:14.25,Default,,0,0,0,,\N신하 중에서 전적으로\N신뢰할 수 있는 이가 있습니까?
-Dialogue: 0,0:02:14.25,0:02:17.66,Default,,0,0,0,,\NIs there someone in your service\Nwhom you trust completely?
-Dialogue: 0,0:02:17.78,0:02:17.78,Default,,0,0,0,,\N있네
-Dialogue: 0,0:02:17.78,0:02:18.84,Default,,0,0,0,,\NYes.
-Dialogue: 0,0:02:18.96,0:02:18.96,Default,,0,0,0,,\N"없다"라고 대답하셔야\N현명하신겁니다, 전하
-Dialogue: 0,0:02:18.96,0:02:21.27,Default,,0,0,0,,\NThe wiser answer was "no", my lord.
-Dialogue: 0,0:02:21.53,0:02:21.53,Default,,0,0,0,,\N이분법적인 선악의\N이야기가 아닙니다
-Dialogue: 0,0:02:21.53,0:02:23.63,Default,,0,0,0,,\NIt's not a good guys/bad guys story.
-Dialogue: 0,0:02:23.75,0:02:23.75,Default,,0,0,0,,\N모두가 나름의 가치를\N추구하고
-Dialogue: 0,0:02:23.75,0:02:26.40,Default,,0,0,0,,\NIt's a story where everybody is\Npursuing their own interests
-Dialogue: 0,0:02:26.52,0:02:26.52,Default,,0,0,0,,\N나름의 규칙을 따르면서
-Dialogue: 0,0:02:26.52,0:02:29.67,Default,,0,0,0,,\Nand everybody's following their own\Ncode and it's about those interests
-Dialogue: 0,0:02:29.79,0:02:29.79,Default,,0,0,0,,\N서로의 가치와 윤리가\N충돌하게 되는 이야기입니다
-Dialogue: 0,0:02:29.79,0:02:33.35,Default,,0,0,0,,\Nand those ethics coming into\Nconflict with each other.
-Dialogue: 0,0:02:33.47,0:02:33.47,Default,,0,0,0,,\N영웅이 악당을 물리치는 이야기보다
-Dialogue: 0,0:02:33.47,0:02:37.58,Default,,0,0,0,,\NAnd it provides a much richer story\Nthan the guys in white
-Dialogue: 0,0:02:38.58,0:02:38.58,Default,,0,0,0,,\Nby Psyence Fictionist\Npsyencefictionist@gmail.com
-Dialogue: 0,0:02:38.58,0:02:39.58,Default,,0,0,0,,\NSync by: honeybunny and Kerensky\Nwww.Addic7ed.com
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:01.51,0:00:01.51,Default,,0,0,0,,by Psyence Fictionist\Npsyencefictionist@gmail.com
+Dialogue: 0,0:00:01.51,0:00:08.61,Default,,0,0,0,,Sync by: honeybunny and Kerensky\Nwww.Addic7ed.com
+Dialogue: 0,0:00:10.11,0:00:10.11,Default,,0,0,0,,\N{\b1}사랑과 배신\N탐욕과 살육의 이야기죠{\b0}
+Dialogue: 0,0:00:10.11,0:00:13.98,Default,,0,0,0,,\N{\c&H800080&}The{\c}{\c&HCBC0FF&}re{\c} {\c&HFF&}is{\c} {\c&HA5FF&}lo{\c}{\c&HFFFF&}ve{\c} {\c&H8000&}and{\c}{\c&HFFFF00&} bet{\c}{\c&HFF0000&}rayal{\c},\N{\b1}{\c&H808080&}g{\c}r{\c&H808080&}e{\c}e{\c&H808080&}d{\c} and {\c&HFF&}m{\c}{\c&H808080&}u{\c}{\c&HFF&}rder{\c}{\b0}.
+Dialogue: 0,0:00:17.67,0:00:17.67,Default,,0,0,0,,\N{\c&HFFFF&}선악의 정의에 대해서\N대립하는 가치관을 가진{\c}
+Dialogue: 0,0:00:17.67,0:00:21.72,Default,,0,0,0,,\N{\c&HCBC0FF&}{\fs6}It's{\fs} {\fs8}set{\fs}{\fs10} in {\fs}{\fs12}this{\fs}{\fs14} intere{\fs}{\fs14}sting{\fs}\N{\fs16} world{\fs}{\fs18} of{\fs} {\fs20}cont{\fs}{\fs22}rasting{\fs}{\fs24} ideology{\fs}{\c}
+Dialogue: 0,0:00:21.84,0:00:21.84,Default,,0,0,0,,\N{\u1}매력적인 세계에서\N이 모든 것이 펼쳐집니다{\u1}
+Dialogue: 0,0:00:21.84,0:00:23.58,Default,,0,0,0,,\N{\i1}{\c&H9966CC&}of{\c}{\c&HC2A3E0&} what's{\c} {\c&HE0D1F0&}right{\c} {\c&HFCFAFE&}and{\c} wrong.{\i0}
+Dialogue: 0,0:00:23.69,0:00:23.69,Default,,0,0,0,,\N{\i1}이 주제를 심오한 철학으로\N담아내고 있어요{\i0}
+Dialogue: 0,0:00:23.69,0:00:25.67,Default,,0,0,0,,\N{\c&HFF0000&}{\fs20}{\s1}It{\s0}{\fs}{\c} has {\c&HFFFF00&}{\fs15}a{\fs}{\c} great {\c&HFFCC00&}{\fs16}philosophy{\fs}{\c} about it.
+Dialogue: 0,0:00:40.22,0:00:40.22,Default,,0,0,0,,\N{\s1}"왕좌의 게임"은 웨스테로스라는 가상왕국의\N권력 분쟁 이야기입니다{\s0}
+Dialogue: 0,0:00:40.22,0:00:47.94,Default,,0,0,0,,\N{\c&HA5FF&}{\fs26}"Game of Thrones"{\fs}{\c} {\c&H2A2AA5&}{\b1}is{\b0}{\c}{\c&HFFFF&}{\fs24}{\i1} about{\i0}{\fs}{\c} {\c&H336699&}{\fs14}power{\fs}{\c}{\c&HFF&} struggles{\c}\N{\c&HA5FF&}{\fs8}in a fantasy{\fs}{\c&HCBC0FF&} kingdom{\c&HA5FF&}, called {\fs6}Westeros.{\fs}{\c}
+Dialogue: 0,0:00:48.06,0:00:48.06,Default,,0,0,0,,\N철의 왕좌를 둘러싼\N권력 분쟁이죠
+Dialogue: 0,0:00:48.06,0:00:50.76,Default,,0,0,0,,\N{\c&H8000&}And it's a power struggle\Nfor the Iron Throne,{\c}
+Dialogue: 0,0:00:50.88,0:00:50.88,Default,,0,0,0,,\N{\fs20}왕국의 권력 정점이라고\N할 수 있는 자리에요{\fs}
+Dialogue: 0,0:00:50.88,0:00:53.13,Default,,0,0,0,,\Nwhich is the seat of power\Nin this kingdom.
+Dialogue: 0,0:00:53.25,0:00:53.25,Default,,0,0,0,,\N전운이 감도네, 네드
+Dialogue: 0,0:00:53.25,0:00:55.07,Default,,0,0,0,,\NThere's a war coming, Ned.
+Dialogue: 0,0:00:56.01,0:00:56.01,Default,,0,0,0,, \N언제 누구와 싸우게 될지는 몰라\N하지만 분명 전쟁이 일어날걸세
+Dialogue: 0,0:00:56.01,0:01:00.09,Default,,0,0,0,,\NI don't know when, I don't know who\Nwould be fighting, but it's coming.
+Dialogue: 0,0:01:01.10,0:01:01.10,Default,,0,0,0,,\N이야기의 핵심은 두 주요 가문의\N권력을 둘러싼 갈등입니다
+Dialogue: 0,0:01:01.10,0:01:07.04,Default,,0,0,0,,\N{\i1}At the core of it there's a conflict for\Npower between two great houses initially.{\i0}
+Dialogue: 0,0:01:07.16,0:01:07.16,Default,,0,0,0,,\N스타크 가문과 라니스터 가문이죠
+Dialogue: 0,0:01:07.16,0:01:10.04,Default,,0,0,0,,\NHouse Stark and House Lannister.
+Dialogue: 0,0:01:10.16,0:01:10.16,Default,,0,0,0,,\N그 외에 여러 가문이\N서로 경쟁합니다
+Dialogue: 0,0:01:10.16,0:01:13.25,Default,,0,0,0,,\NThe other major houses are\Nall contenders as well.
+Dialogue: 0,0:01:13.37,0:01:13.37,Default,,0,0,0,,\N흥미진진하게 정치적으로\N얽혀있는 상황이죠
+Dialogue: 0,0:01:13.37,0:01:16.11,Default,,0,0,0,,\NIt's a suitably complicated\Npolitical situation.
+Dialogue: 0,0:01:16.34,0:01:16.34,Default,,0,0,0,,\N옛 말에 "권력은 부패한다"라죠
+Dialogue: 0,0:01:16.34,0:01:18.80,Default,,0,0,0,,\NThe old truth "the power corrupts",\NI think
+Dialogue: 0,0:01:18.92,0:01:18.92,Default,,0,0,0,,\N옳은 말입니다\N이 작품에서도 드러나죠
+Dialogue: 0,0:01:18.92,0:01:21.66,Default,,0,0,0,,\Nit's very valid and it\Nshows in this series.
+Dialogue: 0,0:01:21.78,0:01:21.78,Default,,0,0,0,,\N권력을 얻은 등장인물들이\N어떻게 변해가는지 보시게 될겁니다
+Dialogue: 0,0:01:21.78,0:01:24.59,Default,,0,0,0,,\NYou see characters come into\Npower and how they change.
+Dialogue: 0,0:01:24.71,0:01:24.71,Default,,0,0,0,,\N그렇게 등장인물들은\N대의를 보는 시야를 잃어가고
+Dialogue: 0,0:01:24.71,0:01:28.86,Default,,0,0,0,,\NIn a way it's about how people\Nforget to see the bigger picture,
+Dialogue: 0,0:01:28.98,0:01:28.98,Default,,0,0,0,,\N사리사욕을 쫒는데 정신이 팔려\N공공의 위협을 외면하게 되죠
+Dialogue: 0,0:01:28.98,0:01:33.89,Default,,0,0,0,,\N{\u1}this common threat, that everybody\Nkind of ignores, because they're too busy{\u0}
+Dialogue: 0,0:01:34.01,0:01:35.24,Default,,0,0,0,,\Npursuing their own interests.
+Dialogue: 0,0:01:35.36,0:01:35.36,Default,,0,0,0,,\N한편, 일곱 왕국의 밖에서는\N두 개의 거대한 위협이 부상합니다
+Dialogue: 0,0:01:35.36,0:01:40.23,Default,,0,0,0,,\N{\fs30}And meanwhile, outside the Seven\NKingdoms, two great threats arising.{\fs}
+Dialogue: 0,0:01:40.35,0:01:40.35,Default,,0,0,0,,\N하나는 바다 건너\N타가리엔 일족 유배자들이며
+Dialogue: 0,0:01:40.35,0:01:44.06,Default,,0,0,0,,\NOne across the sea, in the exile\NTargaryen siblings,
+Dialogue: 0,0:01:44.17,0:01:44.17,Default,,0,0,0,,\N또 하나는 일곱 왕국의\N국경이 자리잡은
+Dialogue: 0,0:01:44.17,0:01:47.39,Default,,0,0,0,,\Nand another far to the north,\Nbeyond the Wall,
+Dialogue: 0,0:01:47.51,0:01:47.51,Default,,0,0,0,,\N저 멀리 북쪽 장벽 너머\N초자연적인 존재들이 도사리는
+Dialogue: 0,0:01:47.51,0:01:50.07,Default,,0,0,0,,\Nwhich is the boundary\Nof the Seven Kingdoms,
+Dialogue: 0,0:01:50.18,0:01:50.18,Default,,0,0,0,,\N춥디 추운 땅에서 일어납니다
+Dialogue: 0,0:01:50.18,0:01:55.28,Default,,0,0,0,,\Nin lands of perpetual ice and cold,\Nwhere supernatural threat is stirring.
+Dialogue: 0,0:01:56.45,0:01:56.45,Default,,0,0,0,,\N기존의 어떤 작품과도 다릅니다
+Dialogue: 0,0:01:56.45,0:02:00.45,Default,,0,0,0,,\NIt's very different from\Nanything that's been done.
+Dialogue: 0,0:02:00.58,0:02:00.58,Default,,0,0,0,,\N이 작품처럼 어두운 판타지는\N없을거라고 봅니다
+Dialogue: 0,0:02:00.58,0:02:03.97,Default,,0,0,0,,\NI can't think of another fantasy\Nwhich is as dark as this one is,
+Dialogue: 0,0:02:04.09,0:02:04.09,Default,,0,0,0,,\N아주 적나라하고 현실적이죠
+Dialogue: 0,0:02:04.09,0:02:05.65,Default,,0,0,0,,\Nwhich is as gritty and as real.
+Dialogue: 0,0:02:05.77,0:02:05.77,Default,,0,0,0,,\N등장인물 하나 하나가\N매우 심도깊습니다
+Dialogue: 0,0:02:05.77,0:02:08.18,Default,,0,0,0,,\NEvery single character\Nis incredibly complex.
+Dialogue: 0,0:02:08.30,0:02:08.30,Default,,0,0,0,,\N보여주는 모습만으로\N생기는 고정관념으로는
+Dialogue: 0,0:02:08.30,0:02:09.33,Default,,0,0,0,,\NYou think you know them.
+Dialogue: 0,0:02:09.45,0:02:09.45,Default,,0,0,0,,\N등장인물을 제대로 이해했다고\N할 수 없습니다
+Dialogue: 0,0:02:09.45,0:02:14.14,Default,,0,0,0,,\NYou think you got them pegged as what\Nthey seemingly are but they really aren't.
+Dialogue: 0,0:02:14.25,0:02:14.25,Default,,0,0,0,,\N신하 중에서 전적으로\N신뢰할 수 있는 이가 있습니까?
+Dialogue: 0,0:02:14.25,0:02:17.66,Default,,0,0,0,,\NIs there someone in your service\Nwhom you trust completely?
+Dialogue: 0,0:02:17.78,0:02:17.78,Default,,0,0,0,,\N있네
+Dialogue: 0,0:02:17.78,0:02:18.84,Default,,0,0,0,,\NYes.
+Dialogue: 0,0:02:18.96,0:02:18.96,Default,,0,0,0,,\N"없다"라고 대답하셔야\N현명하신겁니다, 전하
+Dialogue: 0,0:02:18.96,0:02:21.27,Default,,0,0,0,,\NThe wiser answer was "no", my lord.
+Dialogue: 0,0:02:21.53,0:02:21.53,Default,,0,0,0,,\N이분법적인 선악의\N이야기가 아닙니다
+Dialogue: 0,0:02:21.53,0:02:23.63,Default,,0,0,0,,\NIt's not a good guys/bad guys story.
+Dialogue: 0,0:02:23.75,0:02:23.75,Default,,0,0,0,,\N모두가 나름의 가치를\N추구하고
+Dialogue: 0,0:02:23.75,0:02:26.40,Default,,0,0,0,,\NIt's a story where everybody is\Npursuing their own interests
+Dialogue: 0,0:02:26.52,0:02:26.52,Default,,0,0,0,,\N나름의 규칙을 따르면서
+Dialogue: 0,0:02:26.52,0:02:29.67,Default,,0,0,0,,\Nand everybody's following their own\Ncode and it's about those interests
+Dialogue: 0,0:02:29.79,0:02:29.79,Default,,0,0,0,,\N서로의 가치와 윤리가\N충돌하게 되는 이야기입니다
+Dialogue: 0,0:02:29.79,0:02:33.35,Default,,0,0,0,,\Nand those ethics coming into\Nconflict with each other.
+Dialogue: 0,0:02:33.47,0:02:33.47,Default,,0,0,0,,\N영웅이 악당을 물리치는 이야기보다
+Dialogue: 0,0:02:33.47,0:02:37.58,Default,,0,0,0,,\NAnd it provides a much richer story\Nthan the guys in white
+Dialogue: 0,0:02:38.58,0:02:38.58,Default,,0,0,0,,\Nby Psyence Fictionist\Npsyencefictionist@gmail.com
+Dialogue: 0,0:02:38.58,0:02:39.58,Default,,0,0,0,,\NSync by: honeybunny and Kerensky\Nwww.Addic7ed.com
diff --git a/tests/ref/fate/sub-srt b/tests/ref/fate/sub-srt
index 7449090fd0..db750b58c6 100644
--- a/tests/ref/fate/sub-srt
+++ b/tests/ref/fate/sub-srt
@@ -1,51 +1,51 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,Don't show this text it may be used to insert hidden data
-Dialogue: 0,0:00:01.50,0:00:04.50,Default,,0,0,0,,SubRip subtitles capability tester 1.3o by ale5000\N{\b1}{\i1}Use VLC 1.1 or higher as reference for most things and MPC Home Cinema for others{\i0}{\b0}\N{\c&HFF0000&}This text should be blue{\c}\N{\c&HFF&}This text should be red{\c}\N{\c&H0&}This text should be black{\c}\N{\fnWebdings}If you see this with the normal font, the player don't (fully) support font face{\fn}
-Dialogue: 0,0:00:04.50,0:00:04.50,Default,,0,0,0,,Hidden
-Dialogue: 0,0:00:04.50,0:00:07.50,Default,,0,0,0,,{\fs8}This text should be small{\fs}\NThis text should be normal\N{\fs35}This text should be big{\fs}
-Dialogue: 0,0:00:07.50,0:00:11.50,Default,,0,0,0,,This should be an E with an accent: È\N日本語\N{\fs30}{\b1}{\i1}{\u1}This text should be bold, italics and underline{\u0}{\i0}{\b0}{\fs}\N{\fs9}{\c&HFF00&}This text should be small and green{\fs}{\c}\N{\c&HFF&}{\fs9}This text should be small and red{\fs}{\c}\N{\c&H2A2AA5&}{\fs24}This text should be big and brown{\fs}{\c}
-Dialogue: 0,0:00:11.50,0:00:14.50,Default,,0,0,0,,{\b1}This line should be bold{\b0}\N{\i1}This line should be italics{\i0}\N{\u1}This line should be underline{\u0}\N{\s1}This line should be strikethrough{\s0}\N{\u1}Both lines\Nshould be underline{\u0}
-Dialogue: 0,0:00:14.50,0:00:17.50,Default,,0,0,0,,>\NIt would be a good thing to\Nhide invalid html tags that are closed and show the text in them\Nbut show un-closed invalid html tags\NShow not opened tags\N<
-Dialogue: 0,0:00:17.50,0:00:20.50,Default,,0,0,0,,and also\Nhide invalid html tags with parameters that are closed and show the text in them\Nbut show un-closed invalid html tags\N{\u1}This text should be showed underlined without problems also: 2<3,5>1,4<6{\u0}\NThis shouldn't be underlined
-Dialogue: 0,0:00:20.50,0:00:21.50,Default,,0,0,0,,This text should be in the normal position...
-Dialogue: 0,0:00:21.50,0:00:22.50,Default,,0,0,0,,{\an5}{\pos(0,45)}This text should NOT be in the normal position
-Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,Implementation is the same of the ASS tag\N{\an8}This text should be at the\Ntop and horizontally centered
-Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,{\an5}This text should be at the\Nmiddle and horizontally centered
-Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,{\an2}This text should be at the\Nbottom and horizontally centered
-Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,This text should be at the\Ntop and horizontally at the left{\an7}
-Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,{\an4}This text should be at the\Nmiddle and horizontally at the left\N(The second position must be ignored)
-Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,{\an1}This text should be at the\Nbottom and horizontally at the left
-Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an9}This text should be at the\Ntop and horizontally at the right
-Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an6}This text should be at the\Nmiddle and horizontally at the right
-Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an3}This text should be at the\Nbottom and horizontally at the right
-Dialogue: 0,0:00:28.50,0:00:31.50,Default,,0,0,0,,{\c&HFF00&}{\fs6}This could be the {\fs35}m{\c&H0&}o{\c&HFF00&}st{\fs6} difficult thing to implement{\fs}{\c}
-Dialogue: 0,0:00:31.50,0:00:50.50,Default,,0,0,0,,First text
-Dialogue: 0,0:00:33.50,0:00:35.50,Default,,0,0,0,,Second, it shouldn't overlap first
-Dialogue: 0,0:00:35.50,0:00:37.50,Default,,0,0,0,,Third, it should replace second
-Dialogue: 0,0:00:36.50,0:00:50.50,Default,,0,0,0,,Fourth, it shouldn't overlap first and third
-Dialogue: 0,0:00:40.50,0:00:45.50,Default,,0,0,0,,Fifth, it should replace third
-Dialogue: 0,0:00:45.50,0:00:50.50,Default,,0,0,0,,Sixth, it shouldn't be\Nshowed overlapped
-Dialogue: 0,0:00:50.50,0:00:52.50,Default,,0,0,0,,TEXT 1 (bottom)
-Dialogue: 0,0:00:50.50,0:00:52.50,Default,,0,0,0,,text 2
-Dialogue: 0,0:00:52.50,0:00:54.50,Default,,0,0,0,,Hide these tags:\Nalso hide these tags:\Nbut show this: {normal text}
-Dialogue: 0,0:00:54.50,0:01:00.50,Default,,0,0,0,,{\an8}\N\ N is a forced line break\N\ h is a hard space\NNormal spaces at the start and at the end of the line are trimmed while hard spaces are not trimmed.\NThe\hline\hwill\hnever\hbreak\hautomatically\hright\hbefore\hor\hafter\ha\hhard\hspace.\h:-D
-Dialogue: 0,0:00:54.50,0:00:56.50,Default,,0,0,0,,{\an1}\N\h\h\h\h\hA (05 hard spaces followed by a letter)\NA (Normal  spaces followed by a letter)\NA (No hard spaces followed by a letter)
-Dialogue: 0,0:00:56.50,0:00:58.50,Default,,0,0,0,,\h\h\h\h\hA (05 hard spaces followed by a letter)\NA (Normal  spaces followed by a letter)\NA (No hard spaces followed by a letter)\NShow this: \TEST and this: \-)
-Dialogue: 0,0:00:58.50,0:01:00.50,Default,,0,0,0,,{\an3}\NA letter followed by 05 hard spaces: A\h\h\h\h\h\NA letter followed by normal  spaces: A\NA letter followed by no hard spaces: A\N05 hard  spaces between letters: A\h\h\h\h\hA\N5 normal spaces between letters: A     A\N\N^--Forced line break
-Dialogue: 0,0:01:00.50,0:01:02.50,Default,,0,0,0,,{\s1}Both line should be strikethrough,\Nyes.{\s0}\NCorrectly closed tags\Nshould be hidden.
-Dialogue: 0,0:01:02.50,0:01:04.50,Default,,0,0,0,,It shouldn't be strikethrough,\Nnot opened tag showed as text.{\s0}\NNot opened tag showed as text.
-Dialogue: 0,0:01:04.50,0:01:06.50,Default,,0,0,0,,{\s1}Three lines should be strikethrough,\Nyes.\NNot closed tags showed as text
-Dialogue: 0,0:01:06.50,0:01:08.50,Default,,0,0,0,,{\s1}Both line should be strikethrough but\Nthe wrong closing tag should be showed{\b0}
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,Don't show this text it may be used to insert hidden data
+Dialogue: 0,0:00:01.50,0:00:04.50,Default,,0,0,0,,SubRip subtitles capability tester 1.3o by ale5000\N{\b1}{\i1}Use VLC 1.1 or higher as reference for most things and MPC Home Cinema for others{\i0}{\b0}\N{\c&HFF0000&}This text should be blue{\c}\N{\c&HFF&}This text should be red{\c}\N{\c&H0&}This text should be black{\c}\N{\fnWebdings}If you see this with the normal font, the player don't (fully) support font face{\fn}
+Dialogue: 0,0:00:04.50,0:00:04.50,Default,,0,0,0,,Hidden
+Dialogue: 0,0:00:04.50,0:00:07.50,Default,,0,0,0,,{\fs8}This text should be small{\fs}\NThis text should be normal\N{\fs35}This text should be big{\fs}
+Dialogue: 0,0:00:07.50,0:00:11.50,Default,,0,0,0,,This should be an E with an accent: È\N日本語\N{\fs30}{\b1}{\i1}{\u1}This text should be bold, italics and underline{\u0}{\i0}{\b0}{\fs}\N{\fs9}{\c&HFF00&}This text should be small and green{\fs}{\c}\N{\c&HFF&}{\fs9}This text should be small and red{\fs}{\c}\N{\c&H2A2AA5&}{\fs24}This text should be big and brown{\fs}{\c}
+Dialogue: 0,0:00:11.50,0:00:14.50,Default,,0,0,0,,{\b1}This line should be bold{\b0}\N{\i1}This line should be italics{\i0}\N{\u1}This line should be underline{\u0}\N{\s1}This line should be strikethrough{\s0}\N{\u1}Both lines\Nshould be underline{\u0}
+Dialogue: 0,0:00:14.50,0:00:17.50,Default,,0,0,0,,>\NIt would be a good thing to\Nhide invalid html tags that are closed and show the text in them\Nbut show un-closed invalid html tags\NShow not opened tags\N<
+Dialogue: 0,0:00:17.50,0:00:20.50,Default,,0,0,0,,and also\Nhide invalid html tags with parameters that are closed and show the text in them\Nbut show un-closed invalid html tags\N{\u1}This text should be showed underlined without problems also: 2<3,5>1,4<6{\u0}\NThis shouldn't be underlined
+Dialogue: 0,0:00:20.50,0:00:21.50,Default,,0,0,0,,This text should be in the normal position...
+Dialogue: 0,0:00:21.50,0:00:22.50,Default,,0,0,0,,{\an5}{\pos(0,45)}This text should NOT be in the normal position
+Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,Implementation is the same of the ASS tag\N{\an8}This text should be at the\Ntop and horizontally centered
+Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,{\an5}This text should be at the\Nmiddle and horizontally centered
+Dialogue: 0,0:00:22.50,0:00:24.50,Default,,0,0,0,,{\an2}This text should be at the\Nbottom and horizontally centered
+Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,This text should be at the\Ntop and horizontally at the left{\an7}
+Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,{\an4}This text should be at the\Nmiddle and horizontally at the left\N(The second position must be ignored)
+Dialogue: 0,0:00:24.50,0:00:26.50,Default,,0,0,0,,{\an1}This text should be at the\Nbottom and horizontally at the left
+Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an9}This text should be at the\Ntop and horizontally at the right
+Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an6}This text should be at the\Nmiddle and horizontally at the right
+Dialogue: 0,0:00:26.50,0:00:28.50,Default,,0,0,0,,{\an3}This text should be at the\Nbottom and horizontally at the right
+Dialogue: 0,0:00:28.50,0:00:31.50,Default,,0,0,0,,{\c&HFF00&}{\fs6}This could be the {\fs35}m{\c&H0&}o{\c&HFF00&}st{\fs6} difficult thing to implement{\fs}{\c}
+Dialogue: 0,0:00:31.50,0:00:50.50,Default,,0,0,0,,First text
+Dialogue: 0,0:00:33.50,0:00:35.50,Default,,0,0,0,,Second, it shouldn't overlap first
+Dialogue: 0,0:00:35.50,0:00:37.50,Default,,0,0,0,,Third, it should replace second
+Dialogue: 0,0:00:36.50,0:00:50.50,Default,,0,0,0,,Fourth, it shouldn't overlap first and third
+Dialogue: 0,0:00:40.50,0:00:45.50,Default,,0,0,0,,Fifth, it should replace third
+Dialogue: 0,0:00:45.50,0:00:50.50,Default,,0,0,0,,Sixth, it shouldn't be\Nshowed overlapped
+Dialogue: 0,0:00:50.50,0:00:52.50,Default,,0,0,0,,TEXT 1 (bottom)
+Dialogue: 0,0:00:50.50,0:00:52.50,Default,,0,0,0,,text 2
+Dialogue: 0,0:00:52.50,0:00:54.50,Default,,0,0,0,,Hide these tags:\Nalso hide these tags:\Nbut show this: {normal text}
+Dialogue: 0,0:00:54.50,0:01:00.50,Default,,0,0,0,,{\an8}\N\ N is a forced line break\N\ h is a hard space\NNormal spaces at the start and at the end of the line are trimmed while hard spaces are not trimmed.\NThe\hline\hwill\hnever\hbreak\hautomatically\hright\hbefore\hor\hafter\ha\hhard\hspace.\h:-D
+Dialogue: 0,0:00:54.50,0:00:56.50,Default,,0,0,0,,{\an1}\N\h\h\h\h\hA (05 hard spaces followed by a letter)\NA (Normal  spaces followed by a letter)\NA (No hard spaces followed by a letter)
+Dialogue: 0,0:00:56.50,0:00:58.50,Default,,0,0,0,,\h\h\h\h\hA (05 hard spaces followed by a letter)\NA (Normal  spaces followed by a letter)\NA (No hard spaces followed by a letter)\NShow this: \TEST and this: \-)
+Dialogue: 0,0:00:58.50,0:01:00.50,Default,,0,0,0,,{\an3}\NA letter followed by 05 hard spaces: A\h\h\h\h\h\NA letter followed by normal  spaces: A\NA letter followed by no hard spaces: A\N05 hard  spaces between letters: A\h\h\h\h\hA\N5 normal spaces between letters: A     A\N\N^--Forced line break
+Dialogue: 0,0:01:00.50,0:01:02.50,Default,,0,0,0,,{\s1}Both line should be strikethrough,\Nyes.{\s0}\NCorrectly closed tags\Nshould be hidden.
+Dialogue: 0,0:01:02.50,0:01:04.50,Default,,0,0,0,,It shouldn't be strikethrough,\Nnot opened tag showed as text.{\s0}\NNot opened tag showed as text.
+Dialogue: 0,0:01:04.50,0:01:06.50,Default,,0,0,0,,{\s1}Three lines should be strikethrough,\Nyes.\NNot closed tags showed as text
+Dialogue: 0,0:01:06.50,0:01:08.50,Default,,0,0,0,,{\s1}Both line should be strikethrough but\Nthe wrong closing tag should be showed{\b0}
diff --git a/tests/ref/fate/sub-srt-badsyntax b/tests/ref/fate/sub-srt-badsyntax
index b77cada3f5..cdf7d9fcff 100644
--- a/tests/ref/fate/sub-srt-badsyntax
+++ b/tests/ref/fate/sub-srt-badsyntax
@@ -1,24 +1,24 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:01.00,0:00:02.31,Default,,0,0,0,,<<<<<< Antes <<<<<<\NEla é hum...
-Dialogue: 0,0:01:10.00,0:01:14.50,Default,,0,0,0,,>>> RebelSubTeam <<<
-Dialogue: 0,0:02:37.75,0:02:43.70,Default,,0,0,0,,{\b1}~ASUKO MARCH!~\N>>:<<\Ntranslation by: cangii\NRetiming by: furransu{\b0}
-Dialogue: 0,0:03:38.32,0:03:42.78,Default,,0,0,0,,<<THE HIGH ROLLERS>>\N<<Grandes Jogadores>>
-Dialogue: 0,0:04:50.43,0:05:01.03,Default,,0,0,0,,<<flash gordon\Npisode 4\Nsaison 1>\Nwww.SeriesSub.com>
-Dialogue: 0,0:20:31.85,0:20:56.84,Default,,0,0,0,,{\c&HFFFF&}\N<<<<www.egfire.com>>>>{\c}
-Dialogue: 0,0:37:59.69,0:38:01.59,Default,,0,0,0,,mint asztalt foglaltatni\Na <<>Le Cirque-ben.
-Dialogue: 0,0:53:43.78,0:53:45.94,Default,,0,0,0,,<<That's OK, >> - he calmed himself.
-Dialogue: 0,0:53:46.22,0:53:49.09,Default,,0,0,0,,<<lt's not a long way to the hotel,\Nthe hotel is within easy reach.
-Dialogue: 0,2:11:00.74,2:11:05.54,Default,,0,0,0,,{\b1}<<< ÓÍÀÊÑ ÒÈÉÌ < 2015 > UNACS TEAM >>>{\b0}
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:01.00,0:00:02.31,Default,,0,0,0,,<<<<<< Antes <<<<<<\NEla é hum...
+Dialogue: 0,0:01:10.00,0:01:14.50,Default,,0,0,0,,>>> RebelSubTeam <<<
+Dialogue: 0,0:02:37.75,0:02:43.70,Default,,0,0,0,,{\b1}~ASUKO MARCH!~\N>>:<<\Ntranslation by: cangii\NRetiming by: furransu{\b0}
+Dialogue: 0,0:03:38.32,0:03:42.78,Default,,0,0,0,,<<THE HIGH ROLLERS>>\N<<Grandes Jogadores>>
+Dialogue: 0,0:04:50.43,0:05:01.03,Default,,0,0,0,,<<flash gordon\Npisode 4\Nsaison 1>\Nwww.SeriesSub.com>
+Dialogue: 0,0:20:31.85,0:20:56.84,Default,,0,0,0,,{\c&HFFFF&}\N<<<<www.egfire.com>>>>{\c}
+Dialogue: 0,0:37:59.69,0:38:01.59,Default,,0,0,0,,mint asztalt foglaltatni\Na <<>Le Cirque-ben.
+Dialogue: 0,0:53:43.78,0:53:45.94,Default,,0,0,0,,<<That's OK, >> - he calmed himself.
+Dialogue: 0,0:53:46.22,0:53:49.09,Default,,0,0,0,,<<lt's not a long way to the hotel,\Nthe hotel is within easy reach.
+Dialogue: 0,2:11:00.74,2:11:05.54,Default,,0,0,0,,{\b1}<<< ÓÍÀÊÑ ÒÈÉÌ < 2015 > UNACS TEAM >>>{\b0}
diff --git a/tests/ref/fate/sub-ssa-to-ass-remux b/tests/ref/fate/sub-ssa-to-ass-remux
index f4405df117..22ea2dd85d 100644
--- a/tests/ref/fate/sub-ssa-to-ass-remux
+++ b/tests/ref/fate/sub-ssa-to-ass-remux
@@ -1,82 +1,82 @@ 
-[Script Info]
-; Script generated by Aegisub 2.1.7
-; http://www.aegisub.net
-ScriptType: v4.00
-Collisions: Normal
-PlayResY: 534
-PlayResX: 720
-WrapStyle: 0
-ScaledBorderAndShadow: no
-Video File: 01-.mkv
-Video Aspect Ratio: 1
-Video Zoom: 8
-Video Position: 36805
-Last Style Storage: Default
-Export Encoding: UTF-8
-Export filters: Karaoke template
-Title: Alien Nine 01
-Original Script: ?
-Original Translation: ?
-Original Editing: ?
-Original Timing: ?
-Synch Point: ?
-Script Updated By: lM
-Update Details: Kareoke by Pahndamonium
-
-[V4 Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
-Style: Song (romaji) ED-furigana,Verdana,15,7363111,8454016,0,16777215,-1,-1,1,1,0,6,30,30,16,0,0
-Style: SongED-furigana,Verdana,15,1393701,8454016,0,16777215,-1,-1,1,1,0,2,30,30,26,0,0
-Style: Song (romaji) OP-furigana,Verdana,15,7363111,8454016,0,16777215,-1,-1,1,1,0,2,30,30,18,0,0
-Style: SongOP-furigana,Verdana,15,3305768,8454016,0,16777215,-1,0,1,1,0,2,30,30,30,0,0
-Style: Signs-furigana,Arial,14,16777215,65535,0,0,-1,0,1,1,0,2,40,40,28,0,0
-Style: CF2-furigana,Verdana,14,16777215,16777215,0,0,-1,-1,1,1,0,2,30,30,30,0,0
-Style: Default-furigana,Verdana,14,16777215,65535,0,0,-1,0,1,1,0,2,30,30,28,0,0
-Style: Default,Verdana,28,16777215,65535,0,0,-1,0,1,2,0,2,30,30,28,0,0
-Style: CF2,Verdana,28,16777215,16777215,0,0,-1,-1,1,2,0,2,30,30,30,0,0
-Style: Signs,Arial,28,16777215,65535,0,0,-1,0,1,2,0,2,40,40,28,0,0
-Style: SongOP,Verdana,30,3305768,8454016,0,16777215,-1,0,1,2,0,2,30,30,30,0,0
-Style: Song (romaji) OP,Verdana,30,7363111,8454016,0,16777215,-1,-1,1,2,0,2,30,30,18,0,0
-Style: SongED,Verdana,30,1393701,8454016,0,16777215,-1,-1,1,2,0,2,30,30,26,0,0
-Style: Song (romaji) ED,Verdana,30,7363111,8454016,0,16777215,-1,-1,1,2,0,6,30,30,16,0,0
-
-[Events]
-Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: Marked=0,0:00:02.42,0:00:03.00,*Default,,0000,0000 ,0000,,{\fnComic Sans MS\c&HFF80FF&}All Japan Boys Soccer Tournament Opens!
-Dialogue: Marked=0,0:00:59.60,0:01:00.60,Default,NTP,0000,0000,0000,,Tak tady jsi...
-Dialogue: Marked=0,0:01:00.81,0:01:01.39,Default,NTP,0000,0000,0000,,Ahoj.
-Dialogue: Marked=0,0:01:01.52,0:01:03.98,Default,NTP,0000,0000,0000,,Pojď se mnou.
-Dialogue: Marked=0,0:01:19.71,0:01:30.26,*Default,SONG,0000,0000,0092,,When you hear the bell of Chirin,...
-Dialogue: Marked=0,0:01:30.26,0:01:40.46,*Default,SONG,0000,0000,0000,,YASASHII MATSUGE WO HOHOEMI WO
-Dialogue: Marked=0,0:01:30.26,0:01:40.46,*Default,SONG,0000,0000,0092,,...recall those soft lashes and that gentle smile.
-Dialogue: Marked=0,0:01:40.46,0:01:50.72,*Default,SONG,0000,0000,0000,,CHIRIN NO SUZU DE OMOIDASU
-Dialogue: Marked=0,0:04:45.67,0:04:48.37,*Default,,0000,0000,0000,,{My Eight-Six turned into an Eight-Five ? !}¡¿Mi Hachi-Roku se ha\nconvertido en un Hachi-Go?!
-Dialogue: Marked=0,0:04:48.97,0:04:51.70,*Default,,0000,0000,0000,,{\c&HFFFFFF&}Tomé el auto prestado,\nte dejé un sustituto.
-Dialogue: Marked=0,0:05:01.52,0:05:04.12,*Default,,0000,0000,0000,,{Takumi,Your dad must be really surprised by now. . .}Ahora mismo tu padre\ndebe estar en shock.
-Dialogue: Marked=0,0:00:15.15,0:00:16.30,Default,Voice,0000,0000,0000,,Otani-san...
-Dialogue: Marked=0,0:00:16.93,0:00:18.17,Default,,0000,0000,0000,,Otani-san...
-Dialogue: Marked=0,0:00:18.00,0:00:21.18,Signs,Sign,0000,0000,0000,,{\a6}Sixth Grade Camellia Class
-Dialogue: Marked=0,0:00:18.58,0:00:19.80,Default,Voice,0000,0000,0000,,Otani-san...
-Dialogue: Marked=0,0:00:20.45,0:00:21.64,Default,,0000,0000,0000,,Otani-san...
-Dialogue: Marked=0,0:00:21.38,0:00:25.88,Signs,Chalkboard,0000,0000,0000,,{\a6}Alien Counter-Measure Officer
-Dialogue: Marked=0,0:00:22.55,0:00:23.91,Default,Voice,0000,0000,0000,,Otani-san...
-Dialogue: Marked=0,0:00:24.35,0:00:25.46,Default,,0000,0000,0000,,Furukawa-san...
-Dialogue: Marked=0,0:00:26.05,0:00:27.23,Signs,Board,0000,0000,0000,,{\a6}Otani                 Furukawa                 Tatsuta
-Dialogue: Marked=0,0:01:04.66,0:01:05.87,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k15}Fu{\k22}tsu{\k11}u {\k25}ja {\k13}na{\k39}i
-Dialogue: Marked=0,0:01:05.93,0:01:07.43,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k30}A{\k30}sa {\k17}ga {\k23}ki{\k50}te
-Dialogue: Marked=0,0:01:07.60,0:01:10.60,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k27}Na{\k8}i{\k23}fu {\k19}no {\k18}sa{\k32}sa{\k9}t{\k28}ta {\k18}ha{\k9}a{\k28}to {\k18}ga {\k14}u{\k27}zu{\k22}ku
-Dialogue: Marked=0,0:01:10.71,0:01:11.99,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k22}Ne{\k21}bo{\k8}u {\k29}shi{\k23}ta{\k25}i
-Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,Text,0029,0427,0322,,{\pos(169,215)}Elementary School #9
-Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,,0030,0279,0371,,{\pos(220,251)}Alien Counter-Measure Officers
-Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,,0398,0209,0038,,{\pos(617,413)}The End
-Dialogue: Marked=0,0:25:35.06,0:25:36.67,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(92,470)}{0}{\k25}To{\k43}ki-{\k32}do{\kf61}ki
-Dialogue: Marked=0,0:25:36.68,0:25:40.69,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(125,471)}{0}{\k46}Ko{\k27}no {\k46}ka{\k36}ra{\k47}da {\kf200}ga
-Dialogue: Marked=0,0:25:45.04,0:25:47.97,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(132,471)}{\k35}Yo{\k28}ro{\k41}ko{\k35}bi {\k28}na {\k26}no {\k100}ka
-Dialogue: Marked=0,0:25:47.98,0:25:50.22,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(143,473)}{\k14}Ka{\k20}na{\k26}shi{\k15}mi {\k32}na {\k65}no {\k52}ka
-Dialogue: Marked=0,0:25:35.06,0:25:36.67,SongED,,0000,0000,0000,,{\fs24\pos(100,521)}Sometimes
-Dialogue: Marked=0,0:25:36.68,0:25:40.69,SongED,,0000,0000,0000,,{\fs24\pos(136,522)}Whether this body
-Dialogue: Marked=0,0:25:45.04,0:25:47.97,SongED,,0000,0000,0000,,{\fs24\pos(107,520)}Is happiness
-Dialogue: Marked=0,0:25:47.98,0:25:50.22,SongED,,0000,0000,0000,,{\fs24\pos(100,521)}Or sadness
+[Script Info]
+; Script generated by Aegisub 2.1.7
+; http://www.aegisub.net
+ScriptType: v4.00
+Collisions: Normal
+PlayResY: 534
+PlayResX: 720
+WrapStyle: 0
+ScaledBorderAndShadow: no
+Video File: 01-.mkv
+Video Aspect Ratio: 1
+Video Zoom: 8
+Video Position: 36805
+Last Style Storage: Default
+Export Encoding: UTF-8
+Export filters: Karaoke template
+Title: Alien Nine 01
+Original Script: ?
+Original Translation: ?
+Original Editing: ?
+Original Timing: ?
+Synch Point: ?
+Script Updated By: lM
+Update Details: Kareoke by Pahndamonium
+
+[V4 Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
+Style: Song (romaji) ED-furigana,Verdana,15,7363111,8454016,0,16777215,-1,-1,1,1,0,6,30,30,16,0,0
+Style: SongED-furigana,Verdana,15,1393701,8454016,0,16777215,-1,-1,1,1,0,2,30,30,26,0,0
+Style: Song (romaji) OP-furigana,Verdana,15,7363111,8454016,0,16777215,-1,-1,1,1,0,2,30,30,18,0,0
+Style: SongOP-furigana,Verdana,15,3305768,8454016,0,16777215,-1,0,1,1,0,2,30,30,30,0,0
+Style: Signs-furigana,Arial,14,16777215,65535,0,0,-1,0,1,1,0,2,40,40,28,0,0
+Style: CF2-furigana,Verdana,14,16777215,16777215,0,0,-1,-1,1,1,0,2,30,30,30,0,0
+Style: Default-furigana,Verdana,14,16777215,65535,0,0,-1,0,1,1,0,2,30,30,28,0,0
+Style: Default,Verdana,28,16777215,65535,0,0,-1,0,1,2,0,2,30,30,28,0,0
+Style: CF2,Verdana,28,16777215,16777215,0,0,-1,-1,1,2,0,2,30,30,30,0,0
+Style: Signs,Arial,28,16777215,65535,0,0,-1,0,1,2,0,2,40,40,28,0,0
+Style: SongOP,Verdana,30,3305768,8454016,0,16777215,-1,0,1,2,0,2,30,30,30,0,0
+Style: Song (romaji) OP,Verdana,30,7363111,8454016,0,16777215,-1,-1,1,2,0,2,30,30,18,0,0
+Style: SongED,Verdana,30,1393701,8454016,0,16777215,-1,-1,1,2,0,2,30,30,26,0,0
+Style: Song (romaji) ED,Verdana,30,7363111,8454016,0,16777215,-1,-1,1,2,0,6,30,30,16,0,0
+
+[Events]
+Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: Marked=0,0:00:02.42,0:00:03.00,*Default,,0000,0000 ,0000,,{\fnComic Sans MS\c&HFF80FF&}All Japan Boys Soccer Tournament Opens!
+Dialogue: Marked=0,0:00:59.60,0:01:00.60,Default,NTP,0000,0000,0000,,Tak tady jsi...
+Dialogue: Marked=0,0:01:00.81,0:01:01.39,Default,NTP,0000,0000,0000,,Ahoj.
+Dialogue: Marked=0,0:01:01.52,0:01:03.98,Default,NTP,0000,0000,0000,,Pojď se mnou.
+Dialogue: Marked=0,0:01:19.71,0:01:30.26,*Default,SONG,0000,0000,0092,,When you hear the bell of Chirin,...
+Dialogue: Marked=0,0:01:30.26,0:01:40.46,*Default,SONG,0000,0000,0000,,YASASHII MATSUGE WO HOHOEMI WO
+Dialogue: Marked=0,0:01:30.26,0:01:40.46,*Default,SONG,0000,0000,0092,,...recall those soft lashes and that gentle smile.
+Dialogue: Marked=0,0:01:40.46,0:01:50.72,*Default,SONG,0000,0000,0000,,CHIRIN NO SUZU DE OMOIDASU
+Dialogue: Marked=0,0:04:45.67,0:04:48.37,*Default,,0000,0000,0000,,{My Eight-Six turned into an Eight-Five ? !}¡¿Mi Hachi-Roku se ha\nconvertido en un Hachi-Go?!
+Dialogue: Marked=0,0:04:48.97,0:04:51.70,*Default,,0000,0000,0000,,{\c&HFFFFFF&}Tomé el auto prestado,\nte dejé un sustituto.
+Dialogue: Marked=0,0:05:01.52,0:05:04.12,*Default,,0000,0000,0000,,{Takumi,Your dad must be really surprised by now. . .}Ahora mismo tu padre\ndebe estar en shock.
+Dialogue: Marked=0,0:00:15.15,0:00:16.30,Default,Voice,0000,0000,0000,,Otani-san...
+Dialogue: Marked=0,0:00:16.93,0:00:18.17,Default,,0000,0000,0000,,Otani-san...
+Dialogue: Marked=0,0:00:18.00,0:00:21.18,Signs,Sign,0000,0000,0000,,{\a6}Sixth Grade Camellia Class
+Dialogue: Marked=0,0:00:18.58,0:00:19.80,Default,Voice,0000,0000,0000,,Otani-san...
+Dialogue: Marked=0,0:00:20.45,0:00:21.64,Default,,0000,0000,0000,,Otani-san...
+Dialogue: Marked=0,0:00:21.38,0:00:25.88,Signs,Chalkboard,0000,0000,0000,,{\a6}Alien Counter-Measure Officer
+Dialogue: Marked=0,0:00:22.55,0:00:23.91,Default,Voice,0000,0000,0000,,Otani-san...
+Dialogue: Marked=0,0:00:24.35,0:00:25.46,Default,,0000,0000,0000,,Furukawa-san...
+Dialogue: Marked=0,0:00:26.05,0:00:27.23,Signs,Board,0000,0000,0000,,{\a6}Otani                 Furukawa                 Tatsuta
+Dialogue: Marked=0,0:01:04.66,0:01:05.87,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k15}Fu{\k22}tsu{\k11}u {\k25}ja {\k13}na{\k39}i
+Dialogue: Marked=0,0:01:05.93,0:01:07.43,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k30}A{\k30}sa {\k17}ga {\k23}ki{\k50}te
+Dialogue: Marked=0,0:01:07.60,0:01:10.60,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k27}Na{\k8}i{\k23}fu {\k19}no {\k18}sa{\k32}sa{\k9}t{\k28}ta {\k18}ha{\k9}a{\k28}to {\k18}ga {\k14}u{\k27}zu{\k22}ku
+Dialogue: Marked=0,0:01:10.71,0:01:11.99,Song (romaji) OP,,0000,0000,0000,,{2c&H5D8FC3&\c&H75BADB&\2c&H5F7CC3&}{\k22}Ne{\k21}bo{\k8}u {\k29}shi{\k23}ta{\k25}i
+Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,Text,0029,0427,0322,,{\pos(169,215)}Elementary School #9
+Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,,0030,0279,0371,,{\pos(220,251)}Alien Counter-Measure Officers
+Dialogue: Marked=0,0:25:19.73,0:25:23.58,Signs,,0398,0209,0038,,{\pos(617,413)}The End
+Dialogue: Marked=0,0:25:35.06,0:25:36.67,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(92,470)}{0}{\k25}To{\k43}ki-{\k32}do{\kf61}ki
+Dialogue: Marked=0,0:25:36.68,0:25:40.69,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(125,471)}{0}{\k46}Ko{\k27}no {\k46}ka{\k36}ra{\k47}da {\kf200}ga
+Dialogue: Marked=0,0:25:45.04,0:25:47.97,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(132,471)}{\k35}Yo{\k28}ro{\k41}ko{\k35}bi {\k28}na {\k26}no {\k100}ka
+Dialogue: Marked=0,0:25:47.98,0:25:50.22,Song (romaji) ED,,0000,0000,0000,,{\c&H9C6348&\2c&H372824&\fs24\pos(143,473)}{\k14}Ka{\k20}na{\k26}shi{\k15}mi {\k32}na {\k65}no {\k52}ka
+Dialogue: Marked=0,0:25:35.06,0:25:36.67,SongED,,0000,0000,0000,,{\fs24\pos(100,521)}Sometimes
+Dialogue: Marked=0,0:25:36.68,0:25:40.69,SongED,,0000,0000,0000,,{\fs24\pos(136,522)}Whether this body
+Dialogue: Marked=0,0:25:45.04,0:25:47.97,SongED,,0000,0000,0000,,{\fs24\pos(107,520)}Is happiness
+Dialogue: Marked=0,0:25:47.98,0:25:50.22,SongED,,0000,0000,0000,,{\fs24\pos(100,521)}Or sadness
 
 
 
diff --git a/tests/ref/fate/sub-stl b/tests/ref/fate/sub-stl
index 3bf1f0d43f..29d410d8eb 100644
--- a/tests/ref/fate/sub-stl
+++ b/tests/ref/fate/sub-stl
@@ -1,31 +1,31 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:31.02,0:00:33.00,Default,,0,0,0,,Hello, my name is Axel Kornmesser.
-Dialogue: 0,0:00:45.02,0:00:49.13,Default,,0,0,0,,It is always a pleasure to work with ESA astronomers.
-Dialogue: 0,0:00:49.13,0:00:52.03,Default,,0,0,0,,The "Eyes on The Skies" documentary
-Dialogue: 0,0:00:52.03,0:00:55.09,Default,,0,0,0,,was our second collaboration
-Dialogue: 0,0:00:55.09,0:00:58.07,Default,,0,0,0,,after a great \Nexperience in 2005,
-Dialogue: 0,0:00:58.07,0:00:59.20,Default,,0,0,0,,when \Nwe did the story about the
-Dialogue: 0,0:00:59.20,0:01:04.01,Default,,0,0,0,,Hubble Telescope "15 Years of Discovery".
-Dialogue: 0,0:01:04.16,0:01:07.04,Default,,0,0,0,,It was a lot of fun again.
-Dialogue: 0,0:01:15.04,0:01:18.16,Default,,0,0,0,,We usually \N don't get the final film \Nbefore we start composing
-Dialogue: 0,0:01:18.21,0:01:22.02,Default,,0,0,0,,We had a script and many details about the story,
-Dialogue: 0,0:01:22.10,0:01:26.08,Default,,0,0,0,,and so we worked\N in parallel \Nin the movie production
-Dialogue: 0,0:01:27.04,0:01:30.17,Default,,0,0,0,,The largest part of \N the soundtrack \Nwas done without seeing a movie
-Dialogue: 0,0:01:30.17,0:01:36.06,Default,,0,0,0,,It was no problem, but very inspiring \Nand a free working process.
-Dialogue: 0,0:02:08.13,0:02:10.23,Default,,0,0,0,,Galileo's theme is one of my favourites.
-Dialogue: 0,0:02:10.23,0:02:14.10,Default,,0,0,0,,We did a lot of different versions \Nabout the central theme.
-Dialogue: 0,0:02:14.10,0:02:18.02,Default,,0,0,0,,For the 17th century \N we used a nice harpsichord
-Dialogue: 0,0:02:19.05,0:02:22.09,Default,,0,0,0,,and so we landed directly into Galileo's time.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:31.02,0:00:33.00,Default,,0,0,0,,Hello, my name is Axel Kornmesser.
+Dialogue: 0,0:00:45.02,0:00:49.13,Default,,0,0,0,,It is always a pleasure to work with ESA astronomers.
+Dialogue: 0,0:00:49.13,0:00:52.03,Default,,0,0,0,,The "Eyes on The Skies" documentary
+Dialogue: 0,0:00:52.03,0:00:55.09,Default,,0,0,0,,was our second collaboration
+Dialogue: 0,0:00:55.09,0:00:58.07,Default,,0,0,0,,after a great \Nexperience in 2005,
+Dialogue: 0,0:00:58.07,0:00:59.20,Default,,0,0,0,,when \Nwe did the story about the
+Dialogue: 0,0:00:59.20,0:01:04.01,Default,,0,0,0,,Hubble Telescope "15 Years of Discovery".
+Dialogue: 0,0:01:04.16,0:01:07.04,Default,,0,0,0,,It was a lot of fun again.
+Dialogue: 0,0:01:15.04,0:01:18.16,Default,,0,0,0,,We usually \N don't get the final film \Nbefore we start composing
+Dialogue: 0,0:01:18.21,0:01:22.02,Default,,0,0,0,,We had a script and many details about the story,
+Dialogue: 0,0:01:22.10,0:01:26.08,Default,,0,0,0,,and so we worked\N in parallel \Nin the movie production
+Dialogue: 0,0:01:27.04,0:01:30.17,Default,,0,0,0,,The largest part of \N the soundtrack \Nwas done without seeing a movie
+Dialogue: 0,0:01:30.17,0:01:36.06,Default,,0,0,0,,It was no problem, but very inspiring \Nand a free working process.
+Dialogue: 0,0:02:08.13,0:02:10.23,Default,,0,0,0,,Galileo's theme is one of my favourites.
+Dialogue: 0,0:02:10.23,0:02:14.10,Default,,0,0,0,,We did a lot of different versions \Nabout the central theme.
+Dialogue: 0,0:02:14.10,0:02:18.02,Default,,0,0,0,,For the 17th century \N we used a nice harpsichord
+Dialogue: 0,0:02:19.05,0:02:22.09,Default,,0,0,0,,and so we landed directly into Galileo's time.
diff --git a/tests/ref/fate/sub-subviewer b/tests/ref/fate/sub-subviewer
index b3d69bfd1f..eedb0e0416 100644
--- a/tests/ref/fate/sub-subviewer
+++ b/tests/ref/fate/sub-subviewer
@@ -1,17 +1,17 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:01:00.10,0:02:00.20,Default,,0,0,0,,Hello.\NWorld!
-Dialogue: 0,0:02:00.30,0:03:00.40,Default,,0,0,0,,\Nfoo\Nbar\Nbla\Nmixed with br
-Dialogue: 0,0:03:04.12,0:03:10.20,Default,,0,0,0,,Another event.
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:01:00.10,0:02:00.20,Default,,0,0,0,,Hello.\NWorld!
+Dialogue: 0,0:02:00.30,0:03:00.40,Default,,0,0,0,,\Nfoo\Nbar\Nbla\Nmixed with br
+Dialogue: 0,0:03:04.12,0:03:10.20,Default,,0,0,0,,Another event.
diff --git a/tests/ref/fate/sub-subviewer1 b/tests/ref/fate/sub-subviewer1
index 4c19890ff1..1e241264c3 100644
--- a/tests/ref/fate/sub-subviewer1
+++ b/tests/ref/fate/sub-subviewer1
@@ -1,24 +1,24 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:03:45.00,0:03:48.00,Default,,0,0,0,,- ToIerábiIis?\N- Azt jeIenti: tűrhető.
-Dialogue: 0,0:03:48.00,0:03:51.00,Default,,0,0,0,,Tudom, mit jeIent. Megnézhetem?
-Dialogue: 0,0:03:52.00,0:03:54.00,Default,,0,0,0,,TiszteIt bírónő.
-Dialogue: 0,0:03:57.00,0:04:00.00,Default,,0,0,0,,KépzeIje magát\Na környékbeIi gyermekek heIyébe.
-Dialogue: 0,0:04:01.00,0:04:05.00,Default,,0,0,0,,Naphosszat monoton, döngöIő zaj\Nszaggatja a dobhártyájukat.
-Dialogue: 0,0:04:05.00,0:04:10.00,Default,,0,0,0,,Ahogy egyre föIébük tornyosuI,\Nrájuk veti sötét árnyékát.
-Dialogue: 0,0:04:10.00,0:04:15.00,Default,,0,0,0,,Ez a feIhőkarcoIó, az emberi\Nmohóság újabb emIékműve.
-Dialogue: 0,1:50:38.00,1:50:41.00,Default,,0,0,0,,készen áIIok.
-Dialogue: 0,1:51:00.00,1:51:03.00,Default,,0,0,0,,Joe ... Miguel keres.
-Dialogue: 0,2:00:18.00,9:59:59.99,Default,,0,0,0,,Magyar szöveg: Nikowvitz Oszkár
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:03:45.00,0:03:48.00,Default,,0,0,0,,- ToIerábiIis?\N- Azt jeIenti: tűrhető.
+Dialogue: 0,0:03:48.00,0:03:51.00,Default,,0,0,0,,Tudom, mit jeIent. Megnézhetem?
+Dialogue: 0,0:03:52.00,0:03:54.00,Default,,0,0,0,,TiszteIt bírónő.
+Dialogue: 0,0:03:57.00,0:04:00.00,Default,,0,0,0,,KépzeIje magát\Na környékbeIi gyermekek heIyébe.
+Dialogue: 0,0:04:01.00,0:04:05.00,Default,,0,0,0,,Naphosszat monoton, döngöIő zaj\Nszaggatja a dobhártyájukat.
+Dialogue: 0,0:04:05.00,0:04:10.00,Default,,0,0,0,,Ahogy egyre föIébük tornyosuI,\Nrájuk veti sötét árnyékát.
+Dialogue: 0,0:04:10.00,0:04:15.00,Default,,0,0,0,,Ez a feIhőkarcoIó, az emberi\Nmohóság újabb emIékműve.
+Dialogue: 0,1:50:38.00,1:50:41.00,Default,,0,0,0,,készen áIIok.
+Dialogue: 0,1:51:00.00,1:51:03.00,Default,,0,0,0,,Joe ... Miguel keres.
+Dialogue: 0,2:00:18.00,9:59:59.99,Default,,0,0,0,,Magyar szöveg: Nikowvitz Oszkár
diff --git a/tests/ref/fate/sub-vplayer b/tests/ref/fate/sub-vplayer
index 3949a2be89..3b770fe40f 100644
--- a/tests/ref/fate/sub-vplayer
+++ b/tests/ref/fate/sub-vplayer
@@ -1,17 +1,17 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.12,0:00:23.51,Default,,0,0,0,,Hello
-Dialogue: 0,0:00:23.51,0:01:02.05,Default,,0,0,0,,World
-Dialogue: 0,0:01:02.05,9:59:59.99,Default,,0,0,0,,!\Nnewline
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.12,0:00:23.51,Default,,0,0,0,,Hello
+Dialogue: 0,0:00:23.51,0:01:02.05,Default,,0,0,0,,World
+Dialogue: 0,0:01:02.05,9:59:59.99,Default,,0,0,0,,!\Nnewline
diff --git a/tests/ref/fate/sub-webvtt b/tests/ref/fate/sub-webvtt
index 2317c7d5a0..ea587b327c 100644
--- a/tests/ref/fate/sub-webvtt
+++ b/tests/ref/fate/sub-webvtt
@@ -1,29 +1,29 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0,0,0,,We are in New York City\NRandom line added
-Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,We're actually at the Lucern Hotel, just down the street
-Dialogue: 0,0:00:16.00,0:00:18.00,Default,,0,0,0,,from the American Museum of Natural History
-Dialogue: 0,0:00:18.00,0:00:20.00,Default,,0,0,0,,And with me is Neil deGrasse Tyson
-Dialogue: 0,0:00:20.00,0:00:22.00,Default,,0,0,0,,Astrophysicist, Director of the Hayden Planetarium
-Dialogue: 0,0:00:22.00,0:00:24.00,Default,,0,0,0,,at the AMNH.
-Dialogue: 0,0:00:24.00,0:00:26.00,Default,,0,0,0,,Thank you for walking down here.
-Dialogue: 0,0:00:27.00,0:00:30.00,Default,,0,0,0,,And I want to do a follow-up on the last conversation we did.\Nmultiple lines\Nagain
-Dialogue: 0,0:00:30.00,0:00:31.50,Default,,0,0,0,,When we e-mailed—
-Dialogue: 0,0:00:30.50,0:00:32.50,Default,,0,0,0,,Didn't we {\b1}talk {\i1}about\N{\i0} enough{\b0} in that conversation? \{I'm not an ASS comment\}
-Dialogue: 0,0:00:32.00,0:00:35.50,Default,,0,0,0,,No! No no no no; 'cos 'cos obviously 'cos
-Dialogue: 0,0:00:32.50,0:00:33.50,Default,,0,0,0,,{\i1}Laughs{\i0}
-Dialogue: 0,0:00:35.50,0:00:38.00,Default,,0,0,0,,You know I'm so excited my glasses are falling off here.
-Dialogue: 0,0:00:50.00,0:00:51.13,Default,,0,0,0,,This event and the following\None have CLRF
-Dialogue: 0,0:59:00.12,1:23:45.68,Default,,0,0,0,,Obiwan Kenobi
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:11.00,0:00:13.00,Default,,0,0,0,,We are in New York City\NRandom line added
+Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,We're actually at the Lucern Hotel, just down the street
+Dialogue: 0,0:00:16.00,0:00:18.00,Default,,0,0,0,,from the American Museum of Natural History
+Dialogue: 0,0:00:18.00,0:00:20.00,Default,,0,0,0,,And with me is Neil deGrasse Tyson
+Dialogue: 0,0:00:20.00,0:00:22.00,Default,,0,0,0,,Astrophysicist, Director of the Hayden Planetarium
+Dialogue: 0,0:00:22.00,0:00:24.00,Default,,0,0,0,,at the AMNH.
+Dialogue: 0,0:00:24.00,0:00:26.00,Default,,0,0,0,,Thank you for walking down here.
+Dialogue: 0,0:00:27.00,0:00:30.00,Default,,0,0,0,,And I want to do a follow-up on the last conversation we did.\Nmultiple lines\Nagain
+Dialogue: 0,0:00:30.00,0:00:31.50,Default,,0,0,0,,When we e-mailed—
+Dialogue: 0,0:00:30.50,0:00:32.50,Default,,0,0,0,,Didn't we {\b1}talk {\i1}about\N{\i0} enough{\b0} in that conversation? \{I'm not an ASS comment\}
+Dialogue: 0,0:00:32.00,0:00:35.50,Default,,0,0,0,,No! No no no no; 'cos 'cos obviously 'cos
+Dialogue: 0,0:00:32.50,0:00:33.50,Default,,0,0,0,,{\i1}Laughs{\i0}
+Dialogue: 0,0:00:35.50,0:00:38.00,Default,,0,0,0,,You know I'm so excited my glasses are falling off here.
+Dialogue: 0,0:00:50.00,0:00:51.13,Default,,0,0,0,,This event and the following\None have CLRF
+Dialogue: 0,0:59:00.12,1:23:45.68,Default,,0,0,0,,Obiwan Kenobi
diff --git a/tests/ref/fate/sub-webvtt2 b/tests/ref/fate/sub-webvtt2
index 1d236eabdc..90f78d904b 100644
--- a/tests/ref/fate/sub-webvtt2
+++ b/tests/ref/fate/sub-webvtt2
@@ -1,26 +1,26 @@ 
-[Script Info]
-; Script generated by FFmpeg/Lavc
-ScriptType: v4.00+
-PlayResX: 384
-PlayResY: 288
-ScaledBorderAndShadow: yes
-YCbCr Matrix: None
-
-[V4+ Styles]
-Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
-Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
-
-[Events]
-Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
-Dialogue: 0,0:00:00.00,0:00:20.00,Default,,0,0,0,,Hi, my name is Fred
-Dialogue: 0,0:00:02.50,0:00:22.50,Default,,0,0,0,,Hi, I’m Bill
-Dialogue: 0,0:00:05.00,0:00:25.00,Default,,0,0,0,,Would you like to get a coffee?
-Dialogue: 0,0:00:07.50,0:00:27.50,Default,,0,0,0,,Sure! I’ve only had one today.
-Dialogue: 0,0:00:10.00,0:00:30.00,Default,,0,0,0,,This is my fourth!
-Dialogue: 0,0:00:12.50,0:00:32.50,Default,,0,0,0,,OK, let’s go.
-Dialogue: 0,0:00:38.00,0:00:43.00,Default,,0,0,0,,I want to 愛あい love you\NThat's not proper English!
-Dialogue: 0,0:00:43.00,0:00:46.00,Default,,0,0,0,,{\i1}キツネ{\i0}じゃない キツネじゃない\N乙女おとめは
-Dialogue: 0,0:00:50.00,0:00:55.00,Default,,0,0,0,,Some time ago in a rather distant place....
-Dialogue: 0,0:00:55.00,0:01:00.00,Default,,0,0,0,,Descending: 123456\NAscending: 123456
-Dialogue: 0,0:01:00.00,0:01:05.00,Default,,0,0,0,,>> Never gonna give you up Never gonna let you down\NNever\hgonna\hrun\haround & desert\hyou
-Dialogue: 0,0:55:00.00,1:00:00.00,Default,,0,0,0,,Transcrit par Célestes™
+[Script Info]
+; Script generated by FFmpeg/Lavc
+ScriptType: v4.00+
+PlayResX: 384
+PlayResY: 288
+ScaledBorderAndShadow: yes
+YCbCr Matrix: None
+
+[V4+ Styles]
+Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
+Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,1
+
+[Events]
+Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
+Dialogue: 0,0:00:00.00,0:00:20.00,Default,,0,0,0,,Hi, my name is Fred
+Dialogue: 0,0:00:02.50,0:00:22.50,Default,,0,0,0,,Hi, I’m Bill
+Dialogue: 0,0:00:05.00,0:00:25.00,Default,,0,0,0,,Would you like to get a coffee?
+Dialogue: 0,0:00:07.50,0:00:27.50,Default,,0,0,0,,Sure! I’ve only had one today.
+Dialogue: 0,0:00:10.00,0:00:30.00,Default,,0,0,0,,This is my fourth!
+Dialogue: 0,0:00:12.50,0:00:32.50,Default,,0,0,0,,OK, let’s go.
+Dialogue: 0,0:00:38.00,0:00:43.00,Default,,0,0,0,,I want to 愛あい love you\NThat's not proper English!
+Dialogue: 0,0:00:43.00,0:00:46.00,Default,,0,0,0,,{\i1}キツネ{\i0}じゃない キツネじゃない\N乙女おとめは
+Dialogue: 0,0:00:50.00,0:00:55.00,Default,,0,0,0,,Some time ago in a rather distant place....
+Dialogue: 0,0:00:55.00,0:01:00.00,Default,,0,0,0,,Descending: 123456\NAscending: 123456
+Dialogue: 0,0:01:00.00,0:01:05.00,Default,,0,0,0,,>> Never gonna give you up Never gonna let you down\NNever\hgonna\hrun\haround & desert\hyou
+Dialogue: 0,0:55:00.00,1:00:00.00,Default,,0,0,0,,Transcrit par Célestes™