# Subtitle Workshop Manual

Last updated: 03-08-2022

### Subtitle Workshop version: 6.1.4

##### The ultimate subtitle editing tool!

Copyright © 2001-2004 URUSoft.
Copyright © 2013 Andrey Spiridonov.
Copyright © 2018-2022 Kameleon.
(All key shortcuts mentioned in this manual are based on the defaults)

- Chapter 1: Introduction to Subtitle Workshop
  - 1.1 General overview
  - 1.2 Reading & Writing engine
    - 1.2.1 What is SubtitleAPI?
  - 1.3 Visual overview
    - 1.3.1 Menu Bar
    - 1.3.2 Toolbar
    - 1.3.3 Left Panel
    - 1.3.4 Video Preview Panel
    - 1.3.5 Subtitles List
    - 1.3.6 Time Controls Area
    - 1.3.7 Text Controls Area
    - 1.3.8 Statusbar
  - 1.4 Getting started
    - 1.4.1 Loading a subtitle file
    - 1.4.2 Loading a video file
    - 1.4.3 Create a new file
    - 1.4.4 Adding subtitles
    - 1.4.5 Deleting subtitles
    - 1.4.6 Manually edit a subtitle
    - 1.4.7 Text style and color tags
    - 1.4.8 FPS and Input FPS
    - 1.4.9 Projects
  - 1.5 Command line parameters
  - 1.6 Language files
  - 1.7 Custom formats
- Chapter 2: Time related features
  - 2.1 Frame rate conversion
  - 2.2 Set delay
  - 2.3 Adjust subtitles
    - 2.3.1 Method 1: simple adjust, first and last dialogs
    - 2.3.2 Method 2: synchronize using two points
    - 2.3.3 Method 3: adjust to synchronized subtitles
    - 2.3.4 Method 4: advanced subtitle adjust
  - 2.4 Duration limits
  - 2.5 Duration expander/reducer
  - 2.6 Read times from file
  - 2.7 Extend length to next/previous subtitle
  - 2.8 Automatic durations
  - 2.9 Shift subtitles
  - 2.10 Shift to next/previous
  - 2.11 Set pauses
  - 2.12 Round time values
- Chapter 3: Text & subtitles related features
  - 3.1 Smart line adjust
  - 3.2 Convert case
  - 3.3 Unbreak subtitles
  - 3.4 Divide lines
  - 3.5 Set maximum line length
  - 3.6 Read texts from file
  - 3.7 Combine subtitles
  - 3.8 Auto combine subtitles
  - 3.9 Right-to-left
    - 3.9.1 Reverse text
    - 3.9.2 Fix punctuation
  - 3.10 Sort
  - 3.11 Delete unnecessary links / Delete dots at the beginning
  - 3.12 Search & Replace
  - 3.13 Go to Subtitle line
  - 3.14 Go to movie position and recent movie positions
  - 3.15 Marked subtitles
- Chapter 4: Settings explained
  - 4.1 General
    - 4.1.1 Advanced
    - 4.1.2 Charsets
  - 4.2 Formats
  - 4.3 File types
  - 4.4 Save
  - 4.5 Video preview
    - 4.5.1 Subtitles
  - 4.6 External preview
    - 4.6.1 General
    - 4.6.2 Advanced
  - 4.7 Look
    - 4.7.1 Program
    - 4.7.2 List
    - 4.7.3 Marking
- Chapter 5: Tools
  - 5.1 Spell check
  - 5.2 Batch convert
  - 5.3 Split subtitles
  - 5.4 Join subtitles
  - 5.5 Information and errors
    - 5.5.1 Overview
    - 5.5.2 Errors & fixes explained
    - 5.5.3 Information & errors window (interactive error fixing)
    - 5.5.4 Composite custom info window
    - 5.5.5 Information and Error Settings
    - General Options
    - Advanced Options
    - Check for
    - Mark
    - Fix
    - Unnecessary Spaces
    - 5.5.6 Various information window
    - 5.5.7 OCR Scripts
    - 5.5.8 Syntax of Regular Expressions
  - 5.6 Add FPS from Video
  - 5.7 External Video Preview
  - 5.8 Internal Video Preview
  - 5.9 SAMI Language Extractor
- Chapter 6: Shortcuts
- Frequently Asked Questions (FAQ)
- Hints
- Known issues
- Contact information
- License

## Chapter 1: Introduction to Subtitle Workshop

### 1.1 General overview

Subtitle Workshop is the most complete, efficient and convenient subtitle editing tool. It supports all the subtitle formats you need and has all the features you would want from a subtitle editing program. Subtitle Workshop makes subtitle creating/editing/converting tasks almost a pleasure, the amicable and intuitive interface mixes easy to access menus & must have features with advanced functions and a remarkable speed and stability, drastically reducing subtitle editing time. It includes spell check functions and an advanced video preview feature which will ease the task even more. The best choice for the beginner, expert or the fansubber. Have a try, and you'll forget the rest!
Subtitle Workshop was originally thought in order to make subtitle editing very easy, but having all the necessary and not-so-necessary features that make the life of a subtitle editor or translator easier. The visual interface is one of the many things that characterizes Subtitle Workshop. Most of the options are indeed, self-explanatory so even a kid can use this software.
Complete list of features:

- Reading and writing engine
  - Based on SubtitleAPI, so new formats can be easily added by downloading an updated dll file.
  - Currently (version 1.15 of SubtitleAPI) supports 65 subtitle formats.
  - Can handle both time and frame based subtitles.
  - Can load files in plain text format so that you can set the timings.
  - Supports reading and writing style tags (bold, italic, underline) and color tags -- including full tags support of multiple tags per subtitle. Currently, SubtitleAPI supports tags for the following formats: SubRip, MicroDVD, SubStation Alpha, Advanced SubStation, RealTime, SAMI, Spruce Subtitle File, and ViPlay Subtitle File.
  - Supports Output Settings in DVDSubtitle, SAMI, Sonic Scenarist, SubStation Alpha, SubViewer 1 & 2 and TMPlayer formats.
  - Supports saving a subtitle in your custom format.
  - Supports writing and reading UTF-8 and UTF-16 files
- Interface
  - User friendly.
  - Menu Configurable shortcuts.
  - Supports multi-language interface.
  - Can switch between interfaces to adapt to the user's need, you can turn Video Preview Mode on and off and Translator Mode on and off.
  - User friendly "Translator mode".
  - Supports UTF-8 and UTF-16 coded subtitles (special characters such as music notes are shown correctly).
  - Permits to select also VLC (VideoLan) as video renderer, next to 'Default' (VMR7) and VMR9.
    Remark: VLC is only shown in the Video Renderer menu if VLC for 32 bits is installed on your system.
- Video preview
  - Integrated in the main window.
  - Shows subtitles over the video.
  - Can show information about the video you are watching.
  - You are able to customize foreground color, background color (or transparent), show border or not, show shadow or not, border and shadow's width of the subtitles.
  - NOT based on Windows Media Player, this results in a highly improved performance and visual quality.
- Subtitle fixing
  - Highly enhanced functions strictly designed to get speed and a high grade of efficiency.
  - Advanced & easy to customize text scripts for OCR errors repair, offering the possibility of using regular expressions.
  - Powerful and totally customizable error marking engine with the option to automatically recheck for errors on every subtitle change.
  - Powerful and totally customizable error fixing engine.
  - Optional automated checks/fixes on load subtitle.
  - Checks and fixes (all are optional, you may configure it): empty subtitles, lines without letters, overlapping, bad values, hearing impaired subtitles, text before colon (":") (optional - "Only if text is in capital letters"), unnecessary dots, "-" in subtitles with one line, subtitles over two lines, prohibited characters (configurable characters), repeated characters (configurable characters), repeated subtitles (configurable time tolerance), OCR errors, spaces before custom characters, spaces after custom characters, unnecessary spaces, too long/short durations, too long lines (only check), too short pauses, unnecessary tags, dash on first line (optional - Only if there is no "-" on second line), dialogue on one line, too many characters per second.
- General
  - Extremely customizable.
  - Multi-level Undo-Redo.
  - Spell check using Microsoft Word's engine, so it supports any installed language.
  - Spell check using the "Hunspell" engine (open office) for non Word users.
  - Can create new subtitles from scratch.
  - Easily add and delete subtitles with "Insert" and "Delete" keys.
  - Can split subtitle (at selected item, at given item, at given time, at given frame, or at the end of video), or in an indefinite number of parts (equal in time, in lines or at the end of multiple videos).
  - Can join an indefinite number of subtitles, and those subtitles may be in different formats with different FPS (you can select a different FPS for each file).
  - Two methods of getting FPS from video: without using DirectX (only supports AVI) and using DirectX (supports all video formats, but it is slower).
  - You are able to choose which subtitle extensions to associate.
  - Supports drag & drop (subtitle files and video files).
  - Supports command line.
  - Recent files list (customizable number of recent files from 0 to 20).
- Timing operations
  - Set delay (positive or negative, time or frames).
  - Set duration limits (maximum duration and minimum duration).
  - Adjust subtitles using four possible methods: 1- first and last dialogs, 2- synchronize using two points (linear algorithm), 3- Adjust to synchronized subtitles and 4- Advanced system to synchronize subtitles using an indefinite number of points.
  - "Time expander/reducer" to expand/reduce the Hide Time of certain subtitles under certain conditions.
  - "Automatic durations" to calculate the duration of subtitles using a simple formula.
  - FPS Conversion with one click.
  - "Extend length to next" and "Extend length to previous" to extend the length of selected subtitles to the Show Time of the next one or to the Hide Time of the previous one.
  - "Shift to next" and "Shift to previous" to shift the selected subtitles to the Show Time of the next one or to the Hide Time of the previous one.
  - "Shift subtitle" forward or backward a configurable amount of time.
  - "Read times from file" feature, to fix a subtitle using another subtitle's times.
  - "Set pauses" to set the pauses between subtitles.
  - "Round time values" to round all timing values.
- Text-related operations
  - Search & Replace text with "Match whole words", "Case sensitive" and "Preserve case" options.
  - "Smart line adjust" to constrain subtitles bigger than three lines into two and adjust length of lines.
  - "Convert case" with 6 different conversion modes.
  - "Unbreak subtitles" to make all selected subtitles be in one line.
  - "Divide lines" to easily divide a subtitle with more than one line (or one big line) into two subtitles with proper time recalculation.
  - "Reverse text" keeping lines order or not.
  - "Fix punctuation", very useful for right-to-left languages.
  - "Delete unnecessary links" to delete the unnecessary "..." if they are present the end of one line and at the beginning of the next one.
  - "Delete dots at the beginning" to delete unnecessary "..." at the beginning of the subtitles.
  - "Read texts from file" feature, to fix a subtitle using another subtitle's text.
- Text and times related
  - "Sort subtitles" to sort all the subtitles according to their Show Time.
  - "Combine subtitles" to make all the selected subtitles become only one (e.g. "- Hi!" and "- Hey!!!" to "- Hi!|- Hey!!!").
  - "Auto combine subtitles" to automatically combine subtitles with short duration or too many characters per second.
  - Visual effects with the texts and times of the subtitles.
  - Possibility to mark subtitles for later review (and of course unmark them) and read Subtitle Report Files (*.srf) generated by ViPlay.

List of currently supported formats:

- Adobe Encore DVD (Old) (*.txt)
- Adobe Encore DVD NTSC (*.txt)
- Adobe Encore DVD PAL (*.txt)
- Advanced SubStation Alpha (*.ass)
- Advanced Subtitles (*.xas)
- AQTitle (*.aqt)
- Captions 32 (*.txt)
- Captions DAT (*.dat)
- Captions DAT Text (*.dat)
- Captions Inc. (*.txt)
- Cavena (*.txt)
- Cheetah (*.asc)
- CPC-600 (*.txt)
- DKS Subtitle Format (*.dks)
- DVD Junior (*.txt)
- DVD Subtitle System (*.txt)
- DVDSubtitle (*.sub)
- FAB Subtitler (*.txt)
- I-Author Script (*.txt)
- Inscriber CG (*.txt)
- JACOSub 2.7+ (*.js, *.jss)
- Karaoke Lyrics LRC (*.lrc)
- Karaoke Lyrics VKT (*.vkt)
- MAC DVD Studio Pro (*.txt)
- MacSUB (*.scr)
- MicroDVD (*.sub, *.txt)
- MPlayer (*.mpl)
- MPlayer2 (*.mpl)
- MPSub (*.sub)
- OVR Script (*.ovr)
- Panimator (*.pan)
- Philips SVCD Designer (*.sub)
- Phoenix Japanimation Society (*.pjs)
- Pinnacle Impression (*.txt)
- PowerDivX (*.psb, *.txt)
- PowerPixel (*.txt)
- QuickTime Text (*.txt)
- RealTime (*.rt)
- SAMI Captioning (*.smi, *.sami)
- Sasami Script (*.s2k)
- SBT (*.sbt)
- Scanlite (*.890)
- Sofni (*.sub)
- Softitler RTF (*.rtf)
- SonicDVD Creator (*.sub)
- Sonic Scenarist (*.sst)
- Spruce DVDMaestro (*.son)
- Spruce Subtitle File (*.stl)
- Stream SubText Player (*.sst)
- Stream SubText Script (*.ssts)
- SubCreator 1.x (*.txt)
- SubRip (*.srt)
- SubSonic (*.sub)
- SubStation Alpha (*.ssa)
- SubViewer 1.0 (*.sub)
- SubViewer 2.0 (*.sub)
- Timed Text (*.xml, *.ttml, *.dfxp)
- TMPlayer (*.txt, *.sub) (five different variations)
- Turbo Titler (*.tts)
- Ulead DVD Workshop 2.0 (*.txt)
- Ulead DVD Workshop 2.0 a (*.txt)
- ViPlay Subtitle File (*.vsf)
- Wincaps text timecoded (*.txt)
- YouTube (*.sbv)
- ZeroG (*.zeg)

### 1.2 Reading & Writing engine

Subtitle Workshop's reading & writing engine has highly evolved since the beginning, and was rewritten from scratch a bunch of times. Many people have gladly reported bugs and they were all fixed as soon as we could. As time passed, the engine became more reliable and stable. Because of this reliability is that we decided to release the SubtitleAPI.
From Subtitle Workshop 6.0d onwards SubtitleAPI is no longer a DLL, it is incorporated in the main Subtitle Workshop executable.

#### 1.2.1 What is SubtitleAPI?

It is simply a dynamic link library (DLL) which contains the Subtitle Workshop reading and writing engine. This DLL was created so updates in the reading and writing engine of Subtitle Workshop can be published independently from Subtitle Workshop itself. After downloading a new version of the SubtitleAPI.dll file, you must replace the old file located in the "SubtitleAPI" subfolder of the main Subtitle Workshop folder. The next time you open Subtitle Workshop, new formats/bug fixes will make effect.
From Subtitle Workshop 6.0d onwards SubtitleAPI is no longer a DLL, it is incorporated in the main Subtitle Workshop executable.

### 1.3 Visual overview

Here's the Main Window of Subtitle Workshop:
One of the things that make Subtitle Workshop unique is it's interface. It is very user friendly and keeps the basic and advanced functionality in easy to access menus.
The interface is ideal for virtually *any* task - you can obtain an excellent performance creating subtitles, fixing times manually, translating subtitles, and of course, using all the built in features.

#### 1.3.1 Menu Bar

This is the main menu of Subtitle Workshop and it sits on top of the Main Window.

#### 1.3.2 Toolbar

The Toolbar is below the Menu Bar and consists of buttons for the most important functions of Subtitle Workshop. Note that the "Undo" and "Redo" buttons offer a dropdown list for the recent Undo/Redo actions and you can Undo/Redo multiple actions at once. The Toolbar can be shown or hidden from the "View/Toolbar" menu.

#### 1.3.3 Left Panel

The Left Panel sits on the left side of Subtitle Workshop and contains important controls for Working Mode (Time or Frames), FPS (Input FPS and Current FPS), Charsets (for Text and Translation), as well as other fields like the Notes field. The Left Panel can be shown or hidden from the "View/Left Panel" menu ([F4]).

#### 1.3.4 Video Preview Panel

The Video Preview Panel is below the Toolbar and on the right of the Left Panel, and consists of two areas: the Video Display - a large area where the video file is displayed (along with the subtitle for the current moment of the video); and the Video Controls Panel - an area with buttons for controlling the video playback (and some other buttons). The Video Preview Panel can be shown or hidden from the "Movie/Video Preview Mode" menu ([Ctrl]+[Q]). Learn more about the Video Preview Panel in 5.8 Internal Video Preview.
Settings:
The time to rewind/forward when pressing the "Rewind" and "Forward" buttons can be set in Rewind and forward times.
The percentage of playback rate to apply when pressing the "Alter playback rate" button can be set in Default altered playback rate.
The amount of additional time shift (in relation to the current moment of the video), when the Show Time of a subtitle is set with the "Set Show Time" button or when the Hide Time of a subtitle is set with the "Set Hide Time" button. Negative values can be used. Both values can be set in Setting Show and Hide times.

#### 1.3.5 Subtitles List

The Subtitles List is below the Video Preview Panel, and it displays a list of all subtitles in the current subtitle file. It has the following columns: Num (the subtitle number), Pause (the pause between the subtitle and the previous subtitle), Show (the Show Time of the subtitle), Hide (the Hide Time of the subtitle), Duration (the Duration of the subtitle - that is the Hide Time minus the Show Time), Text (the Text of the subtitle), and Translation (only in TRANSLATOR MODE - the text of the Translation file subtitle). All the columns can be repositioned by a drag-and-drop and shown or hidden from the "View/Columns" menu.

#### 1.3.6 Time Controls Area

The Time Controls Area is below the Subtitles List, on the left. It consists of four boxes for editing the timing values (Show, Hide, Pause, and Duration) and four Time Control Buttons.
Each of the Time Control Buttons has two functions - one when it's clicked with the left mouse button, and another when it's clicked with the right mouse button. The buttons' functions (their tooltips also indicate them) are as follows (left click function/right click function):

- "Move to Previous/Extend to Previous";
- "Move to Next/Extend to Next";
- "Set Default Pause/Set Default Pause, if Pause is too short";
- "Set Auto Duration/Set Min Duration".

