# MicroDVD

MicroDVD is a subtitle file format for digital video. Its name is derived from the MicroDVD Player, a media player application designed to play DVD videos along with subtitles, originally developed by Tiamat Software. The application was first released in 2000 but development ended in 2001. Media players that support the format are able to interpret MicroDVD subtitles and mix their contents with their corresponding video files.

## Format
### Specification

MicroDVD subtitle files have the .sub filename extension. These files may come along with a video file and/or created/modified by the user. Media player applications that support external subtitle files are usually responsible for locating correct .sub files.
MicroDVD subtitle files consist of multiple lines, each defining a portion of the subtitle text that must be displayed between certain given video frames. The line syntax is:
{start-frame}{stop-frame}Text
For example, if "Hello!" is to be displayed during the first 25 frames of a digital video, clip or movie, the corresponding .sub file must contain the line:
{0}{25}Hello!
The duration of the text being displayed depends on the frame rate of the corresponding video file. For example, if the frame rate of the corresponding video file is 25 frames per seconds and the subtitle file in last example is accompanied with, "Hello!" is displayed for one second. The software the MicroDVD Player expects the subtitle file to begin with the tag [BEGIN], and end with the tag [END].

### Control Codes

The available control codes and their purpose are given:
The control code y defines font style.
{0}{25}{y:i}Hello!
"Hello!" is displayed in italic.
{0}{25}{y:b}Hello!
"Hello!" is displayed in bold.
{0}{25}{y:u}Hello!
"Hello!" is underlined.
{0}{25}{y:s}Hello!
"Hello!" is stroked.
The control code f defines font name.
{0}{25}{f:fontname}Hello!
"Hello!" is displayed using the defined font, with the string "fontname" determining the desired font. For example:
{0}{25}{f:Arial}Hello!
"Hello!" is displayed in the Arial typeface.
The control code s defines font size.
{0}{25}{s:size}Hello!
"Hello!" is displayed at the defined font size, with the string "size" determining the desired size as an integer number. For example:
{0}{25}{s:10}Hello!
"Hello!" is displayed at the font size of 10.
The control code c defines font color.
{0}{25}{c:$BBGGRR}Hello!
"Hello!" is displayed in a defined color. The color format is: $BBGGRR (8 bits blue, 8 bits green and 8 bits red). For example:
{0}{25}{c:$0000FF}Hello!
"Hello!" is displayed in full intensity red.
Note that this is not standard RGB color model, instead the color order is reversed.
The control code P defines subtitle position relative to video.
{0}{25}{P:X,Y}Hello!
"Hello!" is displayed at the coordinates (X,Y).
Each line in the subtitle normally displays as a single line. However, the pipe character may be used to break a single line into multiple lines. For example:
{0}{25}Hello! How are you?
The above code displays as follows:
Hello! How are you?
On the other hand,
{0}{25}Hello!|How are you?
The above code displays as follows:
Hello!
How are you?
In this case, it is possible to define display values of each line or the whole subtitle line . If the control code is in upper case, it affects the whole subtitle line. If the control code is in lower case, it affects only the line it is contained in. For example:
{0}{25}{Y:i}Hello!|How are you?
The above code will display as two lines of italic text. But,
{0}{25}{y:i}Hello!|{y:b}How are you?
The above code will display as two lines; the first line in italic, and the second line in bold. Note that if no more code is used after a pipe character, the following lines will retain the same formatting. Note that the subtitle positioning code P must be logically always used in uppercase.
It is also possible to use multiple codes at once. Here is an example:
{0}{25}{c:$0000ff}{y:b,u}{f:DeJaVuSans}{s:12}Hello!
"Hello!" will be displayed underlined and in bold, in red and in the DeJaVuSans font at 12 points.
The default display values for a complete subtitle file may be defined using {DEFAULT}, which will override particular line formattings. For example, the following code may be used to display all subtitle line using DeJaVuSans at 10 points and in blue:
{DEFAULT}{C:$FF0000}{F:DeJaVuSans}{S:10}
This line of code may be placed anywhere in the subtitle file. Also note that in this case, all control codes are in uppercase. There is also a code H to define a particular character set to use:
{DEFAULT}{H:Greek}
Defines that the Greek character set should be used. This code can be used only in the {DEFAULT} line.