SubStationAlpha-Benutzerhandbuch
Dieses Dokument ist aus der Spezifikation des Dateiformats für SubStationAlpha (ursprüngliche Adresse im Web: http://www.eswat.demon.co.uk, heute nicht mehr funktionsfähig) hervorgegangen.
Erweiterungen für das Dateiformat des Programms Advanced SubStation sind an den entsprechenden Stellen eingearbeitet und entsprechend markiert.
Einige Teile des Benutzerhandbuchs beziehen sich spezifisch auf die Bearbeitung von Skripten im SSA- bzw. ASS-Format mit dem Programm SubStationAlpha; die meisten Abschnitte befassen sich jedoch allgemein mit dem Format dieser Skripte, welche von diversen anderen Fansubber-Hilfsprogrammen ebenfalls interpretiert werden. Insofern kann die Lektüre dieses Handbuchs für alle, die ein Skript in diesem Format bearbeiten (Editoren, Timer, Typesetter, Encoder), von mehr oder weniger großem Interesse sein.
Allgemeines über das Skriptformat "SubStationAlpha v4.00+"
Dieses Dokument setzt voraus, dass der Leser mit den Begriffen und Konzepten des Programms SubStationAlpha (SSA) vertraut ist. Diese sind in der Hilfedatei ssa.hlp
beschrieben, welche gemeinsam mit dem Programm ausgeliefert wird.
- Das Skript-Format v4.00 unterscheidet sich von demjenigen früherer Versionen von SSA. SSA v4.00 kann Skripte älterer Versionen lesen, aber v4.00-Skripte können von älteren SSA-Versionen nicht korrekt geladen werden.
Einige der Änderungen des Skriptformates haben das Ziel, allen Versionen von SSA ab v4.00 zu ermöglichen, Skripte der aktuellen und jeder künftigen Version lesen zu können; insbesondere die neuen "Format
"-Zeilen erlauben es SSA, nur diejenigen Informationen zu lesen, die es verarbeiten kann, und alle zusätzlichen Informationen künftiger Skript-Formate zu ignorieren.
- Skripte sind einfache (DOS-) Textdateien. Sie können also "manuell" mit jedem normalen Texteditor bearbeitet werden, doch dabei ist entsprechende Vorsicht erforderlich: SSA setzt einen korrekten Aufbau des Skripts gemäß der in dem vorliegenden Dokument beschriebenen Regeln voraus, und jeder Fehler kann zu unvorhersehbaren Folgen führen, sobald das Skript von SSA eingelesen wird.
- Ein Skript ist unterteilt in Abschnitte, ähnlich einer Windows-
ini
-Datei.
SSA-Skripte sind allerdings keine wirklichen Windows-.ini
-Dateien, und einige Eigenschaften, die man erwarten könnte, sind deshalb nicht gewährleistet.
- Die meisten Zeilen innerhalb jedes Abschnittes beginnen mit einer Art Schlüsselwort zur Beschreibung der Art des Inhalts dieser Zeile. Dieses Schlüsselwort wird von einem Doppelpunkt gefolgt.
- Die Informationsfelder innerhalb jeder Zeile werden durch Kommata voneinander getrennt. Daher darf innerhalb von Charakter- oder Style-Namen kein Komma verwendet werden (was SSA selbst bei der Eingabe auch verhindern würde). Es ist deshalb aber auch relativ einfach, Abschnitte eines SSA-Skripts als CSV-Datei in eine Tabellenkalkulation zu laden und die von anderen Untertitelprogrammen ggf. benötigten Spalten herauszuschneiden.
- Die Reihenfolge, in welcher die Ereignisse innerhalb eines Skripts eingegeben werden, ist für SSA irrelevant. Selbst wenn sie in exakt umgekehrter Reihenfolge eingegeben worden wären, würde SSA sie immer noch korrekt abspielen. Die Annahme, dass die Reihenfolge der Ereignis-Zeilen der chronologischen Reihenfolge ihres Abspielens entsprechen würde, ist also nicht zulässig.
- Strukturell fehlerhafte Zeilen werden ignoriert. SSA überliest alle Zeilen, die es nicht verstehen kann, und gibt nach dem Laden des Skripts eine Warnungsmeldung mit der Anzahl der ignorierten Zeilen aus.
- Es gibt kein Zeichen für die Markierung einer Fortsetzungszeile. Jeder Eintrag in einem Skript enthält seine vollständige Information innerhalb einer einzigen Zeile. (Anm.d.Übers.: Ausgenommen in das Skript eingebundene Binärdateien.)
- Falls innerhalb eines Skripts undefinierte Styles auftreten, dann wird der
*Default
-Style verwendet. Falls beispielsweise Ereignis-Zeilen aus einem anderen Skript eingefügt wurden, ohne die Definitionen der in diesen Zeilen verwendeten Styles ebenfalls zu übernehmen, dann verwendet SSA beim Abspielen des Skripts seine Default-Style-Einstellungen für diese Zeilen.
- Falls ein Style eine Schriftart verwendet, die nicht installiert ist, wird stattdessen die Schriftart
Arial
verwendet. Dies kann bei Skripten passieren, die der Anwender nicht selbst erstellt hat - auf dem System des Skript-Autors könnten zusätzliche Schriftarten installiert sein.
Die Abschnitte innerhalb eines SSA-Skripts
Allgemeine Informationen
[Script Info]
Dieser Abschnitt enthält allgemeine Informationen über das Skript.
In einem Skript des Formats der SSA-Version 4 muss die Zeile "[Script Info]
" die erste Zeile der Datei sein.
Style-Definitionen
[v4 Styles]
Dieser Abschnitt enthält alle Style-Definitionen, die von diesem Skript benötigt werden. Jeder von einem Untertitel verwendete Style sollte hier definiert sein.
ASS verwendet die Markierung "[v4 Styles+]
" für diesen Abschnitt.
Ereignis-Definitionen
[Events]
Dieser Abschnitt enthält alle Ereignisdefinitionen für das Skript - alle Untertitel, Kommentare, eingebundene Bild-, Sound- und Video-Dateien sowie interne Kommandos von SSA. Im Wesentlichen enthält er alle Informationen, die im Tabellen-Raster des Haupt-Bildschirms von SubStationAlpha sichtbar sind.
Eingebundene Schriftarten
[Fonts]
Dieser Abschnitt enthält als Text codierte Schriftartdateien, falls der Anwender sich dafür entschieden hat, Nonstandard-Schriftarten direkt in das Skript einzubinden. Diese Einbindung ist innerhalb von SSA-Skripten nur mit Truetype-Schriftarten möglich.
Jede Schriftartdatei wird durch eine Zeile im Format
fontname:
<dateiname>
eingeleitet.
Das Wort "fontname
" muss in Kleinbuchstaben notiert werden (Großbuchstaben werden als Teil des Inhalts einer textcodierten Datei interpretiert).
<dateiname> ist der Name der Datei, den SSA beim Abspeichern der Schriftart verwenden wird. Er besteht aus
- dem ursprünglichen Dateinamen der Truetype-Schriftart,
- gefolgt von einem Underscore "_",
- gefolgt von einem optionalen "B", falls die Schrift fett (bold) dargestellt werden soll,
- gefolgt von einem optionalen "I", falls die Schrift kursiv (italic) dargestellt werden soll,
- gefolgt von einer Zahl zur Bezeichnung des Codes (Zeichensatz) sowie
- der Endung ".ttf".
Beispiele für solche Anweisungen:
fontname: chaucer_B0.ttf
fontname: comic_0.ttf
Die fontname
-Zeile wird gefolgt von Zeilen druckbarer Zeichen, welche die Binärwerte des Inhalts der Schriftartdatei darstellen. Jede Zeile ist genau 80 Zeichen lang, ausgenommen die letzte Zeile, welche kürzer sein kann.
Die genaue Art der Umwandlung von binären in druckbare Zeichen ist im Anhang B dieses Dokuments genauer beschrieben.
Eingebundene Bilddateien
[Graphics]
Dieser Abschnitt enthält als Text codierte Bilddateien, falls der Anwender sich dafür entschieden hat, Bilddateien innerhalb des Skripts zu verwenden.
Die textcodierte Darstellung dieser binären Bilddateien ist zwar ineffizient, doch sie garantiert, dass die Bearbeitung von SSA-Skripten mit jedem normalen Texteditor weiterhin möglich bleibt.
Jede Bilddatei wird durch eine Zeile im Format
filename:
<dateiname>
eingeleitet.
Das Wort "filename
" muss in Kleinbuchstaben notiert werden (Großbuchstaben werden als Teil des Inhalts einer textcodierten Datei interpretiert).
<dateiname> ist der Name der Datei, unter dem SSA die Bilddatei abspeichern wird. Er muss dem Namen eines in der Skript-Datei verwendeten Bildes entsprechen.
SSA speichert alle innerhalb des Skripts gefundenen Bilder in einem Unterverzeichnis seines Programm-Installationsverzeichnisses mit dem Namen "Pictures
", also beispielsweise im Verzeichnis "c:\Programme\Sub Station Alpha v4.00\Pictures
". SSA versucht, Dateien zunächst über den im Skript angegebenen Namen zu laden; wird eine Bilddatei dort nicht gefunden, dann sucht SSA nach dieser Datei in seinem "Pictures
"-Unterverzeichnis.
Die filename
-Zeile wird gefolgt von Zeilen druckbarer Zeichen, welche die Binärwerte des Inhalts der Bilddatei darstellen; für das Format gilt dasselbe wie bei Schriftartdateien.
Die genaue Art der Umwandlung von binären in druckbare Zeichen ist im Anhang B dieses Dokuments genauer beschrieben.
Zeilentypen innerhalb eines SSA-Skripts
Liste aller Zeilentypen eines SSA-Skripts
Dieses Kapitel enthält eine Kurzbeschreibung aller Zeilentypen, die innerhalb eines SSA-Skripts zulässig sind. Eine vollständige Beschreibung jedes einzelnen Zeilentyps ist den nachfolgenden Kapiteln zu entnehmen.
Zeilentyp | Bedeutung |
---|---|
!:
|
Dies kennzeichnet eine Kommentarzeile innerhalb des Skripts. Der Inhalt dieser Zeile ist nicht sichtbar, wenn das Skript mit SSA geöffnet wird. |
Title:
|
In dieser Zeile kann man dem Skript einen beschreibenden Namen geben. |
Original Script:
|
Der bzw. die ursprünglichen Autor(en) des Skripts |
Original Translation:
|
(optional) Der ursprüngliche Übersetzer der Dialoge |
Original Editing:
|
(optional) Der bzw. die ursprüngliche(n) Editor(en) des Skripts, üblicherweise der bzw. die Namen derjenigen Person(en), welche die unbearbeitete Übersetzung in idiomatisches und besser lesbares Englisch umgewandelt haben. |
Original Timing:
|
(optional) Angaben über den bzw. die Timer, d. h. die Person(en), welche das Timing des Original-Skripts erstellt haben. |
Synch Point:
|
(optional) Die Angabe des Zeitpunkts, ab dem innerhalb des Videos das Abspielen dieses Skripts begonnen werden soll. |
Script Updated By:
|
(optional) Namen anderer Bearbeiter des Original-Skripts (Fansubgruppen etc.). |
Update Details:
|
Eine Beschreibung der während dieser Bearbeitung vorgenommenen Änderungen. |
ScriptType:
|
Die Version des verwendeten SSA-Skriptformats, z. B. "V3.00 ".
|
Collisions:
|
Eine Festlegung des anzuwendenden Verfahrens für die Bewegung von Untertitel, um Kollisionen bei deren Anzeige zu verhindern. |
PlayResY:
|
Die Höhe des Bildschirmformats, welches beim Abspielen des Videos vom Skript-Autor verwendet wurde. |
PlayResX:
|
Die Breite des Bildschirmformats, welches beim Abspielen des Videos vom Skript-Autor verwendet wurde. |
PlayDepth:
|
Die Farbtiefe, welches beim Abspielen des Videos vom Skript-Autor verwendet wurde. |
Timer:
|
Eine Abspiel-Geschwindigkeit für das Skript als Prozentangabe. Der Wert "100.0000 " entspricht einer Geschwindigkeit von genau 100%. Diese Timer-Geschwindigkeit wird von SSA als Multiplikator auf alle Zeitangaben der SSA-eigenen Uhr angewendet (to provide a ramp time?).
|
WrapStyle:
|
Eine Definition einer Strategie zum automatischen Zeilenumbruch für anzuzeigenden Text. |
Style:
|
Eine Style-Definition, die verwendet wird, um den vom Skript anzuzeigenden Text zu formatieren. |
Dialogue:
|
Ein Dialog-Ereignis, d. h. ein anzuzeigender Text. |
Comment:
|
Ein Kommentar-Ereignis. Es kann dieselben Informationen wie ein Dialog-, Bild-, Sound-, Movie- oder Kommando-Ereignis enthalten, wird jedoch beim Abspielen des Skripts ignoriert. |
Picture:
|
Ein Bild-Ereignis; SSA zeigt die angegebene Graphik im Format .bmp, .jpg, .gif, .ico bzw .wmf ab. |
Sound:
|
Ein Sound-Ereignis; SSA spielt die angegebene .wav-Datei ab. |
Movie:
|
Ein Movie-Ereignis; SSA spielt die angegebene .avi-Datei ab. |
Command:
|
Ein Kommando-Ereignis; SSA führt das angegebene Programm als Hintergrund-Task aus. |
Der Kopfabschnitt eines SSA-Skripts
Zeile ";
"
Nach dem Semikolon darf beliebiger Text folgen. Dies ist eine Kommentarzeile innerhalb des Skripts; sie ist nicht sichtbar, wenn das Skript in SubStationAlpha geladen wird.
Das Semikolon muss das erste Zeichen innerhalb der Zeile sein.
Dieses Zeilenformat löst den Zeilentyp "!:" früherer Skript-Versionen ab.
Zeile "Title:
"
Diese Zeile enthält einen beschreibenden Titel des Skripts.
Haben der bzw. die Original-Autor(en) hier keinen Wert angegeben, dann wurde automatisch der Wert "<untitled>" eingetragen.
Zeile "Original Script:
"
Der bzw. die Original-Autor(en) des Skripts.
Haben der bzw. die Original-Autor(en) hier keinen Wert angegeben, dann wurde automatisch der Wert "<untitled>" eingetragen.
Zeile "Original Translation:
"
(optional) Der Original-Übersetzer der Dialoge.
Hat der Autor hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Original Editing:
"
(optional) Der Editor des Original-Skripts, üblicherweise also derjenige, der die Rohfassung der Übersetzung in idiomatisches, lesbares Englisch verwandelt hat.
Hat der Autor hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Original Timing:
"
(optional) Diejenige Person, welche das Timing des Original-Skripts erstellt hat.
Hat der Autor hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Synch Point:
"
(optional) Festlegung eines Zeitpunkts innerhalb des Videos, ab welchem die Auswertung des Skripts beim Abspielen begonnen werden soll.
Hat der Autor hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Script Updated By:
"
(optional) Namen beliebiger andere Fansubgruppen, von denen das Original-Skript bearbeitet wurde.
Haben nachfolgende Bearbeiter des Skripts hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Update Details:
"
Eine Beschreibung der vorgenommenen Änderungen am Original-Skript (durch andere Fansub-Gruppen).
Haben nachfolgende Bearbeiter des Skripts hier keinen Wert angegeben, dann ist diese Zeile nicht im Skript enthalten.
Zeile "Script Type:
"
Dies ist die Version des in diesem SSA-Skript verwendeten Formats, z. B. "V4.00". Sie wird von SubStationAlpha dazu verwendet, um beim Laden eines Skripts in eine SSA-Version, die selbst älter ist als die Version des Skripts, eine Warnung auszugeben.
Die Version von ASS-Skripten lautet "V4.00+".
Zeile "Collisions:
"
Diese Angabe legt fest, auf welche Weise Untertitel an einer anderen als der geplanten Stelle angezeigt werden, um eine automatisch erkannte Kollision zwischen mehreren Untertitel-Einblendungen zu verhindern:
- Falls dieser Eintrag den Wert "Normal" enthält, dann wird SSA versuchen, Untertitel an den durch ihre Randabstands-Definitionen definierten Positionen einzublenden. Es ist allerdings möglich, dass Untertitel vertikal verschoben werden, um Kollisionen zu vermeiden. Die Einstellung "Normal" bewirkt dabei ein "Übereinander-Stapeln" von Untertiteln, welche jedoch so nahe wie möglich am vertikalen (unteren) Rand positioniert werden - wobei eine Einblendung auch in einer "Lücke" zwischen den bereits angezeigten Untertiteln erfolgen kann, falls diese dafür genügend Platz bietet.
- Falls dieser Eintrag den Wert "Reverse" enthält, dann werden bereits angezeigte Untertitel nach oben verschoben, um Platz für neue, überlappende Untertitel zu schaffen. Die Untertitel können also praktisch immer von oben nach unten in der Reihenfolge ihrer Einblendung gelesen werden - es ist allerdings möglich, dass der zuerst eingeblendete Untertitel etwa in der Mitte des Bildschirms angezeigt wird, bevor nachfolgende überlappende Untertitel sichtbar werden. Diese Methode kann also eine Menge Platz auf dem Bildschirm belegen.
Zeile "PlayResY:
"
Dies beschreibt die Höhe des Bildschirmformats, die der Skript-Autor beim Abspielen des Skripts verwendet hat.
SSA v4 wird automatisch die Einstellung mit der geringstmöglichen Abweichung auswählen, falls das Playback-Verfahren "Directdraw" verwendet wird.
Zeile "PlayResX:
"
Dies beschreibt die Breite des Bildschirmformats, die der Skript-Autor beim Abspielen des Skripts verwendet hat.
SSA v4 wird automatisch die Einstellung mit der geringstmöglichen Abweichung auswählen, falls das Playback-Verfahren "Directdraw" verwendet wird.
Zeile "PlayDepth:
"
Dies beschreibt die Farbtiefe, die der Skript-Autor beim Abspielen des Skripts verwendet hat.
SSA v4 wird automatisch die Einstellung mit der geringstmöglichen Abweichung auswählen, falls das Playback-Verfahren "Directdraw" verwendet wird.
Zeile "Timer:
"
Legt die Timer-Geschwindigkeit für das Skript fest, in Form eines Prozentwerts. Beispiel: "100.0000" entspricht exakt 100%. Der Wert wird auf vier Dezimalstellen nach dem Komma genau angegeben.
Die Timer-Geschwindigkeit wirkt als Multiplikator angewendet auf die interne Uhr von SSA, um die Dauer eines Skripts zu strecken bzw. zu stauchen. Eine Geschwindigkeit größer als 100% reduziert die Abspieldauer des Skripts, so dass der Abspielzeitpunkt der Untertitel mit wachsender Laufzeit des Skripts immer weiter nach vorne verschoben wird. Eine Geschwindigkeit kleiner als 100% erhöht die Abspieldauer des Skripts, so dass der Abspielzeitpunkt der Untertitel mit wachsender Laufzeit des Skripts immer weiter nach vorne verschoben wird (ähnlich einer positiven "ramp time").
Diese Streckung oder Stauchung tritt nur während des Abspielens des Skripts auf - die tatsächlichen Zeitangaben der Events innerhalb des Skripts werden durch diese Angabe nicht verändert.
(Check the SSA user guide if you want to know why "Timer Speed" is more powerful than "Ramp Time", even though they both achieve the same result.)
Zeile "WrapStyle:
"
Legt die Art des Zeilenumbruchs fest:
- 0: Intelligenter Zeilenumbruch, die dabei erzeugten Zeilen werden möglichst gleich lang gestaltet, wobei die oberste Zeile breiter wird.
- 1: Zeilenumbruch nur durch Zeilenende in der Datei und \N.
- 2: kein Zeilenumbruch außer durch \n bzw. \N.
- 3: Wie 0, aber die unterste Zeile wird breiter.
Style-Definitionen in einem SSA-Skript
Ereignisse (Events) in einem SSA-Skript
Dialog-Ereignisse (Texteinblendungen)
Diese Zeilen enthalten
- den Untertiteltext,
- Angaben über den Zeitpunkt sowie
- weitere Angaben über die Art, wie die Anzeige erfolgen soll.
Die Liste aller Felder, welche in einer Ereigniszeile enthalten sind, wird von einer "Format:
"-Zeile definiert, die vor allen Ereigniszeilen innerhalb dieses Abschnitts angegeben werden muss. Diese Formatbeschreibungszeile spezifiziert, wie SSA den Inhalt sämtlicher nachfolgenden Ereigniszeilen interpretieren soll. Die Namen der einzelnen Felder müssen exakt wie nachfolgend angegeben geschrieben werden; folgende Feldnamen stehen zur Verfügung:
Das letzte Feld einer Event-Zeile ist immer der Untertiteltext, welcher deshalb selbst Kommata enthalten darf.
(Anmerkung: Diese Art der variablen Formatdefinition ist bewusst so gestaltet, dass bei zukünftigen Format-Erweiterungen weitere Felder hinzu kommen könnten und eine ältere Software-Version dennoch diejenigen Felder lesen könnte, die sie auswerten kann, selbst wenn sich die Reihenfolge der Felder geändert haben sollte - weil sie Felder mit ihr unbekannter Bedeutung einfach ignorieren und über die "Format:
"-Zeile die geänderte Reihenfolge der Felder erkennen kann).
Event-Feld 1: Marked
Wertebereich für SSA: Marked=
[0 bzw. 1]
Wertebereich für ASS: ganze Zahl
Achtung: Die Bedeutung von Feld 1 unterscheidet sich zwischen dem SSA- und dem ASS-Format!
Im SSA-Format bedeutet "Marked=1
", dass die Zeile vom Programm SSA als 'markiert' angezeigt wird.
Im ASS-Format definiert dieses Feld eine logische Ebene, auf der dieser Untertitel liegt. Untertitel verschiedener Ebenen üben während der Prüfung auf Überlappung (Kollisionen) von Einblendungen keinen Effekt aufeinander aus.
Eine Ebene mit einer höheren Nummer überlagert eine Ebene mit einer niedrigeren Nummer.
Event-Feld 2: Start
Wertebereich: 0:00:00:00 (h:mm:ss:nn)
Startzeitpunkt des Ereignisses im Format Stunde:Minute:Sekunde:Hundertstelsekunde. Dies ist der Zeitpunkt seit dem Beginn des Abspielens des Skripts, zu dem die Anzeige des Textes auf dem Bildschirm beginnt.
Achtung: Für die Angabe der Stunde ist nur eine Dezimalziffer vorgesehen!
Event-Feld 3: End
Wertebereich: 0:00:00:00 (h:mm:ss:nn)
Endzeitpunkt des Ereignisses im Format Stunde:Minute:Sekunde:Hundertstelsekunde. Dies ist der Zeitpunkt seit dem Beginn des Abspielens des Skripts, zu dem die Anzeige des Textes auf dem Bildschirm endet.
Achtung: Für die Angabe der Stunde ist nur eine Dezimalziffer vorgesehen!
Event-Feld 4: Style
Wertebereich: Name
Name des für die Textdarstellung zu verwendenden Styles. Falls dieser Name den Wert "Default
" hat, dann wird der in SSA eingestellte "*Default"-Style verwendet.
Der vom Skript-Autor definierte Default-Style wird jedoch im Skript gespeichert, obwohl er von SSA ignoriert wird - die Information bleibt für eine eventuelle spätere Verwendung erhalten.
Falls der Name des Default-Style mit Hilfe des Programms SSA in seiner Style-Definition geändert wird, bewirkt dies automatisch die Umwandlung dieses Styles in einen normalen Style.
Event-Feld 5: Name
Wertebereich: Name
Name des Sprechers. Dies ist der Name desjenigen Charakters, der diesen Dialog spricht. Diese Angabe ist nur als interne Information gedacht, um das Skript während des Editierens bzw. Timings lesbarer zu gestalten.
Event-Feld 6: MarginL
Wertebereich: Ganze Zahl (4 Stellen)
Definition eines linken Randes in Anzahl von Pixeln (vorrangig gegenüber dem verwendeten Style).
Ein Wert von Null bedeutet, dass die Definition des linken Randes aus der in dieser Zeile benutzten Style-Definition verwendet werden soll.
Event-Feld 7: MarginR
Wertebereich: Ganze Zahl (4 Stellen)
Definition eines rechten Randes in Anzahl von Pixeln (vorrangig gegenüber dem verwendeten Style).
Ein Wert von Null bedeutet, dass die Definition des rechten Randes aus der in dieser Zeile benutzten Style-Definition verwendet werden soll.
Event-Feld 8: MarginV
Wertebereich: Ganze Zahl (4 Stellen)
Definition eines unteren Randes in Anzahl von Pixeln (vorrangig gegenüber dem verwendeten Style).
Ein Wert von Null bedeutet, dass die Definition des unteren Randes aus der in dieser Zeile benutzten Style-Definition verwendet werden soll.
Event-Feld 9: Effect
Wertebereich: Name
Übergangseffekt, der auf den anzuzeigenden Text angewendet wird. Dieses Feld ist entweder leer oder es enthält Angaben über einen der in SSA v4.x implementierten Übergangseffekte. Groß- bzw. Kleinschreibung der Effekt-Namen ist signifikant, die Namen müssen exakt in der hier beschriebenen Schreibweise angegeben werden (ohne umgebende Hochkommata). Die Werte der Parameter hinter den Schlüsselworten werden jeweils durch Semikolons voneinander getrennt.
(Achtung: Einige der hier beschriebenen Übergangseffekte sind nur im ASS-Format verfügbar, nicht im SSA-Format.)
Mögliche Angaben für Übergangseffekte sind:
Karaoke-Effekt
- (SSA) "
Karaoke
" bedeutet, dass der Text Wort für Wort farblich hervorgehoben wird.
("Karaoke" als Effekt-Art ist obsolet im Skript-Format für ASS, welches hierfür detailliertere Möglichkeiten bereitstellt.)
Vertikales Bewegen von Text (Scrolling)
- (SSA & ASS) "
Scroll up;
<y1>;
<y2>;
<delay>" bedeutet, dass der Text bzw. das Bild innerhalb des Bildschirms nach oben bewegt wird. - (nur ASS) "
Scroll up;
<y1>;
<y2>;
<delay>[;
<fadeawayheight>]" - erweitert um einen zusätzlichen Parameter. - (nur ASS) "
Scroll down;
<y1>;
<y2>;
<delay>[;
<fadeawayheight>]" - analog zu "Scroll up;
", der Text wird nach unten bewegt.
Die Werte <y1> und <y2> definieren einen vertikalen Bereich des Bildschirms, innerhalb dessen der Text bewegt wird. Diese Werte sind in Pixeln angegeben, und es ist irrelevant, in welcher Reihenfolge die obere und untere Grenze dieses Bereichs angegeben wird. Falls beide Parameter den Wert 0
haben, dann wird der Text über die gesamte Höhe des Bildschirms bewegt.
Der Parameter <delay> kann einen Zahlenwert zwischen 1 und 100 annehmen; er legt die Verzögerung der Bewegung fest. Der Wert 0 bedeutet keine Verzögerung, die Bewegung erfolgt also so schnell wie möglich.
Der Parameter <fadeawayheight> kann dazu verwendet werden, den bewegten Text an den jeweiligen Rändern ein- und auszublenden.
(Achtung: Das "subtitler"-Plugin von Avery Lee interpretiert die Parameter des "Scroll up"-Effekts in der vom Skript-Format abweichenden Reihenfolge "<delay>;<y1>;<y2>".)
Horizontales Bewegen von Text (Banner)
- (SSA) "
Banner;
<delay>" bedeutet, dass der Text unbedingt in einer einzigen Zeile (ohne Zeilenumbruch) angezeigt wird, ungeachtet seiner Länge, und dabei von rechts nach links über den Bildschirm geschoben wird. - (ASS) "
Banner;
<delay>[;
<lefttoright>;
<fadeawaywidth>]"
Der Parameter <delay> kann einen Zahlenwert zwischen 1 und 100 annehmen; er legt die Verzögerung der Bewegung fest. Der Wert 0 bedeutet keine Verzögerung, die Bewegung erfolgt also so schnell wie möglich. Wenn für den Parameter <delay> ein Wert größer als 0 angegeben wird, dann wird die Bewegung des Textes um jeweils einen Pixel (1000/<delay>) Sekunden dauern.
Der Parameter <lefttoright> kann den Wert 0 (Bewegung des Textes von rechts nach links) bzw. 1 (Bewegung des Textes von links nach rechts) annehmen; dieses Feld ist optional, sein Defaultwert ist 0 (um abwärtskompatibel zum SSA-Format zu sein).
Der Parameter <fadeawaywidth> kann dazu verwendet werden, den bewegten Text an den jeweiligen Rändern ein- und auszublenden.
Event-Feld 10: Text
Wertebereich: Text
Untertiteltext. Dies ist der Text, der auf dem Bildschirm angezeigt wird.
Alles hinter dem 9. Komma einer "Event"-Zeile wird als Untertiteltext behandelt; folglich darf dieses selbst auch Kommata enthalten.
Der Text darf die Zeichenkette "\N
" enthalten, welche einen Zeilenumbruch bewirkt, und darüber hinaus spezielle Formatierungsanweisungen, die in geschweifte Klammern eingeschlossen werden.
Kommentarzeilen im Ereignis-Abschnitt
Einbindung von Bild-Dateien
Einbindung von Sound-Dateien
Einbindung von Video-Dateien
Spezielle Kommandos
Solche Zeilen weisen dieselbe Struktur auf wie Dialog-Ereignisse, doch statt eines Untertiteltextes enthält Feld 10 den vollständigen Pfad- und Dateinamen eines auszuführenden Programms.
Angaben über Styles, Randdefinitionen und Übergangseffekte werden ignoriert. Auch der Endzeitpunkt hat keine Bedeutung - das Programm wird solange ausgeführt, bis es sein normales Ende erreicht hat oder vom Anwender manuell beendet wurde.
Außerdem dürfen einige SSA-interne Kommandos in SSA-Skripten verwendet werden: Die beiden Kommando-Ereignisse
- "
SSA:Pause
" und - "
SSA:Wait for trigger
" sowie - genlock control commands (?).
All diese Kommandos beginnen mit der Zeichenkette "SSA:
".
Das Kommando "SSA:Pause
" hat dieselbe Wirkung wie ein Druck auf die Taste P während des Abspielens des Skripts. Es ist hilfreich als Synchronisationspunkt, um die Untertitelung an dieser Stelle fortzusetzen, falls beim Abspielen des Videos eine Laserdisk umgewendet werden muss.
Das Kommando "SSA:Wait for audio trigger
" hat ebenfalls denselben Effekt wir ein Druck auf die Taste P
während des Abspielens des Skripts, aber das Abspielen wird automatisch fortgesetzt, sobald die Audio-Eingabe an den Computer ein bestimmtes Trigger-Niveau überschreitet. Dies ist nützlich als eine zweite Art von Synchronisationspunkt, um die Untertitelung nach dem Umwenden einer Laserdisk fortzusetzen. Der Audio-Trigger kann durch einen Druck auf die Taste P außer Kraft gesetzt werden.
Die Wirkung eines Audio-Triggers endet spätestens nach 10 Minuten - falls bis dahin weder ein entsprechender Audio-Peak erreicht oder die Taste P gedrückt wurde, wird das Abspielen des Skripts automatisch fortgesetzt.
Anhänge
Anhang A: Markierungen innerhalb von Untertiteltexten
Die nachfolgende Liste kann sich als nützlich für Anwender erweisen, die Markierungen zur Beeinflussung von Darstellungsattributen lernen wollen, um sie direkt per Tastatur eingeben zu können, anstatt hierfür die Override Style
-Dialogbox des Programms SSA zu verwenden.
Alle Markierungen werden in geschweifte Klammern "{" und "}" eingeschlossen, ausgenommen die Zeilenumbruch-Markierungen "\n
" bzw. "\N
". Jede Markierung wird mit einem Backslash "\" eingeleitet. Innerhalb einer Klammerstruktur kann eine beliebige Anzahl von Markierungen notiert werden.
Jede Markierung tritt ab derjenigen Stelle innerhalb des Textes, an der sie notiert wurde, in Kraft und wirkt bis zum Zeilenende. Um eine Markierung nur auf einen ausgewählten Abschnitt des Textes anzuwenden, muss am Ende dieses Abschnitts ein 'Gegenbefehl' notiert werden, um die zuvor notierte Markierung unwirksam zu machen.
Einige Markierungen haben generell eine Wirkung auf den gesamten Text einer Ereigniszeile. Bislang gilt dies lediglich für Ausrichtungs-Markierungen, doch können in späteren Erweiterungen dieser Syntax zusätzliche Markierungen dieser Art hinzu kommen (beispielsweise Markierungen für Schatten oder Umrandungen der verwendeten Schrift im ASS-Format).
Einfache Markierungen
(Achtung: Jede Markierung, die einen unzulässigen Parameterwert enthält, bewirkt das Setzen der entsprechenden Eigenschaft auf deren Default-Wert!)
Zeilenumbruch innerhalb von Untertiteltexten
"weicher" Zeilenumbruch
(SSA & ASS) \n
Bewirkt einen Zeilenumbruch. \n
wird ignoriert, wenn der "intelligente Umbruch" in SSA aktiviert ist.
Beispiel:
Dies ist die erste Zeile\nund das die zweite.
"harter" Zeilenumbruch
(SSA & ASS) \N
Bewirkt einen Zeilenumbruch (auch dann, wenn der "intelligente Umbruch" in SSA aktiviert ist).
Zeilenumbruch-Strategie
\q
<num>
Hiermit kann die Art des automatischen Zeilenumbruchs für den Text dieses Ereignisses separat definiert werden, abweichend von der zentralen Einstellung für das gesamte Skript.
Die möglichen Werte des Parameters <num> haben hierbei dieselbe Bedeutung wie die Werte des intelligenten Umbruchs.
Hervorhebung von Text
Hervorhebung von Text als fett
(SSA & ASS) \b
<schalter>
Der Parameter <schalter> schaltet den Effekt ein bzw. aus:
\b1
bewirkt eine fette Darstellung,\b0
eine normale Darstellung des Textes.
Beispiel:
Dieses Wort ist {\b1}fett{\b0} hervorgehoben.
Wird für den Parameter <schalter> ein Wert größer als 1 angegeben, dann wird dieser als Gewicht für die Schriftart interpretiert (400 = normal, 700 = fett; die meisten Schriftarten erlauben zwei oder drei effektiv unterschiedliche Gewichte).
Hervorhebung von Text als kursiv
(SSA & ASS) \i
<schalter>
Der Parameter <schalter> schaltet den Effekt ein bzw. aus:
\i1
bewirkt eine kursive Darstellung,\i0
eine normale Darstellung des Textes.
Beispiel:
Dieses Wort ist {\i1}kursiv{\i0} hervorgehoben.
Hervorhebung von Text als unterstrichen
(nur ASS) \u
<schalter>
Der Parameter <schalter> schaltet den Effekt ein bzw. aus:
\u1
bewirkt eine unterstrichene Darstellung,\u0
eine normale Darstellung des Textes.
Beispiel:
Dieses Wort ist {\u1}unterstrichen{\u0} hervorgehoben.
Hervorhebung von Text als durchgestrichen
(nur ASS) \s
<schalter>
Der Parameter <schalter> schaltet den Effekt ein bzw. aus:
\s1
bewirkt eine durchgestrichene Darstellung,\s0
eine normale Darstellung des Textes.
Beispiel:
Dieses Wort ist {\s1}durchgestrichen{\s0} hervorgehoben.
Textumrandung
Randdicke
(nur ASS) \bord
<width>
Diese Anweisung legt durch den Parameter <width> die Dicke des Randes der verwendeten Schrift in Pixeln fest, vorrangig gegenüber der entsprechenden Style-Definition.
Schatten
(nur ASS) \shad
<depth>
Diese Anweisung legt durch den Parameter <depth> die Tiefe des Schattens der verwendeten Schrift in Pixeln fest, vorrangig gegenüber der entsprechenden Style-Definition.
Unscharfe Ränder
(nur ASS) \be
<0 bzw. 1>
\be1
bewirkt eine scharfe, \be0
eine leicht unscharfe Darstellung der Ränder des Textes.
Schriften
Schriftart
(SSA & ASS) \fn
<fontname>
<fontname> beschreibt eine Schriftart, die auf dem verwendeten Windows-System installiert sein muss. Groß- bzw. Kleinschreibung des Dateinamens ist signifikant.
Beispiel:
Hier folgt ein {\fnCourier New}Text mit fester Zeichenbreite
Falls eine Schriftart verwendet wird, die nicht installiert ist, dann wird stattdessen die Schriftart Arial
verwendet.
Schriftgröße
(SSA & ASS) \fs
<fontsize>
<fontsize> ist eine Zahl, welche eine Schriftgröße in Punkt festlegt.
Beispiel:
{\fs16}Dies ist kleiner Text. {\fs28}Dies ist großer Text.
Schriftfarben
(SSA & ASS) \
[<colorid>]&H
<colorcode>&
<colorcode> ist ein sedezimaler RGB-Wert für die Schriftfarbe in umgekehrter Reihenfolge ("bbggrr" als blau-grün-rot-Werte jeweils von "00" = 0 bis "FF" = 255). Führende Nullen können weggelassen werden.
Beispiel:
{\c&HFF&}Dies ist reines, intensives Rot
{\c&HFF00&}Dies ist reines, intensives Grün
{\c&HFF0000&}Dies ist reines, intensives Blau
{\c&HFFFFFF&}Dies ist weiße Schrift
{\c&HA0A0A&}Dies ist dunkelgraue Schrift
(nur ASS) Der optionale Parameter <colorid> gibt dabei an, welche der vier Farben eines Textes gesetzt werden soll:
- "
\1c
" setzt die Primärfarbe der Schrift (Schriftfarbe) - "
\2c
" setzt die Sekundärfarbe der Schrift (Karaokefarbe) - "
\3c
" setzt die Umrandungsfarbe der Schrift - "
\4c
" setzt die Schattenfarbe der Schrift
Schrifttransparenz (Alphakanäle)
(nur ASS) \
[<colorid>]&H
<channelcode>&
<channelcode> ist ein sedezimaler Wert von "00" = 0 bis "FF" = 255).
Der optionale Parameter <colorid> gibt dabei an, für welche der vier Farben der Alphakanal gesetzt werden soll:
- "
\1a
" setzt den Alphakanal der Primärfarbe der Schrift - "
\2a
" setzt den Alphakanal der Sekundärfarbe der Schrift - "
\3a
" setzt den Alphakanal der Umrandungsfarbe der Schrift - "
\4a
" setzt den Alphakanal der Schattenfarbe der Schrift
Statt \1a
ist auch die Notation \alpha
zulässig.
Schriftbreitenskalierung
(nur ASS) \fscx
<percent>
Durch diese Anweisung wird der Text in der Breite gedehnt bzw. gestaucht. <percent> ist der jeweilige Dehnungsfaktor in Prozent; "100" als Parameterwert hat also keine Veränderung zur Folge.
Beispiel:
{\fscx80}Dieser Text ist sehr lang und deshalb platzsparend zusammengestaucht
Schrifthöhenskalierung
(nur ASS) \fscy
<percent>
Durch diese Anweisung wird der Text in der Höhe gedehnt bzw. gestaucht. <percent> ist der jeweilige Dehnungsfaktor in Prozent; "100" als Parameterwert hat also keine Veränderung zur Folge.
Beispiel:
{\fscy80}Dieser Text ist ein bisschen flach geraten und wird ab {\fscy60}hier noch flacher
Zeichenabstand (spacing)
(nur ASS) \fsp
<pixels>
<pixels> legt den zu verwendenden Abstand in Pixeln zwischen je zwei Buchstaben fest. Ohne diese Anweisung beträgt der Abstand jeweils 0 Pixel.
Zeichensatz
(SSA & ASS) \fe
<charset>
Der Parameter <charset> bezeichnet die Nummer eines Zeichensatzes für den darzustellenden Text. Diese Anweisung kann zur Darstellung bestimmter Sonderzeichen erforderlich sein.
Textausrichtung
Ausrichtung und Positionierung
(SSA & ASS) \a
<alignment>
<alignment> ist ein Zahlenwert, der Ausrichtung und Positionierung des Textes auf dem Bildschirm festlegt.
- Der Wert
1
beschreibt einen horizontal nach links und vertikal nach unten ausgerichteten Untertitel - Der Wert
2
beschreibt einen horizontal zentrierten und vertikal nach unten ausgerichteten Untertitel - Der Wert
3
beschreibt einen horizontal nach rechts und vertikal nach unten ausgerichteten Untertitel - Ein um 4 erhöhter Wert setzt die vertikale Ausrichtung auf den oberen Bildschirmrand
- Ein um 8 erhöhter Wert setzt die vertikale Ausrichtung auf die Mitte des Bildschirms
- Ein Wert von
0
setzt die Ausrichtung auf den Wert der Style-Definition zurück (welche üblicherweise2
sein wird, d. h. unten zentriert).
Es gibt also 9 mögliche Ausrichtungen auf dem Bildschirm:
\a5 (links oben)
|
\a6 (zentriert oben)
|
\a7 (rechts oben)
|
\a9 (links mittig)
|
\a10 (zentriert mittig)
|
\a11 (rechts mittig)
|
\a1 (links unten)
|
\a2 (zentriert unten)
|
\a3 (rechts unten)
|
(nur ASS) \an
<alignment>
Durch diese alternative Anweisung wird die Ausrichtung gemäß der (leichter zu merkenden) Position der Ziffern auf dem Ziffernblock der Tastatur (numpad) durchgeführt:
\an7 (links oben)
|
\an8 (zentriert oben)
|
\an9 (rechts oben)
|
\an4 (links mittig)
|
\an5 (zentriert mittig)
|
\an6 (rechts mittig)
|
\an1 (links unten)
|
\an2 (zentriert unten)
|
\an3 (rechts unten)
|
(Achtung: Nur das erste Auftreten einer dieser beiden Anweisungen innerhalb eines Untertiteltextes hat eine Wirkung!)
Rotation von Text um die X-Achse im dreidimensionalen Raum
(nur ASS) \frx
<winkel>
<winkel> legt den Winkel der Rotation des Textes um die X-Achse fest. Als Werte sind sowohl positive (gegen den Uhrzeigersinn) als auch negative (mit dem Uhrzeigersinn) Zahlen zulässig.
Rotation von Text um die Y-Achse im dreidimensionalen Raum
(nur ASS) \fry
<winkel>
<winkel> legt den Winkel der Rotation des Textes um die Y-Achse fest. Als Werte sind sowohl positive (gegen den Uhrzeigersinn) als auch negative (mit dem Uhrzeigersinn) Zahlen zulässig.
Rotation von Text um die Z-Achse im dreidimensionalen Raum
(nur ASS) \frz
<winkel>
<winkel> legt den Winkel der Rotation des Textes um die Z-Achse fest. Als Werte sind sowohl positive (gegen den Uhrzeigersinn) als auch negative (mit dem Uhrzeigersinn) Zahlen zulässig.
Statt \frz
ist auch die Notation \fr
zulässig.
Karaoke-Hervorhebung
Der Parameter <duration> beschreibt in den nachfolgenden Anweisungen jeweils die Dauer (in Hundertstelsekunden), für welche der so markierte Textabschnitt mit dem Karaoke-Effekt innerhalb des Dialog-Events hervorgehoben dargestellt werden soll.
Karaoke-Hervorhebung des Textinneren (einfach)
(SSA & ASS) \k
<duration>
Für den markierten Textabschnitt wird der Text statt mit der Sekundärfarbe nun mit der Primärfarbe gefüllt; diese Änderung erfolgt schlagartig zu Beginn des Effekts.
Beispiel:
{\k94}Dies {\k48}ist {\k24}eine {\k150}Karaoke-{\k94}Zeile
Karaoke-Hervorhebung des Textinneren (inkrementell)
(nur ASS) \kf
<duration> bzw. \K
<duration>
Für den markierten Textabschnitt wird der Text statt mit der Sekundärfarbe nun mit der Primärfarbe gefüllt; diese Änderung erfolgt inkrementell von links nach rechts während der angegebenen <duration>.
Karaoke-Hervorhebung inklusive der Umrandung
(nur ASS) \ko
<duration>
Für den markierten Textabschnitt wird der Text statt mit der Sekundärfarbe nun mit der Primärfarbe gefüllt; gleichzeitig wird die Umrandung nun mit der definierten Farbe angezeigt, während sie beim noch nicht hervorgehobenen Text fehlt. Diese kombinierte Änderung erfolgt schlagartig zu Beginn des Effekts.
Zurücksetzen von Markierungen
Zurücksetzen aller vorherigen Markierungen
(SSA & ASS) \r
Hiermit werden ab dieser Position alle innerhalb dieser Textzeile zuvor angegebenen Markierungen unwirksam gemacht.
Überschreiben aller Effekte durch einen Style
(nur ASS) \r
[<style>]
Durch die Angabe eines Style-Namens werden ab dieser Position alle Werte auf die Standardwerte des so bezeichneten Styles gesetzt.
Funktionen
Operationen zum Zeichnen von Graphiken
Anhang B: Codierung eingebundener Zeichensatz- bzw. Bilddateien
Die Einbindung von Schriftarten und Bilddateien innerhalb eines SSA-Skripts erfolgt in Form eines 'UUEncoding'.
Dieses Verfahren liest jeweils drei Bytes aus eine Binärdatei und konvertiert die 24 Bits dieser drei Bytes in vier Zahlen zu jeweils 6 Bit. Zu jeder dieser Zahlen wird 33 addiert, und das diesem Wert entsprechende ASCII-Zeichen zu jeder dieser Zahlen wird in die Skript-Datei geschrieben. Die Verschiebung um 33 bewirkt allerdings, dass die codierte Ausgabe keine Großbuchstaben enthalten kann; deshalb müssen "filename
"-Angaben stets in Kleinbuchstaben notiert werden. Jede dieser codierten Zeilen ist exakt 80 Zeichen lang, mit Ausnahme der letzten, die kürzer sein kann.
Falls die Länge der codierten Datei in Bytes kein ganzzahliges Vielfaches von 3 ist, dann
- wird bei einer ungeradzahligen Dateilänge das letzte Zeichen mit sedezimal "100" multipliziert und seine höchstwertigen 12 Bits werden in zwei Zeichen codiert wie oben beschrieben,
- werden bei einer geradzahligen Dateilänge die beiden letzten Bytes mit sedezimal "10000" multipliziert und die höchstwertigen 18 Bits werden in drei Zeichen codiert wie oben beschrieben.
Es existiert keine Endemarkierung für eingebundene Dateien. Die Datei wird als vollständig angesehen, falls
- innerhalb des Skripts ein neuer Abschnitt beginnt,
- eine weitere "
filename
"-Zeile gelesen wird oder - das Ende des Skripts erreicht wird.