The Time Control Buttons can be shown or hidden from the "View/Show time control buttons" menu.
The entire Time Controls Area can be shown or hidden from the "View/Show time controls" menu ([F5]).
The width of the Time Controls Area can be resized via a horizontal splitter located between the Time Controls Area and the Text Controls Area.
Settings:
Increase step (time) specifies the step (in Time Mode) the values of the time controls (Show, Hide, Pause, and Duration) are increased/decreased with, when using the controls up/down arrows or the mouse wheel.
Increase step (frames) Specifies the step (in Frames Mode) the values of the time controls (Show, Hide, Pause, and Duration) are increased with, when using the controls up/down arrows or the mouse wheel.
Keep min duration of sets a minimum duration that Subtitle Workshop should try to keep for every subtitle when timings are modified. Currently, this is applied when the Show/Hide/Pause values are manually changed; when the "Set Show Time" and "Set Hide Time" buttons are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.
but don't allow overlaps does not allow overlaps when trying to keep the minimum duration when set. Automatically round time values to sets a value that Subtitle Workshop should automatically round all time values to. Currently this is applied when the "Set Show Time", "Set Hide Time", and "Move subtitle" buttons/menus are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.

#### 1.3.7 Text Controls Area

The Text Controls Area is below the Subtitles List, on the right. It consists of a Text edition field, a Text Style Bar (buttons for Bold, Italic, Underline, Color, and Remove All Tags), a Text label (display the number of characters in each line of the current subtitle and the total number of characters), and a Lines label (displays the number of lines in the current subtitle).
In TRANSLATOR MODE, the Text Controls Area contains another set of the same controls for the Translation file text.
The Text Style Bars can be shown or hidden from the "View/Text style bars" menu.
The Lines labels can be shown or hidden from the "View/Show lines count" menu.

#### 1.3.8 Statusbar

The Statusbar is located on the bottom of Subtitle Workshop. It displays the current subtitle file format (including UTF8 or ANSI coding) and the number of the currently selected subtitle(s). When the number is clicked, the Subtitles List is centered on that subtitle. The Statusbar can be shown or hidden from the "View/Statusbar" menu.

### 1.4 Getting started

Get started using Subtitle Workshop's basic features.

#### 1.4.1 Loading a subtitle file

To load a subtitle file simply click the "File/Load/Load Subtitle" menu ([Ctrl]+[O]). Additionally, you can drag-and-drop your file into the Main Window, or if the extensions are associated, just double click on the subtitle file you wish to open.
Every time you load a file using any of these methods, Subtitle Workshop will check to see if it is a valid file and what is its format. Most of the files will load correctly, but if you get the "The file is a bad subtitle or an unsupported format" error message, there is still some chance you can load the file. First of all you MUST be sure about the format of the file, if you are, then proceed like this:

1. Click the "File/Load/Load subtitle" menu.
2. A dialogue will pop up, you have to select the right filter in it (there is a combo box where you see the "All supported files" text, you have to click the button with the arrow that is next to it and select the format of the file).
3. Once you have done this, press the Open button in the dialogue.

This way there will be no automatic format recognition nor file check. If the file still can't be loaded, you will get an error message. In this case, if you are sure the file is a text-based subtitle format, e-mail it to us and we will try to fix the problem or add the new format.
After loading a (saved) subtitle file the previously selected subtitle will be selected again, and, if a video is open, also the previously selected videoposition will be chosen.
If the option Round time values on subtitle load is enabled then Subtitle Workshop will round all time values when a subtitle file is opened.

#### 1.4.2 Loading a video file

To load a video file simply click the "Movie/Open" menu ([Ctrl]+[P]). If you get the "File is not a valid video file" error message, make sure you have the right codecs installed. If you don't, download and install a codec pack of your choice (for example the K-Lite Codec Pack , or/and the Haali Media Splitter), it should fix most of the playback problems.
See also the Hints section for splitter/codec settings. Remark: Codecs are only needed with the 'Default' or 'VMR9' renderers, not with the VLC one.

#### 1.4.3 Create a new file

Using Subtitle Workshop you can easily create new subtitles from scratch, and then save them in any file format. To do so, click the "File/New subtitle..." menu ([Ctrl]+[N]). Once you have done this, you can start adding subtitles, and then save the file by the "File/Save" menu ([Ctrl]+[S]).

#### 1.4.4 Adding subtitles

