Naar de hoofdinhoud
SubtitleMatrix

ASS-override-tags verwijderen

Tekst en stijlMarkup en tags verwijderen
Of plak ondertiteltekst

Opties

Eén vak, zeven keuzes, en elke keuze heeft zijn eigen pagina. Cursief, vet, onderstreept en kleur verwijderen die ene soort bereik en laten de rest van de opmaak van de regel met rust. Alles verwijdert elk bereik dat het hulpmiddel modelleert — die vier plus karaoke-timing — en laat al het andere in de tekst onaangeroerd. HTML doet hetzelfde en veegt daarna ook de opmaak tussen punthaken weg die in de tekst is achtergebleven omdat het hulpmiddel die niet modelleert, zoals de sprekerstags <v Bob> en <c.className> van VTT. ASS doet hetzelfde in plaats daarvan voor override-blokken en ruimt de {...}-codes op die bij het inlezen niet herkend zijn, zoals {\fad(500,500)}. Deze pagina vult het vak met de keuze die haar titel noemt en toont geen andere.

In welke beeldsnelheid de tijden worden geteld. Op de formaatpagina’s is dit wat MicroDVD nodig heeft, want het slaat tijden op als framenummers. Op de beeldsnelheidspagina’s is het de snelheid waartegen het bestand getimed is — de versie waarvoor de ondertitels gemaakt zijn — en het tweede vak op de pagina neemt de snelheid van de video die je gaat gebruiken. 23,976, 24, 25, 29,97, 30, 50, 59,94 en 60 zijn de gebruikelijke. Een verkeerde waarde verschuift de hele tijdlijn, en op de beeldsnelheidspagina’s verschuift ze die met een verhouding in plaats van met een vast bedrag.

Deze pagina haalt de overridecodes uit een ASS- of SSA-bestand: de opmaakreeksen, de karaoke-timing, de achtergebleven effectblokken en de positionering. Wat terugkomt is platte getimede tekst — de woorden, de timing van de blokken en de eigen structuur van het bestand, met de regels waar hun benoemde stijl ze plaatst.

ASS is het formaat dat het meest kan zeggen, en het meeste daarvan staat als overridecode in de tekst van een regel. Sommige van die codes zijn opmaak die de tool modelleert — `{\i1}`, `{\b1}`, `{\c&H...&}`, `{\k50}` — en sommige zijn effecten die ze niet modelleert: fades, bewegingen, schalen en vervagen, allemaal als blokken in dezelfde vorm. Die ongemodelleerde blokken blijven tijdens het lezen met opzet in de tekst staan, omdat opmaak eten die de tool niet kan lezen gegevensverlies zou zijn. Deze pagina veegt ze weg.

Positionering wordt hier ook gewist, en dat is het enige dat deze pagina doet dat niet simpelweg opmaak verwijderen is: waar een regel staat is een eigenschap van het hele blok in plaats van een reeks over de tekst, dus een gepositioneerde regel valt terug naar de plek die zijn benoemde stijl hem geeft. Dat maakt de uitvoer werkelijk plat. Het benoemde stylesheet zelf blijft met rust — een blok waarvan de stijl vet is, ziet er daarna nog steeds vet uit, omdat het vet bij de stijl hoort in plaats van bij de tekst.

Eén code blijft, en de pagina zegt dat in plaats van je het te laten ontdekken: een uitlijning in negen cellen zoals `{\an8}` wordt bewaard zoals hij geschreven is. Die codeert verticale plaatsing net als horizontale, en het eigen idee van uitlijning van de tool dekt alleen links, midden en rechts, dus er is nergens ruimte voor de andere helft. Half begrijpen zou een bestand opleveren dat verkeerd retourneert. Niets wordt geüpload; een bestand zonder iets te verwijderen komt byte voor byte terug.

Voorbeelden

Opmaak en een achtergebleven effectblok

Invoer

[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}

Uitvoer

