Zum Hauptinhalt springen
SubtitleMatrix

ASS-Override-Tags entfernen

Text und GestaltungMarkup und Tags entfernen
Oder Untertiteltext einfügen

Optionen

Ein Feld, sieben Möglichkeiten, und jede Möglichkeit hat ihre eigene Seite. Kursiv, Fett, Unterstrichen und Farbe entfernen diese eine Art von Bereich und lassen die übrige Formatierung der Zeile in Ruhe. Alle entfernt jeden Bereich, den das Werkzeug modelliert — jene vier plus Karaoke-Zeitangaben — und lässt alles andere im Text unangetastet. HTML macht dasselbe und entfernt zusätzlich die Auszeichnung in spitzen Klammern, die im Text verblieben ist, weil das Werkzeug sie nicht modelliert, etwa die Sprecher-Tags <v Bob> und <c.className> von VTT. ASS macht dasselbe stattdessen für Override-Blöcke und räumt die {...}-Codes ab, die beim Einlesen nicht erkannt wurden, etwa {\fad(500,500)}. Diese Seite füllt das Feld mit der Möglichkeit, die ihr Titel nennt, und listet keine andere.

In welcher Bildrate die Zeitangaben gezählt werden. Auf den Formatseiten ist das, was MicroDVD braucht, denn es speichert Zeitangaben als Bildnummern. Auf den Bildraten-Seiten ist es die Rate, gegen die die Datei getaktet wurde — die Fassung, für die die Untertitel erstellt wurden —, und das zweite Feld der Seite nimmt die Rate des Videos auf, mit dem Sie sie verwenden wollen. 23,976, 24, 25, 29,97, 30, 50, 59,94 und 60 sind die üblichen. Ein falscher Wert verschiebt die gesamte Zeitachse, und auf den Bildraten-Seiten verschiebt er sie um einen Faktor statt um einen festen Betrag.

Diese Seite löscht die Override-Codes aus einer ASS- oder SSA-Datei: die Stilspannen, das Karaoke-Timing, die übrig gebliebenen Effektblöcke und die Positionierung. Zurück kommt reiner getakteter Text – die Wörter, die Blockzeiten und die Struktur der Datei, mit den Zeilen dort, wo ihr benannter Stil sie hinsetzt.

ASS ist das Format, das am meisten sagen kann, und das meiste davon steht als Override-Code im Text der Zeile. Ein Teil davon ist Auszeichnung, die das Werkzeug modelliert – {\i1}, {1}, {\c&H...&}, {\k50} –, ein anderer Teil sind Effekte, die es nicht modelliert: Ein- und Ausblenden, Bewegungen, Skalierung, Weichzeichnen, alle in derselben Blockform geschrieben. Diese nicht modellierten Blöcke bleiben beim Lesen bewusst im Text stehen, denn Auszeichnung zu fressen, die das Werkzeug nicht lesen kann, wäre Datenverlust. Diese Seite ist die, die sie wegräumt.

Die Positionierung wird hier ebenfalls gelöscht, und das ist das Einzige an diesem Lauf, was nicht bloß Markup entfernt: Wo eine Zeile sitzt, ist eine Eigenschaft des ganzen Blocks und keine Spanne über dem Text, eine positionierte Zeile fällt also dorthin zurück, wo ihr benannter Stil sie platziert. Erst das macht die Ausgabe wirklich schlicht. Das benannte Stylesheet bleibt unangetastet – ein Block mit fettem Stil sieht weiterhin fett aus, weil die Fettung zum Stil gehört und nicht zum Text der Zeile.

Ein Code bleibt stehen, und die Seite sagt das, statt Sie darauf stoßen zu lassen: Eine Neun-Felder-Ausrichtung wie {\an8} bleibt unverändert erhalten. Sie kodiert die senkrechte Lage zusammen mit der waagerechten, und die Ausrichtungsvorstellung des Werkzeugs kennt nur links, Mitte und rechts – für die andere Hälfte gibt es keinen Ort. Sie halb zu verstehen hieße, dass eine Datei falsch zurückgeschrieben wird. Nichts wird hochgeladen; eine Datei ohne zu entfernende Codes kommt Byte für Byte zurück.

Beispiele

Stilspannen und ein übrig gebliebener Effektblock

Eingabe

[Script Info]
Title: fade

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,{\fad(500,500)}{\i1}hello{\i0}

Ausgabe

[Script Info]
Title: fade

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,hello

{\fad(500,500)} bittet den Player, die Zeile je eine halbe Sekunde lang ein- und auszublenden. Das Werkzeug hat das nie modelliert, der Block stand also im Text, bis dieser Lauf ihn wegräumte – und das Kursivpaar daneben geht denselben Weg, die Wörter bleiben. Nichts in der Ausgabe erinnert daran, dass das Einblenden je da war.

Eine positionierte Zeile

Eingabe

[Script Info]
Title: position

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,{\pos(100,200)}hello there

Ausgabe