You just need to press the [Insert] key or click the "Edit/Insert subtitle" menu. The subtitle will always be added right after the focused subtitle in the Subtitles List. The default duration of the new subtitle is one second, and the Show Time of it is going to be the Hide Time of the previous one plus 200 milliseconds (these values can be modified in Subtitle Workshop's Settings). If you are adding the subtitle in a blank list, its Show Time will be zero.
If you want to insert a subtitle before the selected subtitle in the Subtitles List, press [Shift]+[Insert] or the "Edit/Insert before" menu.
Settings:
The duration of a newly inserted subtitle is set in Default subtitle duration.
The pause between a newly inserted subtitle and its previous (when using "Edit/Insert subtitle") or next (when using "Edit/Insert before") subtitle is set in Default subtitle pause.

#### 1.4.5 Deleting subtitles

Select all the subtitles you wish to delete by holding the [Ctrl] key and clicking on them, then press the [Delete] key or click the "Edit/Remove selected" menu.

#### 1.4.6 Manually edit a subtitle

Every subtitle is composed by three parts:

1. The Show Time - the time in which the subtitle is shown.
2. The Hide Time - the time in which the subtitle is hidden.
3. The Text - the text of the subtitle itself.

Subtitle Workshop lets you easily edit any of these fields.
To edit the Show Time, just click the "Show" field, set the time (or frames) you wish and press [Enter].
To edit the Hide Time, click the "Hide" field, set the time (or frames) you wish and press [Enter]. Note that you can also edit the Hide Time of a subtitle by changing the "Duration" field, and you can also edit the Show Time by changing the "Pause" field.
Additionally, you can edit any of these time values using the Up-Down buttons at the right side of each text box.
You can also edit any of these time values by using the scroll wheel of your mouse when the mouse cursor is located over one of the four boxes ("Show", "Hide", "Pause", or "Duration").
To edit the text, simply click the "Text" box and write the desired text. In the Subtitles List, the character "|" (pipe) represents a new line.

#### 1.4.7 Text style and color tags

First of all, you must know that Subtitle Workshop has different Tags Modes (see "Settings/Settings/General/Tags mode").
In the new Multiple Tags Mode, Subtitle Workshop can support as many tags as you want per a single subtitle, i.e. you can apply tags to the entire subtitle, to a single line, to a single word, or even to a single symbol. The tags in this mode are:

- <b> and </b> for bold
- <i> and </i> for italic
- <u> and </u> for underline
- <c:#RR GG BB> and </c> for color, the format of the color is HTML format

In the old Single Tags Mode, Subtitle Workshop only supports tags for the whole subtitle. Thus, you only need to open the tags because closing them would be useless. The supported tags in this mode are:

- <b> for bold
- <i> for italic
- <u> for underline
- <c:#RR GG BB> for color, the format of the color is HTML format

To add tags in any mode, you can use the Text Style Bars buttons, simply write the tags manually, or use the right-click Context Menus of the Subtitles List or the Text and Translation fields.
WARNING: Please note that not all subtitle formats support style tags and color tags. If you save these tags in a subtitle format which doesn't support them, the tags will be lost.

#### 1.4.8 FPS and Input FPS

Knowing the difference between this two fields is crucial to work with Subtitle Workshop.
You have to modify these fields in order to convert FPS.
Input FPS is the Frames Per Second (FPS) of the movie that the current subtitle file was originally made for. FPS is the Frames Per Second (FPS) of the movie you want to adjust the current subtitle file for.
When editing frame based subtitles there is no need for Input FPS (we only need FPS) so "Input FPS" will become absolutely useless after loading frame based subtitles (it won't have any effect in the times).
Q: How do I convert a 25 FPS subtitle File into 29,97?
A: Simply load the subtitle file, set "Input FPS" to 25, and then set "FPS" to 29,97. You have just changed frame rate of the file.

#### 1.4.9 Projects

A project is a combination of:

- a subtitle file
- its translation (if any)
- the (related) movie file (if any)
- the previously selected subtitle
- the previous position in the movie.

Projects can be used both in translation and non-translation mode.
Load project
Click this menu button to load the custom format project from an already saved file (*.stp).
Save project
Click this menu button to save the project into an *.stp file.

### 1.5 Command line parameters

It is highly recommended that you send each parameter to Subtitle Workshop in quotes (" ") to avoid problems with spaces in the name/path of the files.
To open a file:
SubtitleWorkshop.exe "/OPEN(File)"
Example:
SubtitleWorkshop.exe "/OPEN(C:\Subtitle.srt)"
To convert from one format to another:
SubtitleWorkshop.exe "/CONVERT(Input_File/Output_File/Output_Format/Input_FPS/Output_FPS)"
Input FPS and Output FPS are only required if you are handling frame based files. Otherwise, you may specify any value. In the FPS, if not a rounded value, the decimal digits have to be separated using the decimal separator (configurable from Control panel/Regional and language settings) of the PC on which Subtitle Workshop is running. Usually it is "," or ".". The subtitle format has to be its name (in the form of a string). The formats you an use depends on the version of SubtitleAPI.
To see a list of all the supported formats and *exactly* how you should write them, call Subtitle Workshop like this:
SubtitleWorkshop.exe /GetSupportedFormats
After doing this, Subtitle Workshop will save a list of the supported formats to the path in which it is installed, in a TXT file with the name "SupportedFormats.txt".
Some examples:
SubtitleWorkshop.exe "/CONVERT(C:\Folder\Sub.smi/C:\Subtitle.pjs/Phoenix Japanimation Society/25/29,97)"
SubtitleWorkshop.exe "/CONVERT(C:\Subtitle.vsf/C:\Subtitle.jss/JACOSub 2.7+/23,976/0)"
SubtitleWorkshop.exe "/CONVERT(C:\Subtitle.srt/C:\Subtitle.sub/MicroDVD/29,97/29,97)"
To set a delay for the timings of a subtitle file:
SubtitleWorkshop.exe "/DELAY(Input_File/Output_File/Input_FPS/Delay_in_Milliseconds)"
Example:
SubtitleWorkshop.exe "/DELAY(C:\Subtitle.srt/C:\Subtitle.srt/0/-5000)"
The example above will set a -5 seconds delay to Subtitle.srt and overwrite it. We specify 0 as FPS since we are loading a time based format. As in the parameter to convert a file, if FPS is not a rounded value, the decimal digits have to be separated using the decimal separator of the PC in which Subtitle Workshop is running. If you specify a wrong FPS and FPS is really needed, then the default FPS (25) will be used.
To execute a Pascal Script:
SubtitleWorkshop.exe "/SCRIPT(Input_File/Output_File/Input_FPS/Pascal_script)"
Example:
SubtitleWorkshop.exe /SCRIPT(C:\Subtitle.srt/C:\Subtitle_out.srt/25/Copyright.pas)
The example above opens "Subtitle.srt", processes the Copyright.pas script, and saves the result to "Subtitle_out.srt". If you want to save the file in a different format, use the convert command line parameter instead. FPS is required, only if the input file is frame-based.

### 1.6 Language files

Language files are used to set the Interface Language of Subtitle Workshop. These files are located in the "Langs" subfolder of the main folder of Subtitle Workshop, and have the .LNG extension (they are actually ini files with a different extension - which means they are simple text files and you can edit them with any text editor). You can easily create your own language file or update a currently existing language file and use it in Subtitle Workshop. To do so, you must translate the English.lng (or any other .lng) file to the language you want, and then copy it to the "Langs" directory naming it language.lng (for example, Spanish.lng, English.lng, French.lng).
Warning! Do *NOT* translate the text between "[ ]" and the text after the % sign (for example "%s" or "%d"). Otherwise the language file will not work properly!
Hints:

- If the language you are translating to uses a different charset than ANSI_CHARSET, do not forget to change it in the [General] section. See the charsets.txt in the "Langs" directory for a reference, or see the Frequently Asked Questions (FAQ) for an overview.
- In the messages, character "|" (pipe) represents new line.

After you create a language file, send it to us so that we could include it in Subtitle Workshop. The name of the translator will be shown in the "About" Subtitle Workshop window.

### 1.7 Custom formats

This feature makes possible to save a subtitle file in a format that Subtitle Workshop doesn't support, or to easily create your own format or text files with subtitles. You can only *save* a file in a custom format, reading the file in Subtitle Workshop will not be possible.
To access the custom formats dialogue, first load a subtitle, then click the "File/Save as..." menu and then click the "Custom format" button.
The parameters that define a custom format are:
Format name
Set the format name.
Extension Specifies the file extension of the format. Subtitle Workshop will use this when saving the file. Please note that the format of the extension must be "*.CHARS".
Time or frames
Check the "Time" field if you are going to work with time. If you are going to work with frames, then check the "frames" field and you don't need to specify a structure, because frames are always going to be a simple number.
Time structure
Specifies the time structure. Only applicable if "Time" has been selected (see above).
h represents hours, m minutes, s seconds, z milliseconds and f frames. Frames are the number of frames of the timepart less than 1 second (so, the milliseconds part). The milliseconds and the frames part are not mutually exclusive (so you can have both if necessary).
If you write more than one "h" or "m" or "s", "z" or "f" (representing the number of digits in the time for each part), all the "h" or "m" or "s", "z" or "f" have to be together.So, you can not write something like "h:m:h:,zmzs". The "f" value in the time will always have 2 digits, irrespective of how many "f"s are present in the format (1 digit makes no sense).
A time like "00:00:00,0" would be "hh:mm:ss,z", a time like "0:00:00,000" would be "h:mm:ss,zzz" and a time like "0:00:00,00" (with the last two digits representing the frames in stead of milliseconds) would be "h:mm:ss,ff".
If you want the time structure to be just milliseconds, write "MS" instead of a time structure.
FPS
Select the FPS of the subtitle you are saving. Only applicable in the "frames" format or when the Time Structure contains "ff". If you are saving a time subtitle to another time subtitle you don't need to touch this.
New line char
Specifies the character(s) to separate lines in subtitles. If you want to make new lines like in SubRip format (without using any new line char, just separating lines) then you should write "[Enter]" as the new line character.
Text of the custom format script
The parts that Subtitle Workshop will write to a file can be divided in three, and in this order:

1. A part that is written only once at the beginning of the file
2. A part that is repeated each time there is a new subtitle
3. A part that is written only once at the end of the file

All you have to do is to write those three sections in the text box. When you first open the "Custom formats" dialogue you can see a commented example. Comments are started with ** and are finished with !*. Due to this you can't write the characters "**" to a file because it would be understood as a comment start. If you want to write this two characters into a file you may use {asterisk} (this will write only one asterisk). To write two, "{asterisk}*" or "{asterisk}{asterisk}" are the same.
First, write the first section (if you want to have one). Then begin the second section (the repeating part) with {RepeatSub}.
Repeating section
In this section it is possible to write 4 things.

1. The Show Time of the subtitle. You have to write {swStart} and Subtitle Workshop will replace it with the Show Time (or frames) value of the actual subtitle. You can also write {swFrameStart} and Subtitle Workshop will replace it with the frames. This way you can save the time, for example in hh:mm:ss,zzz:FRAMES format. If you want to put zeros in the left until you reach the desired length, you can write {swFrameStart,DesiredTotalLength}. You can do the same with the end frame.
2. The end time of the subtitle. You have to write {swEnd} and Subtitle Workshop will replace it with the Hide Time (or frames) of the actual subtitle. You can also write {swFrameEnd}.
3. The subtitle's text. You have to write {swText} and Subtitle Workshop will replace it by the subtitle's text, with the new line char you selected.
4. The subtitle count (like in SubRip format). You have to write {SubCount}. This variable holds the actual index of the subtitle. The first subtitle will be "1", the second subtitle will be "2", etc. Some formats like SonicDVD need to add zeroes on the left until the length of the number string is for example 4. For this, write {SubCount,DesiredTotalLength} and Subtitle Workshop will add zeroes automatically.

Check the files in the "Custom Formats Examples" folder, and load some examples to see how to use this feature better.

## Chapter 2: Time related features

### 2.1 Frame rate conversion

See FPS and Input FPS.

### 2.2 Set delay

Subtitle Workshop can set a positive or a negative delay, in time or frames. The delay is a fixed time or frames (constant) that represents the difference of the points where the subtitles *should* start, and currently *does* start. To apply a delay, first load your subtitle, select a subtitle, pause the movie, set its playback time, and then click the "Edit/Timings/Set delay..." menu ([Ctrl]+[D]). The delay dialogue will pop up. Press "Calculate" now or set a delay manually.
The tool will calculate the difference between the video playback time and the (first) selected subtitle start time. If you are working in Time Mode, you will be able to set a time delay, and if you are working in Frames Mode, you will be able to set a frames delay. Subtitle Workshop will automatically detect the mode.
You can choose if you want to apply the delay to all the subtitles, just to the selected ones (useful if only one part of the subtitle file appears later than it should), or from the first selected until the last subtitle (useful for subtitle synchronization).

### 2.3 Adjust subtitles

Subtitle Workshop can synchronize subtitles to a video by four methods. Whatever method you want to use, the first thing you have to do is to load the subtitle file you are going to adjust, and for methods 1, 2, and 4 you need to load the video file you want to take as a reference.

#### 2.3.1 Method 1: Simple adjust, first and last subtitles

This method offers a lot of accuracy, and is recommended in most cases. After you loaded the subtitle file and video, do this:

- Play the video until you reach the first spoken dialogue or the first place that should be subtitled in the movie, and when you hear/read it, note the time (you will need it later).
- Seek to the near end of the video and when you hear/read the last spoken dialogue or the last place that should be subtitled, note the time.
- You can additionally take this two time values from an external video player instead of using Subtitle Workshop's video preview.
- Next, click the "Edit/Timings/Adjust subtitles..." ([Ctrl]+[B]). Switch to the "Simple" tab. In "First spoken line" write the first time, and in "Last spoken line" write the last time. Then press the Adjust! button.

#### 2.3.2 Method 2: Synchronize using two points

This method will work very well in most cases. It works by taking two points of the subtitle file and two points of the video, and calculating the times using a linear algorithm. The first pair of points will be called "First sync points" and the last pair of points will be called "Last sync points". Each pair of points consist of one point in the subtitles and one point in the video, the point in the subtitle has the wrong times and the point of the video has the right times. After selecting the first sync points and the last sync points, Subtitle Workshop calculates the rest of the times appropriately. The closer first sync points are to the beginning and last sync points are to the end, the most accuracy you get. Note: if the point of the subtitle selected in the first sync points corresponds to the first subtitle, and the point of the subtitle selected in the last sync points corresponds to the last subtitle, then the first formula (first and last subtitles) will be used.
After understanding this basics you have to do this:

- First, select the subtitle you want to mark as first point. The first point in the subtitle will always be the selected subtitle's Show Time.
- Play the video until you find the right time for that subtitle (this will be the first point in the video), and when you do, click the "Mark as first sync point" button ([Ctrl]+[1]).
- Now select the subtitle you want to mark as last sync point. The last sync point will be the selected subtitle's Show Time.
- Play the video until you find the right time for that subtitle (this will be the last point in the video), and when you do, click the "Mark as last sync point" button ([Ctrl]+[2]).

After doing this you will get a confirmation message, click "Yes" and the subtitle will be synchronized. Note that this method can also be used to sync only a part of the subtitles.

#### 2.3.3 Method 3: Adjust to synchronized subtitles

Useful if you have desynchronized subtitles in one language and want to quickly adjust them to an already adjusted subtitle file in another language. This method will work even if both files have a different number of subtitles. The only requirement for proper adjustment is that first and last subtitles in both files correspond - that is, mean the same. This method is extremely easy: you just have to load the subtitles you want to sync and to click the "Timings/Adjust/Adjust to synchronized subtitles" menu ([Shift]+[Ctrl]+[B]), and load the synchronized file. Note: this method is NOT the same as the "Read timings from file" feature.

#### 2.3.4 Method 4: Advanced subtitle adjust

Use this method if the traditional two points adjust fails. This unique feature makes possible to adjust subtitles in the worst cases, when desynchronization is not constant, or is different in different parts of the subtitle. This system lets you select multiple subtitle/video points so that you can synchronize the subtitle by "parts". The maximum number of points you can select is the number of subtitles there are.
For the best performance to be achieved you first have to load the subtitle file and then load the corresponding video. In the video preview controls, you will notice that last button is "Add subtitle/video synchronization point". You will need this button later. These are the steps you should follow now:

- First, select the subtitle you want to mark as point. The point will always be the selected subtitle's Show Time. A sync point subtitle can be any subtitle in the file.
- Play the video until you find the right time for that subtitle, and when you do, click the "Add subtitle/video synchronization point" button ([Ctrl]+[Alt]+[P]). The Adjust subtitles window will show, and the "Advanced" tab will be displayed by default. This window is "non-modal", that means, you can still use the main Subtitle Workshop interface while it is opened.
- You need to repeat the two steps above for each point you want to add. You can additionally use the "Add" button to enter a time manually, or the "Add from media" button to add points directly from the Adjust subtitles window (works the same way as the button in the video preview control).

A very important thing you must know is the use of the "If time is outside the points scope" option. There are three possibilities:

- Extrapolate. Subtitle Workshop will use mathematical routines to calculate the times for every subtitle in the file even if it is outside the scope of points. Using this, you can have behaviors like the one you would obtain using "synchronize using two points", but with more points.
- Return original time (no changes). If a subtitle is outside the points scope, Subtitle Workshop will not change its timing. This is useful e.g. if you only want to adjust subtitles 100-200 and leave all other subtitles like they are.
- Return displacement of neighbour point. If desired time is before first sync point, then it will calculate the new time using the displacement of the first sync point. If desired time is after last sync point, then it will calculate the new time using the displacement of the last sync point.

When you are done configuring all the points and settings, click the Adjust! button.

### 2.4 Duration limits

Duration limits makes it possible to limit the minimum and maximum duration of all the subtitles in a subtitle file. Subtitles which are shown less than 1 second are usually hard to read, except if they are short words like "Yes" or "OK". Sometimes there are subtitles with more characters and with short duration, or subtitles with durations greater than 10 seconds - these are the cases in which you should use this feature. You can set a minimum and maximum possible duration for the subtitles. Each subtitle's duration which is shorter than the minimum duration allowed will be increased to the minimum possible duration you set, without causing overlapping with the next subtitle. Each subtitle's duration which is larger than the maximum possible duration will be set to the maximum duration you set.
To set duration limits, click the "Edit/Timings/Set duration limits..." menu ([Ctrl]+[L]). After that, you need to enter the maximum and minimum duration in milliseconds and press the Apply button.
When setting a minimum duration, if the "Increase at start if necessary" option is enabled, the subtitle duration will be increased at its start (the Show Time value will be decreased), if increasing it only at the end (increasing the Hide Time value) doesn't achieve the desired minimum duration.

### 2.5 Duration expander/reducer

Duration expander/reducer is a very nice feature in the cases you have a subtitle file that contains some long subtitles with short durations. This feature lets you expand or reduce the duration of certain subtitles under certain conditions. To access the Duration expander/reducer, click the "Edit/Timings/Duration expander/reducer" menu ([Shift]+[Ctrl]+[Y]).
The amount of time you want to expand or reduce the duration with is customizable, and may be set in seconds (with a precision of up to one millisecond) if you are working in Time Mode, or in frames (with a precision of up to one frame) if you are working in Frames Mode. You can also choose to expand/reduce the duration only under certain conditions, only if the subtitle is longer than a customizable number of characters, and/or only if the duration is shorter/longer (depends if you want to expand or reduce duration) than a fixed time. Additionally, the "prevent overlapping" check box should be checked so that no overlapping errors occur while increasing the Hide Time of the subtitles. When you have configured everything, you have to select if you want to apply Duration expansion/reduction to all the subtitles, or only to the selected subtitles. To finally expand/reduce the durations of the subtitles, press the Apply button.

### 2.6 Read times from file

Useful if you have one subtitle file in which the text of each subtitle is right but the timings are not, and you have another file with the same number of subtitles and with the right times. You just have to load the file with the right texts, and then click the "Edit/Timings/Read timings from file" menu ([Shift]+[Ctrl]+[T]). A dialogue will pop up, all you have to do is select the file with the right times in that dialogue and load it.

### 2.7 Extend length to next/previous subtitle

"Extend length to next" / "Extend length to previous" work only for the selected subtitles and have no effect over the last/first subtitle of the file. What they do is, they extend the length of each selected subtitle to the Show Time/Hide Time of the next/previous subtitle. To extend the length to the next/previous subtitle, first select the subtitles you want. Then click the "Edit/Timings/Extend length to next" menu ([Shift]+[Ctrl]+[E]) / the "Edit/Timings/Extend length to previous" menu ([Alt]+[Ctrl]+[E]).

### 2.8 Automatic durations

"Automatic durations" is a very useful feature in the cases when you have a subtitle file in which the durations of all (or some) subtitles is totally wrong. There are two methods for applying automatic durations that you can use. With the first one, you specify duration per character, word and line (the default values give very good results) and Subtitle Workshop calculates the durations for the subtitles. With the second one, you specify the number of maximum Characters per Second (CpS) you want all subtitles to have.
The Automatic durations feature may be useful to go faster when subtitling videos - you can only set Show Times manually, and let Subtitle Workshop calculate all Hide Times with Automatic durations. To access "Automatic durations", click the "Edit/Timings/Automatic durations" menu ([Shift]+[Ctrl]+[R]).
You can additionally specify if you want the durations to be increased at the start (the Show Time to be decreased) if necessary to achieve the desired durations, by enabling the "Increase at start if necessary" option. You can specify a maximum increase at the start in the box below (so that subtitles don't show *really* early).
You can also specify if you want to apply new durations in all cases, only if they are greater than the original ones, or only if they are smaller than the original ones. You can apply automatic durations to all the subtitles or just the selected ones.
The use of this feature together with Duration limits and Detect too long/short durations from Information and Errors can give excellent results in a short amount of time.

### 2.9 Shift subtitles

This feature moves all the selected subtitles Show Time a specified number of milliseconds forward/backward, without modifying their duration. It is very useful to easily modify timings to synchronize with a movie. To shift selected subtitles forward, click the "Edit/Timings/Shift +X milliseconds" menu ([Shift]+[Ctrl]+[H]). To shift selected subtitles backward, click the "Edit/Timings/Shift -X milliseconds" menu ([Shift]+[Ctrl]+[N]).
Setting:
The time used to shift subtitles forward/backward is defined in Shift time.

### 2.10 Shift to next/previous

These two features shift all the selected subtitles as close as possible to the next/previous subtitle. To access them, click the "Edit/Timings/Shift to next" menu / the "Edit/Timings/Shift to previous" menu.

### 2.11 Set pauses

It is important to have enough time (a pause) between every two subtitles. It helps the human eye to register the change when a new subtitle shows up on the screen.
To set the time pauses between the subtitles, click on the "Edit/Timings/Set pauses..." menu and set the desired pause value and the applied method in the window that pops up, and then press the "Apply" button.

### 2.12 Round time values

This function rounds all the time values to a selected value. This can make the time values much easier to read with a negligible duration modification.
To round the time values, click on the "Edit/Timings/Round time values..." menu, select the desired value to round the subtitles to (100 or 50 milliseconds are the best values) and press the "Apply" button. You can apply the rounding to all subtitles or only to the selected subtitles.

## Chapter 3: Text & subtitles related features

Subtitle Workshop isn't just an ordinary subtitle editor - and thus it offers many text related functions to ease your work.

### 3.1 Smart line adjust

Smart line adjust is a very useful feature in the case you find a file that has a lot of subtitles that have more than two lines, or if the line breaks are just put stupidly. It applies better line breaks and constrains the subtitle's text to be in one or maximum two lines (depending on its length).
To use Smart line adjust, click on the "Edit/Texts/Smart line adjust..." menu. The function can break the text of a subtitle in two lines either in the middle (the "Equal lines" method), or on dialogue dashes and punctuation marks (the "Break on punctuation marks" method).
"Don't unbreak subtitles that are not too long" - the function will unbreak subtitles if possible, unless this option is enabled (e.g. this: "Hello.|How are you?" will NOT be changed to "Hello. How are you?" if this option is enabled).
"Adjust only long subs and subs with more than 2 lines" - enable this option if you don't want normal subtitles (subtitles that have less than 3 lines and their lines are not too long) to be modified (e.g. this: "I knew that he had a daughter|and she hated him." will NOT be changed to "I knew that he had a|daughter and she hated him." if this option is enabled), which preserves the original look of those subtitles and doesn't break their readability.
"Always try to find a better breaking point" - if this option (for the "Break on punctuation marks" method) is checked, Subtitle Workshop will always try to find a better break point; if it's not checked - Subtitle Workshop will try to find a better break point only if the previous break point is not a punctuation mark already.
This function has a "Fast" version - "Fast smart line adjust" - so that you can apply it fast by simply pressing a shortcut, without having to set any options.
To use Fast smart line adjust over a subtitle, just select the subtitle and click the "Edit/Texts/Fast smart line adjust" menu ([Ctrl]+[E]). Smart line adjust will take effect over all the selected subtitles, and they may be more than one. If you are working in translator mode, smart line adjust will affect both the original and the translated text.
Settings:
You may choose the length after which the subtitle will be broken in two lines, in the Two lines if longer than option.
Additionally, if enabled , when applied over and over again on the same subtitle, "Fast smart line adjust" would toggle between two or three different break points (break on punctuation mark, breaks in the middle, unbroken line), if possible.

### 3.2 Convert case

Sometimes you can stumble upon subtitle files that are all in uppercase, or in lowercase. Convert case can convert the casing of the texts. To access Convert case, click the "Edit/Texts/Convert case..." menu ([Shift]+[Ctrl]+[C]). You can select among five different case conversion modes:

1. "Sentence type" only upper cases the first letter of a sentence. It turns "HELLO, thiS iS VERY nice. i don't WANT tO heAr IT." into "Hello, this is very nice. I don't want to hear it."
   if ""..." detection" is enabled, it will check if the final three characters of the previous subtitle are "..." and if they are, then it will not uppercase the first character of the current subtitle (it will think it's the continuation of the previous subtitle). If "Only first letter of first word" is enabled, Subtitle Workshop will uppercase only the first letter of each sentence and leave all other letters the way they are.
2. "Lowercase" lower cases the whole text. Turns "HELLO!, thiS iS VERY nice. i don't WANT tO heAr IT." into "hello!, this is very nice. i don't want to hear it."
3. "Uppercase" upper cases the whole text. Turns "HELLO!, thiS iS VERY nice. i don't WANT tO heAr IT." into "HELLO!, THIS IS VERY NICE. I DON'T WANT TO HEAR IT."
4. "Title type" upper cases the first letter of each word and lowercases the rest. Turns "HELLO!, thiS iS VERY nice. i don't WANT tO heAr IT." into "Hello!, This Is Very Nice. I Don'T Want To Hear It."
5. "Inverse type" lower cases the uppercase characters and upper cases the lowercase characters (reverses case). Turns "HELLO!, thiS iS VERY nice. i don't WANT tO heAr IT." into "hello!, THIs Is very NICE. I DON'T want To HEaR it."

Note that if you are working in translator mode, convert case will only work for the original text. If you want it to work for translation, then use the "Edit/Translation/Swap" feature.

### 3.3 Unbreak subtitles

The Unbreak subtitles feature combines the lines of multi-lined subtitles into one line, depending on certain conditions. To unbreak subtitles, click on the "Edit/Texts/Unbreak subtitles..." menu. "Don't unbreak if line length exceeds" - set a maximum line length "Don't unbreak subtitles with "-" on second line" - set not to unbreak subtitles with dialogue
This feature has a "Fast" version - "Fast unbreak subtitles" - so that you can apply it fast by simply pressing a shortcut, without having to set any options. "Fast unbreak subtitles" takes effect over all the selected subtitles, and makes each one of them to be in only one large line, unconditionally.
When working in translator mode, these features affect both the original text and the translation.

### 3.4 Divide lines

Divides a subtitle into two subtitles. Very useful for example if you have a subtitle file with a lot of subtitles with four (or more) lines, which are too big to be constrained into two lines with the "Smart line adjust" feature. Dividing a subtitle into two manually is possible but it is a very annoying job, since after you insert the subtitle you also have to set all the times and cut the text from the first subtitle to put in the second one. "Divide lines" does all this automatically and very quickly.
First, select the subtitle, then go to the "Edit/Texts/Divide lines..." menu ([Shift]+[Ctrl]+[D]). Then the "Divide line" dialogue will pop up. Note that if the selected subtitle has only one line that is shorter than the "Break line after" value set in "Settings/Advanced", the menu will be disabled and the key shortcut will not work.
In the "Divide lines" dialogue you are going to see two text boxes, one with the first subtitle's text and another one with second subtitle's text. You have to select after which line to divide, the default value will be correct most of the times. That option will be disabled if the subtitle you are dividing has only two lines. When you change this value, the text of both text boxes will be updated. If you notice that a line break disappears in some of the parts, go to "Settings/Advanced" and uncheck "Smart line adjust automatically". If that option is checked, after updating the text of each text box, it will be smartly adjusted into one or two lines. If you want to do it manually, pass the focus to the desired text box and press [Ctrl]+[E].
After this, you should focus on the timings of the subtitles. Most of the times the second subtitle will be displayed immediately after the first one, and so it is recommended to leave the "Continue directly" checkbox checked. If you want the second subtitle to be displayed some time after the first one, you have to uncheck that checkbox and enter the Show Time of the second subtitle. Additionally, you can use the time proportion buttons available at the top of the window. "1:1" means equal duration for both subtitles, "2:1" means the first will have two times the duration of the second one, etc. You can also use an automatic duration for each new subtitle by enabling the "Use automatic duration" option.
Finally, press the "Divide!" button.
This feature has a "Fast" version - "Fast divide lines" - so that you can apply it fast by simply pressing a shortcut, without having to set any options. "Fast divide lines" takes effect over all the selected subtitles.
When working in translator mode, divide lines will only insert an untranslated line in the translation, it will not divide the lines since it only works for original subtitle.
Settings:
The maximum line length that this function will allow can be set in the Break line after setting.
Additionally, if "Smart linea djust automatically is enabled Smart line adjust will be applied on both parts in the window.
Keep min duration of sets a minimum duration that Subtitle Workshop should try to keep for every subtitle when timings are modified. Currently, this is applied when the Show/Hide/Pause values are manually changed; when the "Set Show Time" and "Set Hide Time" buttons are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.
but don't allow overlap does not allow overlaps when trying to keep the minimum duration when set.
Automatically round time values to sets a value that Subtitle Workshop should automatically round all time values to. Currently this is applied when the "Set Show Time", "Set Hide Time", and "Move subtitle" buttons/menus are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.

### 3.5 Set maximum line length

Sets a maximum line for the selected subtitles. As a result, the lines of a subtitle may be unbroken (combined) into a smaller number of lines, divided into a bigger number of lines, or their break points may simply be changed. That maximum length is configurable from "Settings/Advanced". While in translator mode, this feature affects both the original and the translated text.
Example (Max. line length set to 45):
"This is the extremely long text in which we are going to use this feature, that will break what you are reading in more lines."
To:
"This is the extremely long text in which we
are going to use this feature, that will
break what you are reading in more lines."
The lines have respectively 43, 40 and 41 characters. As you can see, no line exceeds the maximum line length.
The resulting text doesn't look good on the screen, so this feature should be used along with "Divide lines".
Settings:
The maximum line length taken into account can be set in Set maximum line length.

### 3.6 Read texts from file

The same as the "Read times from file" feature, but instead of reading the times it reads the texts.

### 3.7 Combine subtitles

Combines all the selected subtitles into one. For example:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:02,000 | - Why don't you do that?
00:00:02,001 | 00:00:03,000 | - I don't know!

Becomes:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:03,000 | - Why don't you do that? - I don't know!

The Show Time of the new subtitle will be the Show Time of the first selected subtitle.
The Hide Time of the new subtitle will be the Hide Time of the last selected subtitle.
To combine two or more subtitles, select them and select the "Edit/Subtitles/Combine subtitles" menu ([Ctrl]+[K]).

### 3.8 Auto combine subtitles

With this feature you can automatically combine short subtitles. You can set which subtitles should be considered for combining by setting a maximum duration and a minimum CpS. The most important option is the "Punctuation marks detection" - when this option is turned on, the function will combine only lines of the same person (judging by the punctuation marks), so you won't have to add dialogue dashes afterwards. If you don't care if the lines of different characters will be combined (not recommended), you can turn it off.
You can use the Auto combine subtitles function by clicking on the "Edit/Subtitles/Auto combine subtitles..." menu. A dialogue will appear, that has the following settings:
"Combine if duration is less than" - combine only subtitles that have a duration less than this value.
"Combine if CpS is greater than" - combine only subtitles that have more CpS than this value.
"Don't combine if pause is greater than" - don't combine two subtitles, if the pause between them is greater than this value.
"Punctuation marks detection" - combine only lines of the same person (judging by the punctuation marks: e.g. if the first subtitle ends on a comma or on no punctuation mark, the second subtitle is a line of the same person; if the first subtitle ends on a dot, a question mark or an exclamation mark, the second subtitle MIGHT be a line of a different person, so the two subtitles won't be combined).
"Combined subtitles maximum duration" - when the two subtitles are combined, the resulting subtitle's duration shouldn't exceed that value.
"Decrease duration if necessary with no more than" - if the above value is exceeded, decrease the duration a bit (set how much with this value) and check again.
"Combined subtitles maximum line length" - maximum line length of the combined subtitle.
You can apply this function on all subtitles or only on the selected subtitles.
When you're done setting the options, click the "Apply" button.

### 3.9 Right-to-left

Features only useful for right to left languages, such as Hebrew or Arabic.

#### 3.9.1 Reverse text

Reverses the text of all the selected subtitles. Example:
"Reverse this text!" to "!txet siht esreveR".
When in Translator Mode, this feature will only work for the original text. To make it work for the translation, use the "Edit/Translation/Swap" feature.
You can specify if you want to keep the order of the lines or not, for that, go to Settings/General and check or uncheck the "Keep order of lines when reverse text" option.
To reverse the text, select the desired subtitles and click the "Edit/Subtitles/Right-to-left/Reverse text" menu ([Ctrl]+[H]).

#### 3.9.2 Fix punctuation

Fixes punctuation for right to left languages. Example:
"Fix this punctuation!" to "!Fix this punctuation".
In Translator Mode, this feature will only affect the translation. To make it work in original text, use the "Edit/Translation/Swap" feature or exit Translator Mode.
To fix the punctuation, select the desired subtitles and click the "Edit/Subtitles/Right to left/Fix punctuation" menu ([Shift]+[Ctrl]+[F]).

### 3.10 Sort

Sorts the subtitles according to their Show Time. To sort the subtitles, click the "Edit/Subtitles/Sort" menu ([Ctrl]+[Y]).

### 3.11 Delete unnecessary links / Delete dots at the beginning

"Delete unnecessary links" deletes dots ("..", "..." or more) when they are placed at the end of a subtitle and at the beginning of the next one. Example:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:02,000 | But not exactly because...
00:00:02,001 | 00:00:03,000 | ...what I want is clear.

Becomes:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:02,000 | But not exactly because
00:00:02,001 | 00:00:03,000 | what I want is clear.

Some people like it this way, others don't. To delete "unnecessary links", click the "Edit/Subtitles/Delete unnecessary links" menu ([Shift]+[Ctrl]+[G]).
"Delete dots at the beginning" is similar to "Delete unnecessary links", but it deletes only the dots ("..", "..." or more) at the beginning of a subtitle, and regardless of whether the previous subtitle has dots at the end or not. To delete dots at the beginning, click the "Edit/Subtitles/Delete dots at the beginning" menu. Both functions will make effect over the entire subtitle, not just the selected subtitles.

### 3.12 Search & Replace

Subtitle Workshop's Search & Replace is very fast and offers some extended options when you press the "More >" button. Explanation of the options:
Case sensitive
Performs the search/replace being sensitive to UPPERCASE and lowercase characters.
Match whole words
Will find the text only if it's forming a word.
Preserve case on replace
Clones the case of the original text when replacing. E.g. text to find is "DOG" and text to replace by is "CAT", Subtitle Workshop finds "Dog" and replaces it by "Cat" and not by "CAT".
The text to find or to replace may contain line breaks, and thus we can say it can be multi-line. Character "|" (pipe) represents a new line. If you want to search for "|" then use "||" (two pipes).

### 3.13 Go to Subtitle line

This feature (under the search menu) permits to select directly the subtitle with a given line number.

### 3.14 Go to movie position and recent movie positions

With this (under the search menu) if is possible to go, during subtitle editing, to known positions in the movie. Max 10 recent movie positions will be remembered (last selected on top of the list).

### 3.15 Marked subtitles

This is useful for example if you are translating a file, and want to mark certain subtitles because you are not sure about their translation (or for any other reason). To mark all the selected subtitles, click the "Edit/Subtitles/Mark selected subtitles" menu ([Shift]+[Ctrl]+[M]). To unmark all the selected subtitles, click the "Edit/Subtitles/Unmark selected subtitles" ([Shift]+[Ctrl]+[A]).
You can jump to the next or previous marked subtitle by using the "Edit/Subtitles/Jump to next marked" ([Ctrl]+[F12]) and the "Edit/Subtitles/Jump to previous marked" ([Shift]+[Ctrl]+[F12]) menus.
This feature has other uses, too - it can work together with ViPlay. Explanation:
While you are watching a movie in ViPlay, you can use a custom key (e.g. "M") to mark the subtitle that is currently being displayed (or the last subtitle that has been displayed, if any). When you are watching the movie in ViPlay and you see a wrong subtitle (spelling mistake, too long duration, over two lines, or any other mistake) and you press "M", it will be marked (internally). When the movie ends, ViPlay will ask you if you want to save a Subtitle Report File (*.srf). This file can later be loaded in Subtitle Workshop and it will automatically mark the subtitles you marked in ViPlay, so you can easily identify them and correct them after watching the movie.
You can also save a Subtitle Report File (*.srf) of the markings you made in Subtitle Workshop. To do this, click on the "File/Save marking" menu. The SRF file is created in the same folder the current subtitle file is in. The file is given the following name: <subtitle file name> + <subtitle file extension> + .srf (e.g. for C:\SubRip.sub, C:\SubRip.sub.srf is created). If a translation file is opened, a SRF file is saved for it too.
Yet another use of marked subtitles is to help with synchronizing TV shows subtitles. TV shows are usually split in a few segments - between the segments are the commercials breaks. Different recordings/releases of a TV show often handle the commercial breaks differently - they might be cut out in a different way, special transitions between the different segments might be added, or the commercials might even be included in the recording. However, often they are the only difference between the different recordings/releases. You can mark the first subtitle of each segment of the TV show to save the key points for synchronizing the subtitles for different recordings/releases of the TV show.
You can access various settings for subtitle marking in "Settings/Look/Marking".

## Chapter 4: Settings explained

Here we will try to explain the meaning of all the options available in Settings.

### 4.1 General

Always on top
Maintains Subtitle Workshop's Main Window above all the other windows.
Allow more than one instance running
Allows more than one instance of the program running. If this option is unchecked and you open more files via explorer, they will all be opened in the same window. If that option is checked, they will be opened in separate windows.
Confirm when deleting subtitles
If this option is checked, each time you try to delete subtitles in the main list, Subtitle Workshop will show a confirmation message and ask you if you are really sure you want to make the deletion.
Interpret invalid files as plain text
Check this option and you will never get the "The file is an invalid subtitle or an unsupported format" error message, but instead, the file with actually be loaded (without timings) like if it was plain text. After this, you will need to set the timings manually.
Auto-search for movie
Each time you open a subtitle file, Subtitle Workshop will search for the corresponding movie file, and load it. This feature includes suffix detection (each suffix has to be separated by ".").
Example: if the file name of the subtitle is "Spiderman.English.srt" and there is a movie in that directory called "Spiderman.avi", it will be loaded.
Force working in time mode
If this option is unchecked, each time you open a subtitle in a frame based format, Subtitle Workshop will automatically switch to frames mode. If not, it will work in time mode, but you will be able to switch to frames mode manually.
Keep order of lines when reverse text
Useful for Right-to-Left languages like Arabic or Hebrew. Specifies if when you use the "Edit/Subtitles/Right to left/Reverse text" feature ([Ctrl]+[H]), you want to keep the order of the lines or reverse the text as a whole.
Select text on jump to next line
Specifies if you want to select the text in the "Text" or "Translation" text box, when jumping to the next line pressing [Shift]+[Enter].
Select text on jump to previous line
Specifies if you want to select the text in the "Text" or "Translation" text box, when jumping to the previous line pressing [Ctrl]+[Enter].
Tags Mode

- No interaction with tags
  Check this option if you want Subtitle Workshop to simply ignore tags when reading files in any subtitle format. And ignoring means treat them as regular text and do not delete them. Useful if you would like to manually write all tags in their native form (as per the format specifications) for formats for which SubtitleAPI does not currently support tags.
- Multiple Tags Mode
  This is Subtitle Workshop's full tags support mode (the default mode). In this mode, Subtitle Workshop can support as many tags as you want per a single subtitle, i.e. you can apply tags only to a single line, to a single word, or even to a single symbol (using both open and close tags).
- Single Tags Mode
  This is Subtitle Workshop's old tags mode. It only supports tags for the whole subtitle. Thus, you only need to open the tags because closing them would be useless.
- Auto delete tags
  Check this option if you want tags not be loaded or saved (if you want tags to be deleted).

Recent files limit
Limit the amount of recent files. If you don't want recent files, set the limit to 0. The maximum of recent files is 20.

#### 4.1.1 Advanced

Two lines if longer than
This is the maximum line length that the function "Fast smart line adjust" would allow. Lines longer than this value will be broken in two lines by "Fast smart line adjust".
Toggle break point
If enabled, when applied over and over again on the same subtitle, "Fast smart line adjust" would toggle between two or three different break points (break on punctuation mark, breaks in the middle, unbroken line), if possible.
Break line after
This is the maximum line length that the function "Divide lines" would allow.
Smart line adjust automatically
Automatically use "Smart line adjust" on both parts in the "Divide lines" window.
Maximum line length
The maximum line length that will be set by the Set maximum line length feature.
Shift time
The time to shift subtitles forward/backward with the Shift subtitles feature.
Default subtitle duration
The subtitle duration of a newly inserted subtitle.
Default subtitle pause
The pause between a newly inserted subtitle and its previous (when using "Edit/Insert subtitle") or next (when using "Edit/Insert before") subtitle.
Increase step (time)
Specifies the step (in Time Mode) the values of the time controls (Show, Hide, Pause, and Duration) are increased/decreased with, when using the controls up/down arrows or the mouse wheel.
Increase step (frames)
Specifies the step (in Frames Mode) the values of the time controls (Show, Hide, Pause, and Duration) are increased with, when using the controls up/down arrows or the mouse wheel.
Keep min duration of
Set a minimum duration that Subtitle Workshop should try to keep for every subtitle when timings are modified. Currently, this is applied when the Show/Hide/Pause values are manually changed; when the "Set Show Time" and "Set Hide Time" buttons are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.
but don't allow overlaps
Don't allow overlaps when trying to keep the minimum duration.
Automatically round time values to
Set a value that Subtitle Workshop should automatically round all time values to. Currently this is applied when the "Set Show Time", "Set Hide Time", and "Move subtitle" buttons/menus are used; when "Edit/Texts/Divide lines..." or "Edit/Texts/Fast divide lines" is used.
Round time values on subtitle load
If this option is enabled, Subtitle Workshop will round all time values when a subtitle file is opened.

#### 4.1.2 Charsets

Show in main form
Show the "Original charset" and "Translation charset" in the Left Panel of the Main Form, so that they could be quickly modified.
Original charset
Charset to display characters in the "Text" column and filed.
Translation charset
Charset to display characters in the "Translation" column and field (in Translator mode).
Notes charset
Charset to display characters in the "Notes" field in the Left Panel.
See the charsets.txt in the "Langs" directory for a reference, or see the Frequently Asked Questions (FAQ) for an overview.

### 4.2 Formats

Default format
Specifies the default format to use in all the windows where there are formats lists (e.g. "Join subtitles", "Split", etc).
Formats to show in the "Save as" window
Only the checked formats listed here will be shown in the "Save as" dialogue. Useful if you only work with a few formats and you don't want to waste time looking for the desired format in a list that contains more than 60 items.
Show custom formats
Specifies if you want to show the custom formats from the "CustomFormats" folder in the "Save as" window.

### 4.3 File types

Add "Open with Subtitle Workshop" to shell context menu
Adds "Open with Subtitle Workshop" to the context menu that pops up when you right-click a file in Windows. Currently this works only for 32-bit Windows.
Register extensions on start
Associate the desired subtitle extensions when Subtitle Workshop is executed.
Associate subtitle extensions with Subtitle Workshop
If enabled, the selected subtitle extensions in the list below will be associated with Subtitle Workshop. If disabled, no subtitle extension will be associated with Subtitle Workshop. Every file with an extension that is associated with Subtitle Workshop will be automatically opened with Subtitle Workshop when double-clicked, and the file's icon will be Subtitle Workshop's main icon.

### 4.4 Save

Ask to save on exit program/close subtitle
If the changes in the current subtitle file are not saved, Subtitle Workshop will display the "File has changed. Do you want to save the changes?" message when you try to exit the program, close the subtitle file, or open a new file.
Save work automatically every X minutes
How often should Subtitle Workshop silently save the modified subtitle file automatically.
Save as backup
Saves the original/translated file as a backup (FileName.ext.bak) instead of overwriting the original/translated file.
Ask to save new subtitles
Turn on or off the prompt to save new files that are still not saved.
Save empty subtitles
If this option is enabled, when saving subtitle files, instead of deleting all empty subtitles, Subtitle Workshop will save them with the text "- empty subtitle -". When the file is later opened in Subtitle Workshop again, the text in those lines will be automatically deleted and they will become empty again.
Output settings
Opens the "Output settings" window.

### 4.5 Video preview

All the options listed here will work only if you are in Video Preview Mode.
Double click and shift-double click in a subtitle
Select what Subtitle Workshop should do when you double click a subtitle in the Subtitles List, and when you double click a subtitle in the Subtitles List while holding the [Shift] key. The available options are three:

1. Focus text box - pass the focus to the "Text" box, or, if you are in Translator Mode, to the "Translation" box.
2. Go to subtitles time in video - jump directly to the Show Time of the subtitle in the video.
3. Go N seconds before subtitle in video - jump the "Seconds to jump" value before the Show Time of the subtitle in the video.

Rewind and forward times
The time to rewind/forward when pressing the "Rewind" and "Forward" buttons in the Video Controls Area.
Default altered playback rate
The percentage of playback rate to apply when pressing the "Alter playback rate" button in the video controls bar.
Vertical video align
Align the video vertically in the middle of the Video Preview Panel.
Enter Full Screen on double click
Enable/disable Full Screen toggle with a left mouse button double click. Disabling it might be useful when playing/pausing the video with a left mouse click is used a lot, to avoid unnecessary Full Screen toggle.
Play video on load
Specify whether to play the video file automatically when it's loaded or not.
Setting Show and Hide times

- Shift Show value
  The amount of additional time shift (in relation to the current moment of the video), when the Show Time of a subtitle is set with the "Set Show Time" button. Negative values can be used. A value of zero means the Show Time will be equal to the current moment of the video.
- Shift Hide value
  The amount of additional time shift (in relation to the current moment of the video), when the Hide Time of a subtitle is set with the "Set Hide Time" button. Negative values can be used. A value of zero means the Hide Time will be equal to the current moment of the video.

#### 4.5.1 Subtitles

Font, color, background, outline, and shadow modifications can be seen in the "Sample" subtitle.
Draw outline
Enable/disable an outline to be drawn for the subtitles in the Video Preview Panel. Set the outline width in the "Outline width" box. Set the outline color in the box on the right of the "Outline width" box.
Draw shadow
Enable/disable a shadow to be drawn for the subtitles in the Video Preview Panel. Set the shadow width in the "Shadow width" box. Set the shadow color in the box on the right of the "Shadow width" box.
Try transparent background
Display the subtitles in the Video Preview Panel transparently over the video. This option will work most of the times, but if it doesn't work, you can check the following option:
Force using regions (may be slow)
If checked, the subtitles will be transparent, and should never fail. Use it only if you don't get transparent subtitles only with the previous option enabled and you really want them. When this option is enabled, you can set the transparent color in the box on the right. The default transparent color is an almost-black gray ($010101). This color should never be the same as the subtitle text color, the background color, the outline color, or the shadow color!
Align left when subtitles contain a new line starting with "-"
Display subtitles containing dialogue with left alignment (but still in the center of the screen, of course).
Relative font size
Make the font size relative to the Video Preview Panel size.
Keep subtitle on video
Align the subtitles to the bottom of the video, instead of to the bottom of the Video Preview Panel.
Try anti-aliasing
Add anti-aliasing for TrueType fonts when it is not enabled in Windows. "Force using regions" must be off.
Font...
Set the font (and its size) the subtitles will be displayed with.
Color...
Set the text color the subtitles will be displayed with.
Background...
Set the background color the subtitles will be displayed with (has no effect when transparent background is used).

### 4.6 External preview

This feature makes possible to preview subtitles in your favourite movie player.

#### 4.6.1 General

Exe of the video player
The executable file of the video player you want to use for external preview. Remember that the video player must support command line and external subtitles.
Detect associated program
Press this button if the movie player you want to use is associated with .AVI files, and you don't know where to find the executable file.
Ask for a different video each time
Subtitle Workshop will ask you to open a video file each time you do the external preview.
Always test with same video
Subtitle Workshop will always use the same video for external preview, so it won't ask you anything and will open the movie player directly.

#### 4.6.2 Advanced

Save temporary file in original format
Select this if you are sure that the video player supports the subtitle format you are handling.
Save temporary file in custom format
If the video player doesn't support the subtitle format you are handling, but supports a minimum of one of the formats that Subtitle Workshop supports, then check this check box and select a format in the list.
Parameter to send the video player
This is very important. Here you have to specify how to tell the video player which subtitle and which video file to open. VIDEO_FILE represents the video file and SUBT_FILE the subtitle file. Look at the help file of the video player to see the specification on the command line parameters.
For details, refer to External preview.

### 4.7 Look

#### 4.7.1 Program

Font to use in the program & font size
If you change this, the font of Subtitle Workshop's interface and/or it's size will be changed. Use these if the font of Subtitle Workshop is too small for you, or if you don't like the default font.
"Text" and "Translation" fields align
Set the text alignment you want for these two fields.
Highlight tags in "Text" and "Translation" fields
When enabled, all tags in the "Text" and "Translation" fields appear in the color of the box on the right. Click that box to change the color.
Smart main window and subtitle list resize
When this option is enabled:
1) When the columns of the Subtitles List are resized, the width of the Main Window of Subtitle Workshop is automatically adjusted so that there are no horizontal scrollbars in the Subtitles List.
2) When Translator Mode is entered or exited, and when the Left Panel is shown or hidden, the width of the Main Window of Subtitle Workshop is automatically adjusted.
Resize Subtitles List columns when resizing form
When the Main Window of Subtitle Workshop is resized, the Text and Translation columns of the Subtitles List are resized, so that there are no horizontal scrollbars in the Subtitles List.
Use Office XP style menu
Use a different style for the Main Menu and the Context menus in the Main Form. If you turn this off, the default Windows style will be used.
Use gradient menu
Draws a gradient in the left of the menus.

#### 4.7.2 List

Show grid lines
Shows lines between the rows and columns of the Subtitles List in the Main Window.
Apply style to subtitles
Only will take effect if a subtitle contains tags (bold, italic, underline or color). If this option is checked, Subtitle Workshop will draw the subtitle in the list with the appropriate style/color.
Mark untranslated subtitles with color
Draws the text of the untranslated subtitles with a particular configurable color, so they can be easily identified.
Mark untranslated subtitles with background
Draws the background of the untranslated subtitles with a particular configurable color, so they can be easily identified.
Show horizontal scroll bar
Uncheck this option and you will never get the horizontal scrollbar in the main list.
Right click selection
Enable row selection with a right mouse button click.
Row height
Adjust the height of the rows in the Subtitles List (in pixels).
Text margin
Adjust the margin inside the cells of the Subtitles List (in pixels).
Selection

- Text
  Text color of selected row(s).
- Color
  Background color of selected row(s).
- Transparency
  Selection transparency (100% means fully transparent, 0% means fully opaque).

Columns

- Align
  Text alignment of the Num, Pause, Show, Hide, Duration, Text, and Translation columns.
- Display style
  All the dropdowns have two options: "Compact" and "Full". Selecting "Full" means the value will be fully rendered (e.g. "00:00:03,500"). Selecting "Compact" means leading zeroes will be omitted (e.g. "00:00:03,500" will be rendered as "3,500").

#### 4.7.3 Marking

Marking with color
Set the text color for marked subtitles.
Marking with background
Set the background color for marked subtitles.
Columns to mark
Select which columns should be marked: Num, Pause, Show, Hide, Duration, Text.
Marking priority
Set the marking priority compared to Error Marking:
"Low (before error marking)" - Subtitle Workshop will mark marked subtitles first, then the errors.
"High (after error marking)" - Subtitle Workshop will mark errors first, then the marked subtitles.
Marked subtitle color in video preview
Set the text color marked subtitles will be displayed with in the Video Preview Panel subtitles.
Marking file
.srf files settings:

- "Save marking file only manually" - .srf file can be saved only manually from "File/Save Marking".
- "Ask each time to save marking file" - Prompt to save marking in a .srf file before closing the subtitles.
- "Automatically save marking file on subtitle save" - save the marking in a .srf when the subtitles are saved.

"Automatically load marking file" - if there's a .srf file with the same name as the subtitle file opened, in the same folder, it will be automatically loaded. Subtitle Workshop will look for a file with the following name: <subtitle file name> + <subtitle file extension> + .srf. If not found, then it will also look for <subtitle file name> + .srf.

## Chapter 5: Tools

Must-have features in every subtitle tool.

### 5.1 Spell check

There are two version of spell checking: The Word one and the Hunspell one. To spell check a subtitle, just load it and press the "Tools/Spell check" menu. There one can choose between the Word and the Hunspell Checker.

- The "Word" spellchecker: This spell check uses Microsoft Word's spell check engine, connecting to it through OLE technology. Thus, at least Microsoft Word 97 is required.
  All the errors and suggestions will be shown using Word's default windows. The spell check should support any installed dictionary.
  Note: this feature may give errors (TOleExeption) some times, this is not because of Subtitle Workshop, but because of Word. Still it works pretty well most of the time.
- The "Hunbspell" spellchecker: This one uses the "Hunspell" spell check engine.This one can always be used, no installation needed.
  Extra dictionaries an be downloaded here.

### 5.2 Batch convert

This feature lets you convert a large number of subtitle files in any format to a single format, and then save them in a designated folder with just a few clicks.
Click the "Tools/Batch convert..." menu ([Ctrl]+[M]). After this, you should follow these steps:

1. Select what file extensions to search for - all the possible extensions are shown on the left.
2. Select the search path (the folder in which the subtitle files you want to convert are).
3. If you want to include subfolders in the search, check the "Include subfolders" check box.
4. If you want Subtitle Workshop to make an exhaustive format check, check the "Exhaustive format check" check box. If this option is off, Subtitle Workshop will skim the file to see if it is a valid file and in what format it is. Skimming usually works very well, and it gives an excellent speed. If you want to perform throughout tests through the file, with an effectiveness of 100%, then use exhaustive check. Exhaustive check is remarkably slower than standard check.
5. Select the output directory (the path in which the converted files will be saved)
6. Select the output format.
7. Select the Default FPS for the frame based files (if there are such).
8. Press the "Next" button.

After pressing the button, Subtitle Workshop will search for valid subtitle files in the search path you chose.
When the search is finished, you will see a list of all found files, format, FPS (for frame based subtitles - this value should be by default, the same as "Default FPS" you set) and size (in Kb).
You can add new files to the list, or remove files from it. You can also change the FPS of frame based files by selecting them and changing the value of the box that is on the right of the "Clear" button.
Finally, press the Convert button and the conversion will start. When it is finished, Subtitle Workshop will generate a log (*.log) file, reporting all possible errors and all the successes.

### 5.3 Split subtitles

There are two possible splits:

1. Simple - splits a subtitle file in two parts
2. Advanced - splits a subtitle file in an indefinite number of parts

Use the one that best fits your needs.
Simple split
You first have to choose where to split the file - you have 5 options:

1. Selected item
   The subtitle file will be split right after the item that is selected in the Subtitles List of the Main Window.
2. Item number
   The subtitle file will be split in the subtitle number you select.
3. Given time
   The subtitle file will be split in the first subtitle that has a Show Time greater than the time you select.
4. Given frame
   The subtitle file will be split in the first subtitle that has a Show Frame greater than the frame you select.
5. End of video
   The subtitle file will be split in the first subtitle that has a Show Time greater than the time in which a video ends (the video's duration).

After selecting where to split, select the file names (without the extension, it will be added automatically), the output format, and press the Split button.
Advanced split
Switch to the "Advanced" page, and then select the number of parts you want to make. You have to select if you want to make the parts equal in time (length), in lines or if you want to split at the end of multiple videos.
If you want to split at the end of multiple videos, you need to select a video for each part. To do so, double click in each part in the list, starting with the first one. You can't select a video for the last part, since it will be calculated automatically.
Leave the "Auto-name the parts" check box checked, if you want Subtitle Workshop to set the file names of the parts automatically. If you want to do it manually, uncheck the check box, select the desired part, and press [F2] to type the name.
Check "Recalculate time values", if you want Subtitle Workshop to automatically set a delay to the second subtitle, so you don't have to do it manually after splitting. Finally, select the output path and the output format, and press the Split button.

### 5.4 Join subtitles

With Subtitle Workshop you can join two or more subtitle files into one. Those subtitle files may be in different formats, time or frame based, and if frame based - they even may have different FPS!
Click the "Tools/Join subtitles..." menu ([Ctrl]+[J]).
Now press the Add button and add all the files you want, in the correct order. If you made a mistake in the order, you can drag the files with the mouse and put them where you want. If the file is a frame based subtitle, you can modify its FPS by selecting it and modifying the value of the combo box that is at the right of the "Clear" button. You can do that operation to all selected frame based subtitles at once.
Optionally, you can set a movie fragment for each part (except, of course, for the last), so that Subtitle Workshop could make all changes in the timings of the subtitles automatically. This way you won't need to make any changes to the resulting file. To select a movie fragment for each part, select it and click the Set movie fragment button. If you made a mistake, select that part and press the Delete movie fragment button. Now you need to select the output format, and if it is a frame based one, the output FPS. If you want to load the resulting file in Subtitle Workshop afterwards, check the "Load file after joining and saving" check box. Check the "Recalculate time values", if you want Subtitle Workshop to automatically set the delay to all the subtitles from the second one onwards, so that you wouldn't have to do it later manually. This option will not work, if the parts are associated to movie fragments. Finally, press the Join button.

### 5.5 Information and errors

This is one of the features that make Subtitle Workshop unique - despite of other program's attempt to imitate it, Subtitle Workshop's Information and Errors still has the best performance, flexibility and options.

#### 5.5.1 Overview

The main entry to "Information and Errors" is in the menu "Tools -> Information and Errors" menu, see picture below.
This is the part that a.o. handles

- Checking of the subtitles for errors, either
  - Automatically
  - Interactive
- Marking of erroneous subtitles in the subtitle list on the main form (only automatically)
- Fixing errors, either
  - Automatically
  - Interactive

The error types to be marked should be set in the "Information and Errors Settings" Window. See there for more details.
Automatic checking and fixing errors:
The error types to be checked and fixed Automatically should be set in the "Information and Errors Settings" Window. See here for more details.
Is initiated by either:

- An action of the user in this Info and Errors menu:
  - click "Recheck Errors": Will re-check the entire sibtitle file for errors set to be checked in Information and Errors Settings
    Additionally all detected errors set to be marked in the subtitle list (in Information and Errors Settings) will be marked according to above check outcome.
  - click "Fix all errors": All errors set to be fixed in Information and Errors Settings will be fixed (if possible).
    Additionally the fixed error marks are removed from the subtitle list.
  - click "Fix Errors (selected subtitle)": Same as above, but only for the selected subtitles.
- Real automatic checkings and fixes (no user intervention).
  Which they are and when they are happening are to be defined in Information and Errors Settings.

Interactive checking and fixing errors:
The interactive checking/fixing is done in the Information & errors window window.
Its has its own list of error types to detect and fix, independant of those set in the "Information and Errors Settings" window selections.
Is initiated by:
Clicking "Information and errors" in the menu and a new window will open which enables fixing of errors. See section Information and Errors Window.
Additionally the following items are also present in Information and Errors menu:

- "Various Information...", see here.
- "OCR Scripts", see here.
- "Show CPS boxes", switches on/off the percentage and CPS boxes in the subtitles list, see here for more details.
- "Jump to next error", selects the next subtitle with an error in the Subtitles list.
- "Jump to previous error", selects the previous subtitle with an error in the Subtitles list.

#### 5.5.2 Errors & fixes explained

Information and Errors can check for and fix a large variety of common errors in subtitles.
Here we will try to review all the possible errors and the way(s) they are automatically fixed.
Before we do, let's see what types of errors are going to be checked for and fixed.
Some items in the list below are only a warning, no error.
The priorities are:

1. Prohibited characters
2. Text before colon (":") (warning)
3. Hearing impaired
4. OCR Errors
5. Lines without letters
6. Empty subtitles
7. Unnecessary tags
8. Repeated subtitles
9. Overlapping subtitles
10. Bad values
11. Unnecessary dots
12. Repeated character
13. "- " in subtitles with one line
14. "- " on first line
15. Unnecessary spaces
16. Space after custom characters
17. Space before custom characters
18. Subtitle over two lines (warning)
19. Dialogue on one line
20. Too long duration (warning)
21. Too short Duration (warning)
22. Too long line (warning)
23. Too short Pause (warning)
24. Too much characters per second (CpS) (warning, only check, no fix)

Errors 1 to 7 are first, because when fixing those types of errors, the subtitle can get deleted under certain circumstances, so other fixes before that would be pointless.

1. Prohibited characters
   Finds subtitles that contain prohibited characters and deletes those entire subtitles.
2. Text before colon (":") (warning)
   The text before colon is usually for hearing impaired people. Most of the times it represents the name of the person who is currently speaking.
   Example:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:02,000 | MAN:|She feel the same about you?
   00:00:03,000 | 00:00:04,000 | JERRY:|I don't know.

   In 80% of the cases, the text before colon will be all in CAPITAL LETTERS, so you can enable the "Only if text is in capital letters" option, and thus avoid unwanted deletions of regular text in subtitles like: "I'm going to tell you something:|Don't ever do that again". After fixing, the subtitle will look like this:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:02,000 | She feel the same about you?
   00:00:03,000 | 00:00:04,000 | I don't know.

   The detection for the colon will not detect it if it is between two numbers, e.g. "12:30", and thus it will avoid problems with times.
3. Hearing impaired subtitles
   Hearing impaired subtitles are whole subtitles, or just a part of a subtitle, that are exclusively for people with impaired hearing.
   People with unimpaired hearing don't need "noises" or "sounds" subtitles.
   Hearing impaired subtitles are usually enclosed in parenthesis ("(" and ")" and/or "[" and "]").
   Example:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:02,000 | - [Boy] | You want me to kill him for you?
   00:00:03,000 | 00:00:04,000 | Yeah. Would you?
   00:00:05,000 | 00:00:06,000 | [Shutter Whirring, | Clicking Off]

   First subtitle contains a part for hearing impaired, and third subtitle is all for hearing impaired. After fixing, the subtitle will look like this:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:02,000 | You want me to kill him for you?
   00:00:03,000 | 00:00:04,000 | Yeah. Would you?

4. OCR Errors
   As different languages have different OCR errors, OCR scripts can be used to detect them. For more information on the scripts, refer to OCR Scripts.
5. Lines without letters
   Deletes subtitle lines that don't contain letters (a-z, á-í, etc). Example:

   Show Time | Hide Time | Text
   00:00:00,250 | 00:00:01,350 | This is the text 1 !!!!!!!
   00:00:00,780 | 00:00:02,150 | ¿?!¡ This is the text 2

   Subtitle Workshop will delete the second line in the first subtitle and the first line in the second subtitle, because they do not contain any letters (don't misunderstand, "letters" is not the same as "characters").
6. Empty subtitles
   An empty subtitle can be:
   1. A subtitle that contains no text at all (blank text).
   2. A subtitle that doesn't contain any letter or number, e.g. the text "- !!!!"
   In both cases, Subtitle Workshop will delete the subtitle.
7. Unnecessary tags
   The following tags are considered unnecessary (the pipe (|) character represents a new line) and are removed:
   `
   - <i></i>
   - <i><i>
   - </i><i>
   - </i></i>
   - </i> <i>
   - <i> </i>
   - <i>|</i>
   - </i>|<i>
   - <b></b>
   - <b><b>
   - </b><b>
   - </b></b>
   - </b> <b>
   - <b> </b>
   - <b>|</b>
   - </b>|<b>
   - <u></u>
   - <u><u>
   - </u><u>
   - </u></u>
   - </u> <u>
   - <u> </u>
   - <u>|</u>
   - </u>|<u>
   `
8. Repeated subtitles
   This is very common in OCRs. Example:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:01,010 | Come on, let's book.
   00:00:01,010 | 00:00:02,000 | Come on, let's book.

   Repeated subtitles are characterized by two things:
   1. The text is exactly the same.
   2. Usually, one subtitle has a very short duration, most of the times it is the first one (like in the example) but can be the other way round.
   In the example above, the Show Time of the second subtitle is exactly the Hide Time of the first, this is very common, but it's not like this always.
   That's why the "Tolerance for repeated subtitles" value is configurable - that is the maximum allowed difference between the Hide Time of the first subtitle and the Show Time of the second subtitle, for a subtitle to be detected as a repeated subtitle. After fixing, the subtitle will look like this:

   Show Time | Hide Time | Text
   00:00:01,000 | 00:00:02,000 | Come on, let's book.

   The Show Time will be the Show Time of the first subtitle, and the Hide Time will be the Hide Time of the last subtitle.
9. Overlapping subtitles
   This error is marked when a subtitle is shown on the screen before the previous subtitle is hidden. That is, when the Hide Time of a subtitle is greater than the Show Time of the next one. Example:

   Show Time | Hide Time | Text
   00:00:00,250 | 00:00:01,450 | This is text 1
   00:00:01,150 | 00:00:02,150 | This is text 2

   The second subtitle is shown before the first one is hidden. Subtitle Workshop will fix this in a way that depends on the lengths of the texts of the subtitles. There are three possible solutions:
   1. If the difference between the lengths of the texts of the subtitles is less than 5, the duration of each subtitle will be set equal.
      This is the case for the example above, the solution for the overlapping is this one, since the lengths of the texts are equal.
      Subtitle Workshop will fix the subtitles like this (if the Default Pause is 1 millisecond):

      Show Time | Hide Time | Text
      00:00:00,250 | 00:00:01,200 | This is the text 1
      00:00:01,201 | 00:00:02,150 | This is the text 2

   2. If the text of the first subtitle is 5 or more characters longer than the text of the second one, the second subtitle's time will be cut. Subtitle Workshop will fix the example like this (if the Default Pause is 1 millisecond):

      Show Time | Hide Time | Text
      00:00:00,250 | 00:00:01,450 | This is the text 1. More than four extra characters.
      00:00:01,451 | 00:00:02,150 | This is the text 2

   3. If the text of the second subtitle is 5 or more characters longer than the text of the first one, the first subtitle's time will be cut. Subtitle Workshop will fix the example like this (if the Default Pause is 1 millisecond):

      Show Time | Hide Time | Text
      00:00:00,250 | 00:00:01,450 | This is the text 1
      00:00:01,451 | 00:00:02,150 | This is the text 2. More than four extra characters.

10. Bad values
    Bad values is when the Show Time of a subtitle is greater than its Hide Time.
    Example:

    Show Time | Hide Time | Text
    00:00:02,000 | 00:00:01,000 | This is the text

    Subtitle Workshop can fix that by inverting the time values, so the subtitle would be:

    Show Time | Hide Time | Text
    00:00:01,000 | 00:00:02,000 | This is the text

11. Unnecessary dots
    This option replaces four or more consecutive dots ("....") to only three, followed by a space when necessary.
    Example:

    Show Time | Hide Time | Text
    00:00:01,000 | 00:00:02,000 | Yeah.... Should taste it.....

    Would result in:

    Show Time | Hide Time | Text
    00:00:01,000 | 00:00:02,000 | Yeah... Should taste it...

12. Repeated character
    Finds the characters you wish, when they are successively repeated two or more times. For example, if you have "!" as a repeatable character, it would find:

    Show Time | Hide Time | Text
    00:00:01,000 | 00:00:02,000 | Do it, now!!!!!!!!!!!!!!!!!!!!!!

    and fix it to:

    00:00:01,000 | 00:00:02,000 | Do it, now!

    It works the same way for every repeatable character. The default characters are "-¡!¿?";\/_[]=", but you can add/remove characters in "Tools/Information and Errors/Settings/Advanced".
13. "-" in subtitles with one line
    There is no sense in having subtitles with one line starting with "-" (open dialogue), since only one person speaks in them. Thus, if you enable this option, Subtitle Workshop will delete the "-", if the subtitle contains only one line.
14. "-" on first line
    Check for a dash on the first line of subtitles with more than one line (e.g. the Bulgarian standard for dialogue in subtitles is to have a dash only on the second line). Those errors can also be automatically corrected. There is an "Only if there is no "-" on second line" suboption to look only for multiline subtitles starting with a dash, but without other dashes (i.e. without dialogue) - e.g. suitable for English subtitles, where dashes are used on both lines of a dialogue, and errors shouldn't be marked for subtitles that have a dash at the start of the first line AND a dash at the start of the second line.
15. Unnecessary spaces
    Remove the unnecessary spaces from the text of the subtitles. Currently, the following types of unnecessary spaces can be removed:
    1. Enters and spaces at the beginning and end
    2. Spaces between enters (left and right)
    3. Double spaces and enters (double enter = blank line)
    4. Spaces in front of punctuation marks
    5. Spaces after "¿" and "¡"
    6. Spaces before "?" and "!"
    7. Spaces between numbers
    As different languages may require different spacings, you can select which of those types of unnecessary spaces to be checked for and removed in "Tools/Information and Errors/Settings/Unnecessary spaces".
16. Space after custom characters
    Adds a space (if there isn't one) after any of the characters in "Space after characters" in "Tools/Information and Errors/Settings/Advanced". Useful for example to add a space after a dialogue dash:
    -This is it.
    -Really?
    To:
    - This is it.
    - Really?
    This feature has a bit of composed words detection, so it doesn't add a space after the character in words like "multi-line".
17. Space before custom characters
    Adds a space (if there isn't one) before any of the characters in "Space before characters" in "Tools/Information and Errors/Settings/Advanced". Useful for example for French language, to add spaces before "?", "!" and ":".
18. Subtitle over two lines (warning)
    Checks if a subtitle has three or more lines, and uses Smart line adjust to fix it.
19. Dialogue on one line
    Check for dialogue on one line (in fact for a dash after a dot, a question mark or exclamation mark), something that isn't allowed in some standards. Those errors can be automatically corrected.
20. Too long duration (warning)
    Subtitle Workshop can identify if the duration of a subtitle is longer that a specified maximum value, and report it to you. Subtitles with too long duration can be annoying. Use Duration limits or Automatic durations to fix this type of error (or fix it manually).
21. Too short duration (warning)
    Subtitle Workshop can identify if the duration of a subtitle is shorter that a specified maximum value, and report it to you. Subtitles with too short duration can be unreadable. Use Duration limits or Automatic durations to fix this type of error (or fix it manually).
22. Too long line (warning)
    Detects if a subtitle contains lines that are longer than a specified number of characters. Too long lines can exceed the width of the screen in some video players and this is potentially dangerous. Use Smart Line Adjust or Divide lines to fix this type of error (or fix it manually).
23. Too short pause (warning)
    Subtitle Workshop can identify if the pause between two subtitles is shorter than a specified minimum value, and report it to you. Use Set pauses to fix this type of error (or fix it manually).
24. Too many characters per second (CpS) (warning)
    Subtitle Workshop can identify if the number of characters per second (CpS) in a subtitle is greater than a specified maximum, and report it to you. Use Duration limits or Automatic durations to fix this type of error (or fix it manually).

#### 5.5.3 Information & errors window (interactive error fixing)

This window is meant to be used for the interactive manner of checking and fixing errors.
Information & errors list
See (1) in the figure above.
The Information and errors list displays a list of all subtitles with errors and warnings for the current subtitle file.
The list will also display all subtitles with fixed errors after the "Fix errors" button is pressed.
It will also display all subtitles matching Custom Infos, if custom infos are added.
"Check" button
See (2) in the figure above.
Refreshes the list - checks for errors, warnings, and custom info in all subtitles in the current subtitle file.
"E" (Errors), "W" (Warnings), "F" (Fixed), and "CI" (Custom info) buttons
See (3) in the figure above.
They show or hide the corresponding type of information in the Info & Errors List.
"<" and ">" buttons
See (4) in the figure above.
They jump to the previous / next row in the Info & Errors List.
"Fix errors" button
See (5) in the figure above.
Fixes errors where possible, in all subtitles in the current subtitle file.
"Select" button
See (6) in the figure above.
Selects all subtitles in the Subtitles List in the Main Window, that are currently displayed in the Info & Errors List.
"+ Select" button
See (7) in the figure above.
Adds to the current selection in the Subtitles List of the Main Window all subtitles that are currently in the Info & Errors List.
"- Select" button
See (8) in the figure above.
Removes from the current selection in the Main Window all subtitles that are currently in the Info & Errors List.
"Export to file" button
See (9) in the figure above.
Exports the Info & Errors List content to a text file.
Error Types Area
See (10) in the figure above.
This area can be shown/hidden with the new "Error types" button (See (12) in the figure above).
This area contains a list of all error types and how many of each error type the current subtitle file contains.
The checkbox in front of each error type will show/hide all instances of this error type in the Info & Errors List.
The "All" button checks them all, the "None" button unchecks them all, and the "Inverse" button makes an inverse selection (See (14) in the figure above).
Only error types that are checked in "Information and Error Settings, Check for" (see here) can be selected.
The current state of the checkboxes can be saved in an Error Types Set under an assigned name. (See (15) in the figure above)
This makes it easy to switch between different sets of states.
The desired name of the Error Types Set must be entered in the dropdown box and then the [ENTER] key or the "Save error types set" button must be pressed to save an Error Types Set.(See (16) in the figure above)
An Error Types Set can be loaded by selecting it from the dropdown box. (See (16) in the figure above)
An Error Types Set can be deleted by loading it and then clicking on the "Delete error types set" button (See (15) in the figure above).
Custom Info Area
See (11) in the figure above.
This area can be shown/hidden with the "Custom info" button (see (13) in the figure above).
Here, different specific rules can be set to look for certain subtitles. The subtitles that fit those rules will be displayed in the Info & Errors List as "Custom info" types of rows, and with a description containing the rule or the rule's caption(see (11) in the figure above).
There are no Custom Info Fields in the Custom Infos List at first.
Add a new Custom Info Field with the "+" button or with its dropdown menu (there are several Custom Info rule types) (see (17) in the figure above), a new window will appear: the Composite Custom Info Window where all details of the new custom info can be set..
There's a checkbox in front of each Custom Info Field to enable or disable that rule (show/hide subtitles in the Info & Errors List that fit that rule) (see (18) in the figure above).
The "Delete" button of a Custom Info Field deletes that field (see (19) in the figure above).
The number of the subtitles that fit the rule of a Custom Info Field will be displayed on the left of the "Delete" button of the field (see (20) in the figure above).

#### 5.5.4 Composite Custom Info Window

The following Custom Info rule types are available:

- A) "Composite custom info" (the default when you press the "+" button) - look for subtitles that fit several rules simultaneously:
  When a "Composite custom info" is added, a new window - the Composite Custom Info Window - appears (see figure above), where the Composite custom info can be edited. Enter the name of the Composite custom info in the "Caption" field - keep it short (see (1) in the figure above). With a Composite custom info, Subtitle Workshop can look for subtitles that fit several rules (Composite info sub-rules) simultaneously. The types of those sub-rules can be the same as the other Custom info rule types ("Duration", "Line length", "Line count", "Pause", "CpS", and "Text" - see their descriptions below). Add new sub-rules with the "+" button in the Composite Custom Info Window.(see (2) in the figure above)
  In addition, a Composite custom info can also look for one or more (at once) of the standard error types - simply check the ones you want (see (3) in the figure above).
  Example:
  To find all subtitles that have two lines and duration less than 1.5 seconds, do the following:
  1. Add a Composite custom info with the "+" button in the Custom Info Area of the "Information and Errors window" .
  2. Enter a name for this rule in the "Caption" field. (see (1) in the figure above)
  3. Click on the "+" button in the Composite Custom Info Window below (see (2) in the figure above) and add a "Subtitles duration information" subfield (see (4) in the figure above), and after its "<" sign enter the number 1500.
  4. Click on the "+" button again and add a "Subtitles lines count information" subfield (see (5) in the figura above), and after its ">" sign enter the number 1, after its "<" sign enter the number 3, and from the dropdown select "AND".
  This way Subtitle Workshop will be looking for subtitles with a duration < 1500 ms, having more than one and less than three (exactly two) lines.
  5. Click the "OK" button to finish editing the Composite custom info (see (6) in the figura above).
  6. Make sure the "CI" button above the Info & Errors List (see "Information and Errors window" ) is down. If it is, all subtitles that fit the Composite custom info rules will be displayed in the Info & Errors List.
  The Composite custom info type fields contain an "Edit" button - when clicked, the Composite Custom Info Window appears again.
- B) "Subtitles duration information":
  This field type has two textboxes (for two rule values: ">" - greater than, and "<" - less than) - enter the desired number (in milliseconds) in them. You can also select a logical connection between the rules - from the dropdown box ("AND" - look for subtitles fitting both rules; "OR" - look for subtitles fitting at least one of the rules). You can enter only one of the rule values and leave the other field empty, if you wish. In this case, the logical connection won't matter.
  Example 1:
  To look for all subtitles with a duration of less than 1 second, add a "Duration information" type of field with the "+" button, enter the number 1000 after the "<" sign, and press the [ENTER] key.
  Example 2:
  To look for subtitles with a duration between 6 and 7 seconds, add another "Duration information" type of field with the "+" button, enter 6000 after ">" and 7000 after "<", select the "AND" logical connection from the dropdown, and press the [ENTER] key.
  Example 3:
  To look for subtitle with a duration that is either less than 6 seconds or greater than 7 seconds, add another "Duration information" type of field with the "+" button, enter 7000 after ">" and 6000 after "<", select the "OR" logical connection from the dropdown, and press the [ENTER] key.
- C) "Subtitles line length information"
  It has the same fields as the "Duration" field type and works the same way, but for subtitles line length (in characters).
- D) "Subtitles line count information"
  It has the same fields as the "Duration" field type and works the same way, but for subtitles lines count (in lines).
- E) "Subtitles pause information"
  It has the same fields as the "Duration" field type and works the same way, but for subtitles pause (in milliseconds).
- F) "Subtitles CpS information"
  It has the same fields as the "Duration" field type and works the same way, but for subtitles CpS (in characters per second).
- G) "Subtitles text information"
  This type of field contains a textbox for the text you're looking for in a subtitle and a dropdown that sets the type of the search that will be performed for that text. The text search types are:
  - a) "Contains (Case sensitive)" - The rule is to look for subtitles that contain the entered text. The search will be case sensitive.
  - b) "Contains (Case insensitive)" - The rule is to look for subtitles that contain the entered text. The search will not be case sensitive.
  - c) "Does not contain (Case sensitive)" - The rule is to look for subtitles that do not contain the entered text. The search will be case sensitive.
  - d) "Does not contain (Case insensitive)" - The rule is to look for subtitles that do not contain the entered text. The search will not be case sensitive.
  - e) "Matches regular expression" - This option indicates that the entered text will be treated as a regular expression. Regular expressions are explained in Syntax of Regular Expressions.
  - f) "Matches regular expression (ignore tags)" - like e), but all tags in the subtitles are ignored.
  Example:
  To find all subtitles containing the word "ship", whether it is written with lowercase letters or with one or more uppercase letters, select "Contains (Case insensitive)" from the dropdown, enter the text "ship" in the textbox, and press the [ENTER] key.