[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)}` vraagt de speler de regel in en uit te laten faden in een halve seconde per richting. De tool heeft dat nooit gemodelleerd, dus het bleef in de tekst staan tot deze run het wegveegde — en het cursieve paar ernaast gaat dezelfde kant op, zodat de regel zelf overblijft. Niets in de uitvoer legt vast dat de fade er ooit was.

Een gepositioneerde regel

Invoer

[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

Uitvoer

[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

De regel krijgt niet langer te horen waar hij moet staan, dus hij valt terug naar de plek waar de stijl op het event hem plaatst. Dit is het enige deel van de run dat niet simpelweg opmaak verwijdert, en het is de reden dat de pagina de juiste is voor een bestand dat werkelijk plat moet worden in plaats van alleen zonder nadruk.

Een uitlijning in negen cellen die blijft

Invoer

[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

Uitvoer

[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

Deze komt ongewijzigd terug, en dat is geen gemiste plek. `{\an8}` zegt tegelijk boven en midden, terwijl de uitlijning van de tool alleen links, midden en rechts kent — de verticale helft heeft dus nergens om te leven, en de tag wordt heel bewaard in plaats van half begrepen. De positiecode wordt gewist, deze niet.

Veelgestelde vragen

Waarom overleeft een uitlijningstag in negen cellen deze pagina?

Omdat de tool hem niet exact kan weergeven. Een uitlijning zoals `{\an8}` noemt een van negen cellen, wat tegelijk een horizontale en een verticale plaats codeert, terwijl de eigen uitlijning van de tool alleen links, midden en rechts heeft. De horizontale helft opslaan en de andere laten vallen zou het bestand verkeerd laten retourneren, dus wordt de tag letterlijk bewaard. De positiecode wordt gewist, de uitlijningscode niet, en de pagina zegt dat in plaats van het je te laten opmerken.

Wat is een overrideblok, en waarom staat het in de tekst?

Het is een reeks instructies tussen accolades in de tekst van een regel, die de speler iets met die regel laat doen: de opmaak wijzigen, hem animeren, laten faden of verplaatsen. De tool modelleert de gangbare opmaaksubset en leest die in haar eigen structuur, maar laat de rest precies staan waar ze die vond — fades, bewegingen, vervagingen en dergelijke worden letterlijk bewaard in plaats van weggegooid, omdat opmaak weggooien die de lezer niet begrijpt stil gegevensverlies zou zijn. Deze pagina is waar ze uiteindelijk verdwijnen.

Verandert het wissen van de overridecodes de timing of de tekst?

Nee. De woorden komen byte-identiek terug, elk blok houdt zijn begin en einde tot op de milliseconde en de volgorde van de blokken is die van het bestand. Regeleinden binnen een blok horen bij het blok in plaats van bij zijn opmaak, dus ze blijven waar het bestand ze had. Wat verandert zijn de instructies rond de woorden, en in sommige gevallen de plek waar de regel op het scherm staat.

Speelt de uitvoer nog correct af nu de codes weg zijn?

Ja, en voorspelbaarder dan voorheen. Een overridecode die een speler niet begrijpt, wordt op zijn best genegeerd en op zijn slechtst verkeerd gelezen, en vooral over effectcodes zijn spelers het onderling oneens. Platte getimede tekst kent die dubbelzinnigheid niet. Vertrouwde het bestand op positionering om een ondertitel op iets specifieks in het beeld te zetten, dan is die plaatsing weg en komt de regel te staan waar de stijl hem plaatst.

Verwijdert deze pagina ook de benoemde stijlen uit het stylesheet?

Nee — het stylesheet en de stijl waarnaar elk blok verwijst, blijven precies zoals ze waren. De pagina werkt op de codes in de tekst van een regel, en een blok waarvan de benoemde stijl vet is, ziet er daarna nog steeds vet uit, omdat het vet uit de stijl komt in plaats van uit de tekst van de regel. Een stylesheet schoonmaken is ander werk en daar is nog geen pagina voor.

Kan ik deze pagina ook op een SRT-bestand gebruiken, of alleen op ASS en SSA?

Je kunt elk formaat dat de site leest erin laten vallen. Op een SRT- of WebVTT-bestand doet de eerste helft nog steeds zijn werk — de opmaakreeksen gaan weg — en de veegactie vindt simpelweg niets, omdat accoladeblokken in die formaten niet voorkomen. Een bestand met noch opmaak noch accoladeblokken komt byte voor byte terug, wat het eerlijke resultaat is van een run die niets te doen had.

Gerelateerde hulpmiddelen