[Script Info]
Title: position

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,hello there

Der Zeile wird nicht länger gesagt, wo sie sitzen soll, sie fällt also dorthin zurück, wo der im Ereignis genannte Stil sie platziert. Das ist der eine Teil des Laufs, der nicht einfach Markup entfernt, und der Grund, warum diese Seite die richtige für eine Datei ist, die wirklich schlicht werden muss und nicht nur unbetont.

Eine Neun-Felder-Ausrichtung, die bleibt

Eingabe

[Script Info]
Title: alignment

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,{\an8}hello there

Ausgabe

[Script Info]
Title: alignment

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,0,0,0,0,100,100,0,0,1,1,1,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.00,Default,,0,0,0,,{\an8}hello there

Diese Zeile kommt unverändert zurück, und das ist kein Fehler. {\an8} sagt oben und Mitte zugleich, während die Ausrichtung des Werkzeugs nur links, Mitte und rechts kennt – die senkrechte Hälfte hat also keinen Ort, und der Tag bleibt ganz erhalten, statt halb verstanden zu werden. Der Positionierungscode wird gelöscht, dieser nicht.

Häufige Fragen

Warum überlebt ein Neun-Felder-Ausrichtungstag diese Seite?

Weil das Werkzeug ihn nicht exakt abbilden kann. Eine Ausrichtung wie {\an8} benennt eines von neun Feldern und kodiert damit waagerechte und senkrechte Lage gleichzeitig, während die eigene Ausrichtung des Werkzeugs nur links, Mitte und rechts kennt. Die waagerechte Hälfte zu speichern und die andere fallenzulassen würde die Datei beim Zurückschreiben verfälschen, deshalb bleibt der Tag wörtlich erhalten. Der Positionierungscode wird gelöscht, der Ausrichtungscode nicht – und die Seite sagt das, statt es Sie merken zu lassen.

Was ist ein Override-Block, und warum steht er im Text?

Es sind Anweisungen, die in geschweiften Klammern mitten im Text einer Zeile stehen und den Player anweisen, etwas mit dieser Zeile zu tun: die Auszeichnung ändern, sie animieren, ein- oder ausblenden, verschieben. Das Werkzeug modelliert die übliche Auszeichnungs-Teilmenge und liest sie in seine eigene Struktur, den Rest lässt es genau da, wo es ihn gefunden hat – Einblendungen, Bewegungen, Weichzeichnen und Ähnliches bleiben wörtlich stehen, statt verworfen zu werden, denn Markup stillschweigend zu verwerfen, das der Leser nicht versteht, wäre Datenverlust. Diese Seite ist der Ort, an dem sie schließlich verschwinden.

Ändern sich Zeiten oder Text, wenn die Override-Codes gelöscht werden?

Nein. Die Wörter kommen Byte für Byte zurück, jeder Block behält Start und Ende auf die Millisekunde, und die Reihenfolge ist die der Datei. Zeilenumbrüche innerhalb eines Blocks gehören zum Block und nicht zu seiner Auszeichnung, sie bleiben also, wo die Datei sie gesetzt hat. Geändert werden die Anweisungen um die Wörter herum und in manchen Fällen die Stelle, an der die Zeile auf dem Bildschirm sitzt.

Spielt die Ausgabe nach dem Entfernen der Codes noch korrekt ab?

Ja, und berechenbarer als vorher. Ein Override-Code, den ein Player nicht versteht, wird bestenfalls ignoriert und schlimmstenfalls falsch geparst, und gerade bei den Effektcodes sind sich Player uneinig. Reiner getakteter Text hat diese Mehrdeutigkeit nicht. Verließ sich die Datei auf die Positionierung, um einen Untertitel über eine bestimmte Stelle im Bild zu legen, ist diese Platzierung weg und die Zeile sitzt dort, wo der Stil sie hinsetzt.

Entfernt diese Seite auch die benannten Stile aus dem Stylesheet?

Nein – das Stylesheet und der Stil, auf den jeder Block verweist, bleiben genau, wie sie waren. Die Seite arbeitet an den Codes im Text einer Zeile, und ein Block mit fettem Stil sieht danach weiterhin fett aus, weil die Fettung vom Stil kommt und nicht vom Text der Zeile. Ein Stylesheet auszuräumen ist eine andere Aufgabe, und dafür gibt es noch keine Seite.

Kann ich diese Seite auf eine SRT-Datei anwenden oder nur auf ASS und SSA?

Sie können jedes Format hineinziehen, das die Website liest. Bei einer SRT- oder WebVTT-Datei erledigt die erste Hälfte weiter ihre Arbeit – die Stilspannen gehen –, und die zweite Hälfte findet einfach nichts, weil geschweifte Blöcke in diesen Formaten nicht vorkommen. Eine Datei ohne Auszeichnung und ohne geschweifte Blöcke kommt Byte für Byte zurück, das ehrliche Ergebnis eines Laufs, der nichts zu tun hatte.

Verwandte Werkzeuge