The "All", "None", and "Inverse" buttons work in the same fashion as the "All", "None", and "Inverse" buttons in the Error Types Area.
The "Save custom info set" and "Delete custom info set" buttons, and the custom info set dropdown box can be used to save sets of Custom info fields, just like the Error types sets in the Error Types Area.
There is a vertical slider above the Custom Info Area, that can be used to resize the height of the Custom Info Area.

#### 5.5.5 Information and Error Settings

To access the Information and Errors Settings, press the "Tools/Information and errors/Settings..." menu ([Alt]+[I]). Additionally, you can access the Settings from the Information and Errors window, by pressing the "Settings" button.
Now let's review all the options you will find.

##### General options

Show confirmations in main form on fix
Show a confirmation window every time a subtitle is about to be deleted due to an error fix. Mark errors in main form's list
When this option is enabled, Subtitle Workshop will mark the errors in the Subtitles List in the Main Window. Marking the errors in the Subtitles List makes it easy to recognize them.
You can specify a marking style for each error type in the "Mark" tab options.
If the marked error is still difficult to identify visually (for example it is very hard sometimes to tell that a subtitle has unnecessary spaces or unnecessary dots), you can put the mouse cursor over the subtitle with errors for half a second and a tooltip with a description specifying exactly what types of errors it has will pop up.
Mark errors on load subtitle
If this option is enabled, it performs an automated check for errors each time you load a subtitle file. This option is going to take effect only if "Mark errors in main form's list" is enabled.
Automatically recheck errors
Perform automatic error recheck (and marking) after every action (change) in Subtitle Workshop!

- Do not recheck on Pascal scripts
  Rechecking errors on Pascal scripts might be slow - this turns it off.
- Recheck all once after a Pascal script executes
  Recheck all errors after each Pascal script execution. This is recommended in most cases.
- Recheck on each change made by a Pascal script (might be slow)
  Recheck all errors on each change made by a Pascal script. Might be slow, so only use it for scripts that don't make many modifications.

Fix errors on load subtitle
Automatically fix all the errors when a subtitle file is loaded.
Fix one unit overlap at load
Fix subtitles overlapping when a subtitle file is loaded. Example:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:02,000 | This is subtitle 1
00:00:02,000 | 00:00:03,000 | This is subtitle 2

Would be changed to:

Show Time | Hide Time | Text
00:00:01,000 | 00:00:02,000 | This is subtitle 1
00:00:02,001 | 00:00:03,000 | This is subtitle 2

OCR Script:
Specifies the name of the OCR Script you are currently using. This script has to be in the "OCRScripts" subfolder of Subtitle Workshop's main directory. The scripts list consists of all the ".ocr" files found in the "OCRScripts" subfolder. The "Edit" button will open the .ocr file in Notepad, so you can edit it - add or remove OCR Errors.
Indicate too long lines in Text and Translation labels
Indicate too long lines in the selected subtitle in the Subtitles List, by changing the text and background color in the Text and Translation labels.
Indicate too short duration in Duration box
Indicate too short duration in the selected subtitle in the Subtitles List, by changing the text and background color of the "Duration" box.
Indicate too long duration in Duration box
Indicate too long duration in the selected subtitle in the Subtitles List, by changing the text and background color of the "Duration" box.
Indicate too short pause in Pause box
Indicate too short pause in the selected subtitle in the Subtitles List, by changing the text and background color of the "Pause" box.
Indicate overlapping subtitles in Pause box
Indicate the selected subtitle in the Subtitles List is overlapping with the previous subtitle, by changing the text and background color of the "Pause" box.
Indicate bad values in Show and Hide boxes
Indicate bad values in the selected subtitle in the Subtitles List, by changing the text and background color of the "Show" and "Hide" boxes.
Indicate subtitles over two lines in lines counter label
Indicate more than two lines in the selected subtitle in the Subtitles List, by changing the text and background color of the lines counter label.

##### Advanced options

Repeatable characters
A list of characters that shouldn't be consecutively repeated in the subtitles text. Don't separate the characters in the list with a space or any symbols. This is the characters list for the "Repeated characters" error type checking, marking, and fixing.
Prohibited characters
A list of characters that shouldn't be in any subtitle. Don't separate the characters in the list with a space or any symbols. This is the characters list for the "Prohibited characters" error type checking, marking, and fixing.
Tolerance for repeated subtitles
The maximum allowed difference between the Hide Time of the first subtitle and the Show Time of the second subtitle, for a subtitle to be detected as a repeated subtitle. This is the tolerance for the "Repeated subtitles" error type checking, marking, and fixing.
Space after characters
A list of characters that should always be followed by a space character. Don't separate the characters in the list with a space or any symbols. This is the characters list for the "Missing space after custom characters" error type checking, marking, and fixing.
Space before characters
A list of characters that should always be preceded by a space character. Don't separate the characters in the list with a space or any symbols. This is the characters list for the "Missing space before custom characters" error type checking, marking, and fixing.
Too long duration over
The value above which a subtitle's duration is considered too long. This is the value for the "Too long duration" error type checking, marking, and fixing.
Too short duration under
The value below which a subtitle's duration is considered too short. This is the value for the "Too short duration" error type checking, marking, and fixing.
Too long line
The number of characters that if a subtitle line's length is equal to or greater than, the line is considered too long. This is the value for the "Too long lines" error type checking, marking, and fixing.
Too short pause under
The value below which the pause between two subtitle is considered too short. This is the value for the "Too short pauses" error type checking, marking, and fixing.
Too many CpS over
Specifies the maximum number of characters per second for a subtitle. Characters per second that are above this value will be considered too many. This is the value for the "Too many characters per second" error type checking, marking, and fixing.
Normal CpS box colors
The text and background colors of the CpS Infobox when the CpS does not exceed the maximum CpS allowed. Those colors are used when "Tools: Information and errors: Show CpS boxes" is on.
Too many CpS box colors
The text and background colors of the CpS Infobox when the CpS exceeds the maximum CpS allowed. Those colors are used when "Tools: Information and errors: Show CpS boxes" is on, or when the "Mark too much CpS with CpS boxes" option is enabled in the "Mark" tab.
Display percentage in CpS box
The CpS Infoboxes will contain the percentage of the currently used number of characters per second out of the allowed maximum (e.g. if the maximum is 15 CpS, a subtitle with duration of 2 seconds, will use 100%, if it contains 30 characters, or 80% if it contains 24 characters, or 50% if it contains 15 characters, or 200% if it contains 60 characters, etc.).
Display current CpS in CpS box
The CpS Infobox will contain the subtitle's current CpS (its number of characters divided by its duration).
Display minimum time in CpS box
The CpS Infobox will contain the minimum duration allowed (for the current number of characters) that will keep the subtitle's CpS within the allowed maximum.
Display maximum characters in CpS box
The CpS Infobox will contain the maximum number of characters allowed (for the current duration) that will keep the subtitle's CpS within the allowed maximum.

##### Check for

Choose what error types Subtitle Workshop should check for.
Defines also which error types are selectable in the interactive error fixing method (see here).

##### Mark

Choose what error types Subtitle Workshop should mark - and how.
Each error can have its own unique marking style, or could use a default error marking style.
"Mark errors in main form's list" in the "General" tab should be enabled for the Marking System to work.
To set an error marking style:

1. Select which columns to be marked for the error type, by clicking on one or more of the N, P, S, H, D, and T buttons (N="Num", P="Pause", S="Show", H="Hide", D="Duration", T="Text");
2. Select the style of the text for the selected (in step 1) columns for the error type, by clicking on one or more of the B, I, U, and S buttons (B="Bold", I="Italic", U="Underline", S="Strikethrough");
3. Select the text and background colors for the selected (in step 1) columns for the error type, in the two color boxes on the right (first box is the text color, second box is the background color).

Unchecked error types won't be marked at all.
"Mark too much CpS with CpS boxes" - instead of using yet another style of error marking, enable this option to mark the "Too many CpS" error by displaying a CpS box with different colors over a subtitle. The text and background colors, as well as the contents of the CpS boxes, can be set in the "Advanced" tab. Useful and recommended.
"Default error marking" will be applied for all checked errors that have no selected columns (i.e. in order to mark an error type with this default style, don't select any columns for it).
The "Set Default Styles" button sets the default set of Error Marking Styles.
Currently, the order the errors are marked in the Subtitles List of the Main Window is the following:
1. The errors with the default marking style are marked.
2. The errors with unique marking are marked in the order they appear in the "Mark" tab.

##### Fix

Choose what error types Subtitle Workshop should fix.
Important remark: the errors in the list are always fixed when fixing is done in "Automatic" mode (see here), regardless if they were in the 'to check' list or in the 'mark' list.

##### Unnecessary spaces

Choose what types of unnecessary spaces to check for and fix.

#### 5.5.6 Various information window

It displays various information about the current subtitle file. Use the "Refresh info" button to refresh the various information after changes were made to the subtitles.

#### 5.5.7 OCR Scripts

The OCR Scripts are nothing but series of Find-and-Replace specifications in a friendly, close to HTML syntax. What makes them powerful? The commands that are available. The possibility for using regular expressions makes it possible to find and replace almost anything in any language. A very important thing to know about OCR Scripts is that all commands are performed consecutively, that is, in the order they are written.
Let's now see a small example of an OCR Script:

    <SWOCR WordChars="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_ñÑáéíóúÁÉÍÓÚäëïöü">
    	<!-- The comments are set just like in HTML -->
    	<ERROR Find="[A-ZÁ-Ú](l)" ReplaceBy="I">
    	<ERROR Find="[a-zá-ú](I)" ReplaceBy="l">
    	<ERROR Find="\d( :)" ReplaceBy=":">
    	<ERROR UseREOnlyToFind="False" Find=",{2,}" ReplaceBy="...">
    </SWOCR>

WordChars represents all the characters that can form a word in your language. The default is the string shown above. If this parameter is not passed, the default will be used. These are some of the most common OCR errors in English language. In OCR Engines, "l" (lowercase "L") and "I" (uppercase "i") look almost identical and they are often misplaced. Another very common error is the inclusion of spaces before colon. In the short example above, Subtitle Workshop will use regular expressions to search for the errors. If you don't need to use regular expressions, you should take a look at the parameters that define how you want the search to be executed:
UseRE
UseRE="True" or UseRE="False". The default value is True. If it is set to False, then regular expressions will not be used for the search. Set it to False, only if you want to simplify the way find-and-replace commands are written, because when regular expressions are disabled, the OCR scripts have lesser power.
UseREOnlyToFind
UseREOnlyToFind="True" or UseREOnlyToFind="False". The default value is True. To explain how this works, we need to see an example:

    <ERROR UseREOnlyToFind="True" Find="[a-z]at" ReplaceBy="dog">

Applied to "The name of my cat is Max" will return "The name of my dog is Max", but

    <ERROR UseREOnlyToFind="False" Find="[a-z](at)" ReplaceBy="dog">

Applied to "The name of my cat is Max" will return "The name of my cdog is Max".
In the first situation, when the replace is made, the part that is a regular expression (in this case "[a-z]", matching "c") is also replaced.
In the second situation, we only use the regular expression part ("[a-z]") to search for the text, but when the replace is made, the regular expression part is not replaced. We will only replace the part of the "Find=" text that is between parenthesis, that is, you need to write the part that is "constant" and won't vary between parenthesis. This is extremely useful for the OCR Scripts (take a good look at Default.ocr to understand it better).
The following parameters are only available when "UseRE" is set to False:
WholeWord
WholeWord="True" or WholeWord="False". The default value is False. If set to True, it will find the "Find=" text, only if it is forming a Word.
CaseSensitive
CaseSensitive="True" or CaseSensitive="False". The default value is False. If set to True, the text search will be case sensitive.
These are the most used commands, you can do a lot with them. But there are more:
PreserveCase
PreserveCase="True" or PreserveCase="False". The default value is False. If set to True, it will preserve the case of "Find" text when replacing with the "ReplaceBy" text. For example, if we have this error:

    <ERROR UseRE="False" Find="DOG" WholeWord="True" PreserveCase="True" ReplaceBy="CAT">

As it is not case sensitive, Subtitle Workshop could find the text "Dog", not only the text "DOG". When replacing "Dog" with "CAT", it will copy the case of the text it found, so it will replace "Dog" with "Cat", not with "CAT".

#### 5.5.8 Syntax of Regular Expressions

##### Introduction

This document is taken from TRegExpr help file, an excellent Regular Expressions library for Delphi, by Andrey V. Sorokin.
Regular Expressions are a widely-used method of specifying patterns of text to search for. Special metacharacters allow You to specify, for instance, that a particular string You are looking for occurs at the beginning or end of a line, or contains N recurrences of a certain character.
Regular expressions look ugly for novices, but really they are very simple (well, usually simple ;) ), handy and powerful tool.
I strongly recommend you to play with regular expressions. Let's start our learning trip!

##### Simple matches

Any single character matches itself, unless it is a metacharacter with a special meaning described below.
A series of characters matches that series of characters in the target string, so the pattern "bluh" would match "bluh" in the target string. Quite simple, eh?
You can cause characters that normally function as metacharacters or escape sequences to be interpreted literally by 'escaping' them, by preceding them with a backslash "\", for instance: metacharacter "^" match beginning of string, but "\^" matches the character "^", "\\" matches "\", and so on.
Examples:

foobar | matches string 'foobar'
\^FooBarPtr | matches '^FooBarPtr'

##### Escape sequences

Characters may be specified using a escape sequences syntax much like that used in C and Perl: '\n' matches a newline, '\t' a tab, etc. More generally, \xnn, where nn is a string of hexadecimal digits, matches the character whose ASCII value is nn. If You need wide (Unicode) character code, You can use '\x{nnnn}', where 'nnnn' - one or more hexadecimal digits.

\xnn | char with hex code nn
\x{nnnn} | char with hex code nnnn (one byte for plain text and two bytes for Unicode)
\t | tab (HT/TAB), same as \x09
\n | newline (NL/LF), same as \x0a
\r | car.return (CR), same as \x0d
\f | form feed (FF), same as \x0c
\a | alarm (bell) (BEL), same as \x07
\e | escape (ESC), same as \x1b

Examples:

foo\x20bar | matches 'foo bar' (note space in the middle)
\tfoobar | matches 'foobar' predefined by tab

##### Character classes

You can specify a character class, by enclosing a list of characters in []. It will match any one character from the list.
If the first character after the '[' is '^', the class matches any character not in the list.
Examples:

foob[aeiou]r | finds strings 'foobar', 'foober' etc. but not 'foobbr', 'foobcr' etc.
foob[^aeiou]r | find strings 'foobbr', 'foobcr' etc. but not 'foobar', 'foober' etc.

Within a list, the '-' character is used to specify a range, so that a-z represents all characters between 'a' and 'z', inclusive.
If you want the character '-' itself to be a member of a class, put it at the start or end of the list, or escape it with a backslash. If you want the character ']' in a class, you may place it at the start of list or escape it with a backslash.
Examples:

[-az] | matches 'a', 'z' and '-'
[az-] | matches 'a', 'z' and '-'
[a\-z] | matches 'a', 'z' and '-'
[a-z] | matches all twenty six small characters from 'a' to 'z'
[\n-\x0D] | matches any of #10, #11, #12, #13.
[\d-t] | matches any digit, '-' or 't'.
[]-a] | matches any char from ']'..'a'.

##### Metacharacters

Metacharacters are special characters which are the essence of Regular Expressions. There are different types of metacharacters, described below.
Metacharacters - line separators

^ | start of line
$ | end of line
\A | start of text
\Z | end of text
. | any character in line

Examples:

^foobar | matches string 'foobar', only if it's at the beginning of line
foobar$ | matches string 'foobar' only if it's at the end of line
^foobar$ | matches string 'foobar' only if it's the only string in line
foob.r | matches strings like 'foobar', 'foobbr', 'foob1r' and so on

The '^' metacharacter by default is only guaranteed to match at the beginning of the input string/text, the '$' metacharacter only at the end. Embedded line separators will not be matched by '^' or '$'.
You may, however, wish to treat a string as a multi-line buffer, such that the '^' will match after any line separator within the string, and '$' will match before any line separator - you can do this by switching On the modifier /m.
The \A and \Z are just like '^' and '$', except that they won't match multiple times when the modifier /m is used, while '^' and '$' will match at every internal line separator.
The '.' metacharacter by default matches any character, but if You switch Off the modifier /s, then '.' won't match embedded line separators.
TRegExpr works with line separators as recommended at www.unicode.org (http://www.unicode.org/unicode/reports/tr18/):
"^" is at the beginning of a input string, and, if modifier /m is On, also immediately following any occurrence of \x0D\x0A or \x0A or \x0D (if You are using Unicode version of TRegExpr, then also \x2028 or \x2029 or \x0B or \x0C or \x85). Note that there is no empty line within the sequence \x0D\x0A.
"$" is at the end of a input string, and, if modifier /m is On, also immediately preceding any occurrence of \x0D\x0A or \x0A or \x0D (if You are using Unicode version of TRegExpr, then also \x2028 or \x2029 or \x0B or \x0C or \x85). Note that there is no empty line within the sequence \x0D\x0A.
"." matches any character, but if You switch Off modifier /s then "." doesn't match \x0D\x0A and \x0A and \x0D (if You are using Unicode version of TRegExpr, then also \x2028 and \x2029 and \x0B and \x0C and \x85).
Note that "^.*$" (an empty line pattern) does not match the empty string within the sequence \x0D\x0A, but matches the empty string within the sequence \x0A\x0D.
Multiline processing can be easily tuned for your own purpose with help of TRegExpr properties LineSeparators and LinePairedSeparator. You can use only Unix style separators \n or only DOS/Windows style \r\n or mix them together (as described above and used by default) or define Your own line separators!

##### Metacharacters - predefined classes

\w | an alphanumeric character (including "_")
\W | a non-alphanumeric
\d | a numeric character
\D | a non-numeric
\s | any space (same as [ \t\n\r\f])
\S | a non space

You may use \w, \d and \s within custom character classes.
Examples:

foob\dr | matches strings like 'foob1r', ''foob6r' and so on, but not 'foobar', 'foobbr' and so on
foob[\w\s]r | matches strings like 'foobar', 'foob r', 'foobbr' and so on but not 'foob1r', 'foob=r' and so on

TRegExpr uses properties SpaceChars and WordChars to define character classes \w, \W, \s, \S, so you can easily redefine it.

##### Metacharacters - word boundaries

\b | Match a word boundary
\B | Match a non-(word boundary)

A word boundary (\b) is a spot between two characters that has a \w on one side of it and a \W on the other side of it (in either order), counting the imaginary characters off the beginning and end of the string as matching a \W.

##### Metacharacters - iterators

Any item of a regular expression may be followed by another type of metacharacters - iterators. Using these metacharacters, you can specify the number of occurrences of the previous character, metacharacter or subexpression.

* | zero or more ("greedy"), similar to {0,}
+ | one or more ("greedy"), similar to {1,}
? | zero or one ("greedy"), similar to {0,1}
{n} | exactly n times ("greedy")
{n,} | at least n times ("greedy")
{n,m} | at least n but not more than m times ("greedy")
*? | zero or more ("non-greedy"), similar to {0,}?
+? | one or more ("non-greedy"), similar to {1,}?
?? | zero or one ("non-greedy"), similar to {0,1}?
{n}? | exactly n times ("non-greedy")
{n,}? | at least n times ("non-greedy")
{n,m}? | at least n but not more than m times ("non-greedy")

So, digits in curly brackets of the form {n,m}, specify the minimum number of times to match the item n and the maximum m. The form {n} is equivalent to {n,n} and matches exactly n times. The form {n,} matches n or more times. There is no limit to the size of n or m, but large numbers will chew up more memory and slow down r.e. execution.
If a curly bracket occurs in any other context, it is treated as a regular character.
Examples:

foob.*r | matches strings like 'foobar', 'foobalkjdflkj9r' and so on, and 'foobr'
foob.+r | matches strings like 'foobar', 'foobalkjdflkj9r' and so on, but not 'foobr'
foob.?r | matches strings like 'foobar', 'foobbr' and so on, and 'foobr' but not 'foobalkj9r' and so on
fooba{2}r | matches the string 'foobaar'
fooba{2,}r | matches strings like 'foobaar', 'foobaaar', 'foobaaaar' etc.
fooba{2,3}r | matches 'foobaar' and 'foobaaar', but not 'foobaaaar' etc.

A little explanation about "greediness". "Greedy" takes as many as possible, "non-greedy" takes as few as possible. For example, 'b+' and 'b*' applied to string 'abbbbc' return 'bbbb', 'b+?' returns 'b', 'b*?' returns empty string, 'b{2,3}?' returns 'bb', 'b{2,3}' returns 'bbb'.
You can switch all iterators into "non-greedy" mode (see the modifier /g).

##### Metacharacters - alternatives

You can specify a series of alternatives for a pattern using '|' to separate them, so that fee|fie|foe will match any of 'fee', 'fie', or 'foe' in the target string (as would f(e|i|o)e). The first alternative includes everything from the last pattern delimiter ('(', '[', or the beginning of the pattern) up to the first '|'. The last alternative contains everything from the last '|' to the next pattern delimiter. For this reason, it's common practice to include alternatives in parentheses, to minimize confusion about where they start and end.
Alternatives are tried from left to right, so the first alternative found for which the entire expression matches, is the one that is chosen. This means that alternatives are not necessarily greedy. For example: when matching 'foo|foot' against 'barefoot', only the 'foo' part will match, as that is the first alternative tried, and it successfully matches the target string. (This might not seem important, but it is important when you are capturing matched text using parentheses.)
Also remember that '|' is interpreted as a literal within square brackets, so if You write [fee|fie|foe] You're really only matching [feio|].
Examples:

foo(bar|foo) | matches strings 'foobar' or 'foofoo'.

##### Metacharacters - subexpressions

The bracketing construct ( ... ) may also be used to define r.e. subexpressions (after parsing, You can find subexpression positions, lengths and actual values in MatchPos, MatchLen and Match properties of TRegExpr, and substitute it in template strings by TRegExpr.Substitute).
Subexpressions are numbered based on the left to right order of their opening parenthesis.
First subexpression has number '1' (whole r.e. match has number '0' - You can substitute it in TRegExpr.Substitute as '$0' or '$&').
Examples:

(foobar){8,10} | matches strings which contain 8, 9 or 10 instances of the 'foobar'
foob([0-9]|a+)r | matches 'foob0r', 'foob1r', 'foobar', 'foobaar', 'foobaaar' etc.

##### Metacharacters - backreferences

Metacharacters \1 through \9 are interpreted as backreferences. \<n> matches previously matched subexpression #<n>.
Examples:

(.)\1+ | matches any repeated character, e.g. 'aaaa', 'cc', etc.
(.+)\1+ | matches any repeated character or any repeated sequence of characters, like 'abab', '123123', etc.
(['"]?)(\d+)\1 | matches a number, or a number between quotes, e.g. "13" (in double quotes), or '4' (in single quotes) or 77 (without quotes) or "56' (between a double quote and a single quote) etc
(['"])(\d+)\1 | matches a number between quotes (only single or only double), e.g. "13" (in double quotes), or '4' (in single quotes), but not "56' (between a double quote and a single quote)

##### Modifiers

Modifiers are for changing behaviour of TRegExpr.
There are many ways to set up modifiers.
Any of these modifiers may be embedded within the regular expression itself using the (?..) construct.
Also, you can assign to appropriate TRegExpr properties (Modifier for example to change /x, or ModifierStr to change all modifiers together). The default values for new instances of TRegExpr object defined in global variables, for example global variable RegExprModifierX defines value of new TRegExpr instance ModifierX property.

i | Do case-insensitive pattern matching (using installed in you system locale settings), see also InvertCase.
m | Treat string as multiple lines. That is, change '^' and '$' from matching at only the very start or end of the string to the start or end of any line anywhere within the string, see also Line separators.
s | Treat string as single line. That is, change '.' to match any character whatsoever, even line separators (see also Line separators), which it normally would not match.
g | Non standard modifier. Switching it Off, You'll switch all following operators into non-greedy mode (by default this modifier is On). So, if modifier /g is Off, then '+' works as '+?', '*' as '*?', and so on
x | Extend your pattern's legibility by permitting whitespace and comments (see explanation below).
r | Non-standard modifier. If set, then range а-я additionally includes the Russian letter 'ё', А-Я additionally includes 'Ё', and а-Я includes all Russian symbols. Sorry for foreign users, but it's set by default. If you want to switch if off by default, set False to global variable RegExprModifierR.

The modifier /x itself needs a little more explanation. It tells the TRegExpr to ignore whitespaces that are neither backslashed nor within a character class. You can use this to break up your regular expression into (slightly) more readable parts. The # character is also treated as a metacharacter, introducing a comment. For example:

    (
    (abc) # comment 1
      |   # You can use spaces to format r.e. - TRegExpr ignores it
    (efg) # comment 2
    )

This also means that if you want real whitespace or # characters in the pattern (outside a character class, where they are unaffected by /x), you'll either have to escape them or encode them using octal or hex escapes. Taken together, these features can go a long way towards making regular expressions text more readable.

##### Perl extensions

(?imsxr-imsxr)
You can use it in r.e. for turning modifiers on and off on the fly. The modifiers are turned on like this: (?i) or (?m) or (?s) or (?x) or (?r). The modifiers are turned off like this: (?-i) or (?-m) or (?-s) or (?-x) or (?-r). Multiple modifier can be modified like this (?ix) or (?-ix) or (?m-i) etc. If this construction is used in a subexpression, then it effects only this subexpression.
Examples:

(?i)Saint-Petersburg | matches 'Saint-petersburg', 'Saint-Petersburg', 'saint-petersburg', 'SAINT-PETERSBURG', 'SaInt-pETeRsBURG', etc.
(?i)Saint-(?-i)Petersburg | matches 'Saint-Petersburg', 'saint-Petersburg', 'SAINT-Petersburg', 'sAInt-Petersburg', etc., but not 'Saint-petersburg', 'Saint-PETERSBURG', 'Saint-pETersBurG', etc.
(?i)(Saint-)?Petersburg | matches 'Saint-petersburg', 'Saint-Petersburg', 'saint-petersburg', 'SAINT-PETERSBURG', 'SaInt-pETeRsBURG', etc., as well as 'Petersburg', 'petersburg', 'PETERSBURG', 'PetERSbuRg', etc.
((?i)Saint-)?Petersburg | matches 'Saint-Petersburg', 'saint-Petersburg', 'SAINT-Petersburg', 'sAInt-Petersburg', etc., but not 'Saint-petersburg', 'Saint-PETERSBURG', 'Saint-pETersBurG', etc.

(?#text) A comment, the text is ignored. Note that TRegExpr closes the comment as soon as it sees a ")", so there is no way to put a literal ")" in the comment.

### 5.6 Add FPS from Video

Useful if you have a movie and its corresponding subtitle (which is a frame based one) and you want to edit it but you don't know the FPS of the movie. It lets you find out the FPS of a movie file and add it to Subtitle Workshop's FPS list.
There are two ways in which you can use this feature:

1. Using the "Tools/Add FPS from AVI" menu. This method reads the header of the video file, and thus it only works with AVI files (not MPEG, ASF, WMV, etc). It is very fast and if the file is a valid AVI file, it works very well.
2. Loading the movie from the "Movie/Open" menu. This method uses DirectX, and so it will work with any kind of video files. There are some cases with AVI files that DirectX detects 0 as FPS - in these cases, Subtitle Workshop will alternatively read the header of the AVI.

Each time you use this feature, the FPS of the video will be added to all the places in which there are boxes to select FPS.

### 5.7 External Video Preview

This option makes it possible to test the subtitle file you are working on in your favourite video player. The video player you want to use must support command line, and at least one of the subtitle formats that Subtitle Workshop supports.
Go to "Settings/Settings/External preview/General". Here you must select the .exe file of the video player you want to use. If the video player is already associated with .AVI files, click "Detect associated program" button.
Then select if you want to be asked for a different video each time you test the subtitle, or if you are always going to test the subtitle files with the same video.
There are other things to configure in the Advanced section. Select the format in which you want the temporary subtitle file to be saved in (it will be saved in the temp directory). Only select "Original format", if you are sure that the video player you are using supports the subtitle format that you are using.
Finally, you must select the parameters to send to the video player. VIDEO_FILE represents the video file, and SUBT_FILE represents the subtitle file. You can add other parameters, like full screen, etc. Make sure to add SUBT_FILE and VIDEO_FILE between " ", so that if the names of the files contain one or more spaces, they would be passed correctly.
When you finish configuring all this settings, you can test the subtitle by selecting the "Tools/External preview" menu ([F8]).
Tested video players:

1. KMPlayer
   "VIDEO_FILE" /sub "SUBT_FILE" /fullscreen
   (Save temp. file in SubRip format)
2. Media Player Classic
   "VIDEO_FILE" /sub "SUBT_FILE" /fullscreen
   (Save temp. file in SubRip format)
   Make sure you have selected a video renderer in Media Player Classic's Options, that supports subtitles rendering.
3. BSPlayer
   "VIDEO_FILE" "SUBT_FILE" -fs
   (Save temp. file in SubRip format)
4. ViPlay
   /MOVIE:"VIDEO_FILE" /SUBTITLE:"SUBT_FILE" /FS
   (Save temp. file in any format)

### 5.8 Internal Video Preview

#### Video Preview Panel: have a look at how your subtitles will perform

First of all, you have to open a subtitle file (or create a new one) and a video file (see Loading a subtitle file and Loading a video file). If you have done both, you will see a media player interface in the upper part of the Main Window - that's the Video Preview Panel. The size of the Video Preview Panel can be adjusted by clicking on the border of the Video Preview Panel and the Subtitles List (the cursor will change) and dragging up or down. Adjusting the video window will resize the video itself.
Note: If you have an automatic subtitle display filter such as VobSub installed, it will also be effective in here. This may result in two subtitles being displayed on top of each other, at the same time. In that case, set the subtitle display filter not to display a subtitle file, or rename the subtitle file it is displaying, or turn off or uninstall the filter.
The Video Preview Panel consists of two areas: the Video Display - a large area where the video file is displayed (along with the subtitle for the current moment of the video); and the Video Controls Panel - an area with buttons for controlling the video playback, a Seekbar, and a set of figures displaying the current time in the video, the total duration of the video, and the frames per second (FPS) of the video. The subtitles of the current subtitle file will be displayed on top of the video, following it's timing. Font, color, size and other attributes can be adjusted in Settings.
Buttons (from left to right):

- Play/Pause
  Click once to play, and again to pause.
- Stop
  Stops playback and rewinds to 00:00:00.000.
- Toggle scroll list
  If enabled, the subtitle being currently displayed in the Video Preview Panel will be selected in the Subtitles List, and it will be scrolled into view if necessary.
- Jump to previous/next subtitle
  These two buttons move the player's position to the Show Time of the previous/next (in relation to the one currently being displayed) subtitle.
- Rewind & Forward
  If pressed once, these will rewind or forward the video with the amount of time specified in the Settings. The default value is 0.5 seconds (500 milliseconds).
  If pressed and held, these will scroll through the video at rather fast pace. Both ways can be used if the video is playing, paused or stopped.
- Alter playback rate
  If enabled, video playback will become slower or faster, depending on what percentage you selected for altered playback rate in Settings.
  The default value is 50%.
- Move subtitle
  This button moves all the selected subtitles, so that the first one's Show Time is equal to the current time in the video. It doesn't modify the duration of the subtitles, just acts like a "quick" version of "Set delay".
- Set Show Time & Set Hide Time
  When used, both buttons will affect the subtitle currently selected in the Subtitles List.
  "Set Show Time" will overwrite the Show Time value of this subtitle to the current time of the video, and "Set Hide Time" will overwrite the Hide Time value of this subtitle to the current time of the video, and jump to the next subtitle in the Subtitles List.
- Start Subtitle & End Subtitle
  "Start subtitle" sets an internal variable to the current time of the video, "End subtitle" creates a new subtitle with Show Time equal to that internal variable, and Hide Time equal to the current time of the video. Very useful for creating subtitles from scratch - play the video and press "Start subtitle" when you want a new subtitle to show, then press "End subtitle" when you want this new subtitle to hide - repeat that for every subtitle you want to add for the video.
- Mark as first sync point, Mark as last sync point, Add subtitle/video synchronization point
  The function of these buttons is explained in 2.3 Adjust subtitles.
- Mute/Unmute
  This button mutes or unmutes the sound of the video.
- Volume control bar
  Control the volume of the video with this bar.

The Seekbar can be used like the one in Windows Media Player, ViPlay or any other player. The smallest possible seeking interval depends on the length of the video file.
In addition, when the video is paused, moving the mouse cursor over the Seekbar will cause an automatic preview of the corresponding moment of the video.

### 5.9 SAMI Language Extractor

This function extracts one or more languages from subtitles in SAMI format that contain more than one language. Subtitle Workshop doesn't support multilingual SAMIs, so with this tool you can extract the desired languages and open them as one language SAMIs.

## Chapter 6: Shortcuts

Shortcuts can be configured in the "Settings, Edit Shortcuts" menu.
Most shortcuts are connected to a menuitem (have the same effect as choosing the menu-item), some are not.
The "Edit Shortcuts" window looks like above, the shortcut keys are visible in the tab of the menu connected to them,
e.g. the "Edit" tab shows the shortcuts of which the actions are available in the Edit menu.
The "misc" tab shows shortcuts not connected to a menu.
To change a shortcut key combination select the shortcut row and press the desired key combination.
If a desired shortcut already exists you will get a warning and the new key combination will be ignored.
Additionally it is possible to show an overview of the already defined shortcuts hitting the "Used Shortcuts" button on the "Edit Shortcuts" window.
The latter list can then be printed out with the "Print" button at the bottom.

## Frequently Asked Questions (FAQ)

1. Q: How can I change the font size of every window independant of the program setting?
   A: In almost all windows there is an up/down control present in the left bottom corner for that purpose.
   Additionally the "Information and Errors" window has an extra up/down control for changing the font size in the error list (right/upper corner).
2. Q: How do I save the video file with subtitles?
   A: Currently, Subtitle Workshop doesn't offer this kind of functionality. It can only handle text based subtitles and cannot "attach" them to any video. You can create or edit your subtitles with Subtitle Workshop and use another software to save the video file with the subtitles. Note that we do not recommend at all to burn subtitles into a video file (unless it's absolutely necessary), since the subtitles won't be editable after that and the video will have to be re-encoded, which will lead to loss of video quality and precious time.
3. Q: How can I add subtitles to the DVDs I create?
   A: Subtitle Workshop does not do the full job, but it can help a bit. You need additional software to achieve this task.
4. Q: I'm trying to load a subtitle file and I always get the same error message. What should I do?
   A: See 1.4.1 Loading a subtitle file
5. Q: I type X language characters, but Subtitle Workshop doesn't display them correctly. What should I do?
   A: Go to "Settings/Settings/Charsets", and change "Original charset" and "Translation charset" to the correct value. After that, reload the subtitle. Do that if the characters are displayed incorrectly only in the Subtitles List and the Text and Translation fields. If the characters aren't displayed correctly in the menus, buttons, etc. as well, you will need to go to the language file you are using and change the "Font Charset" value to the correct charset (see charsets.txt in the language files directory for a reference). If you still don't see characters correctly, go to "Regional and Language Options" in Windows' Control Panel, then in the "Advanced" tab, set the default "Language for non-Unicode programs" to your language, and restart Subtitle Workshop.
Supported charset are:

    Name       Value  Description
    -----------------------------
    ANSI           0  ANSI characters.
    DEFAULT        1  Font is chosen based solely on Name and Size. If the described font is not available on the system, Windows will substitute another font.
    SYMBOL         2  Standard symbol set.
    MAC           77  Macintosh characters. Not available on NT 3.51.
    SHIFTJIS     128  Japanese shift-jis characters.
    HANGEUL      129  Korean characters (Wansung).
    JOHAB        130  Korean characters (Johab). Not available on NT 3.51
    GB2312       134  Simplified Chinese characters (mainland china).
    CHINESEBIG5  136  Traditional Chinese characters (taiwanese).
    GREEK        161  Greek characters. Not available on NT 3.51.
    TURKISH      162  Turkish characters. Not available on NT 3.51
    VIETNAMESE   163  Vietnamese characters. Not available on NT 3.51.
    HEBREW       177  Hebrew characters. Not available on NT 3.51
    ARABIC       178  Arabic characters. Not available on NT 3.51
    BALTIC       186  Baltic characters. Not available on NT 3.51.
    RUSSIAN      204  Cyrillic characters. Not available on NT 3.51.
    THAI         222  Thai characters. Not available on NT 3.51
    EASTEUROPE   238  Includes diacritical marks for eastern european countries. Not available on NT 3.51.
    OEM          255  Depends on the codepage of the operating system.

The "Value" is the one to be specified in the language file (*.lng), identifier "Font Charset="
6. Q: Is there a quick way to jump to the next/previous subtitle in the Subtitles List?
   A: Yes, there is. To jump to the next subtitle, press [Shift]+[Enter]; to jump to the previous subtitle, press [Ctrl]+[Enter]. Each time you jump to the next/previous subtitle, the field that has the focus will not loose it - that means, if you are editing the text of subtitle #1, after you press [Shift]+[Enter], you can start typing the text for subtitle #2 right away. The same thing applies for the time fields.
7. Q: How can I select multiple subtitles in the Subtitles List?
   A: The default Windows selection schemes works in Subtitle Workshop. Hold the [Ctrl] key and click all the subtitles you want to select. If you want to select many consecutive subtitles, select the first one, hold the [Shift] key, and select the last one. If you wish to deselect a selected subtitle, hold [Ctrl] and click it.
8. Q: How can I jump to the line that contains an error in the Subtitles List, from the "Information and errors" window?
   A: Double click on the line in the Errors List, and it will be selected in the Subtitles List.
9. Q: I hate pressing [Ctrl]+[I] multiple times! How can I jump to next error?
   A: You can jump to the next error by pressing [F12], or to the previous error by pressing [SHIFT]+[F12].
10. Q: How can I manually add a FPS to the lists without using "Add FPS from AVI"?
    A: Just select the text in the "FPS" or the "Input FPS" fields, type a new FPS (the decimal separator must be ",") and press [Enter].
11. Q: How do I simulate double click on a subtitle, but with the keyboard?
    A: Select the subtitle and press [Alt]+[Enter].
12. Q: How do I configure my own shortcuts?
    A: Give/change a code to/of a shortcut can be done in the Shortcuts editor.
    Only shortcuts already defined in Subtitle Workshop can be given a code or having their code changed.
13. Q: There's audio but no picture when I open a video file, how can I fix this?
    A: Try changing the Video Renderer (via the "Movie/Video renderer" menu) from "Default" to "VMR9". If this doesn't help, there is most likely a problem with your codecs. Consider installing the latest version of a codec pack like the K-Lite Codec Pack.

## Hints

1. The Haali Media splitter is part of the K_Lite Codec Pack if you download its 'MEGA' version, see the website of K-Lite Codec Pack.
2. When you install Haali Media splitter for playback of mkv files, please tick "Enable MP4 support".
3. If ffdshow is installed, you can try the following:
   Start "Video decoder configuration", click on "DirectShow Configuration", tick "Use ffdshow only in:", click on "edit" to make sure it includes "SubtitleWorkshop.exe"
   Start "Video decoder configuration", click on "codecs", on the right next to "format H.264" change from "Decoder" from "none" to "libavcodec" & next to "Raw video" change "Decoder" from "none" to "yv12" (or other format).
   It is possible you need to disable DirectVobSub to avoid showing external subtitles.
   Also the ffdshow codec is part of the 'Mega' K-Lite Codec Pack.
4. If you want to use VLC 32 bit together with Subtitle Workshop, it can be necessary to change the video renderer. In the menu of Subtitle Workshop -> movie -> video renderer -> VLC
5. How to open unsupported video filetypes (e.g. ISO) : Movie -> Open -> Instead of "All supported files", choose "All files".
6. Use preferrably a common resolution such as 1920x1080 (or higher).
7. When your operating system is 125 DPI instead of regular 100 DPI:
   Change application properties In Explorer or on the Start menu, right-click the application name, select Properties, select the Compatibility tab, and then select the Disable display scaling on high DPI settings check box.
   Note: In Windows 10 Version 1703 and later version of Windows, the text of the Disable display scaling on high DPI settings option is changed to Override high DPI scaling behavior, scaling performed by: Application.
   For further information: see here.
8. How to make the appearance of subtitle larger: Try this for larger text (subtitles): Settings -> settings -> Look -> List -> change row height and font size. It's important also to increase row height when you chose a larger font.
9. How to make text of the menu larger: settings -> settings -> look -> program -> font size.

## Known issues

- Audio stream selection may not work when the Media Splitter you are using (like Haali or LAV) already selected the audio stream, because the splitter is feeding Subtitle Workshop only one audio stream.
- Setting file associations or enabling "Add "Open with Subtitle Workshop" to shell context menu" in "Settings/Settings/File Types" may not work on 64-bit systems.
  You can always associate the file types you want with Subtitle Workshop in Windows Explorer.
- Some parts of Subtitle Workshop's interface are not properly translated, when changing the Subtitle Workshop Interface Language to a language that has a different character encoding from the character encoding of Windows' default language for non-Unicode programs. To set Subtitle Workshop's Interface Language to your language, first go to Windows' Control Panel / Regional and Language Options / Advanced, and set the "Language for non-Unicode programs" to your language. Then open Subtitle Workshop and select your language from Settings/Language.

## Contact information

Please, don't hesitate to send us all your questions, comments, ideas, suggestions, bug reports, etc., as well as your language file and user manual translations!
E-mail: subtitleworkshop@mail.com
Website: https://sourceforge.net/projects/subtitle-workshop-classic
Project page on SourceForge.Net: https://sourceforge.net/projects/subtitle-workshop-classic.
User Manual authors: URUSoft, Andrey Spiridonov Kameleon

## License

Subtitle Workshop is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Subtitle Workshop is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with Subtitle Workshop. If not, see <http://www.gnu.org/licenses/>.
IF YOU DON'T ACCEPT THESE TERMS, YOU SHOULD CEASE AND DESIST TO USE THIS PROGRAM.