Customising subtitle font and colors

Note: This tutorial is for advanced users, producing videos with Narakeet scripts. For basic information on how to control subtitles with videos created from presentations, check out How to add subtitles to video.

Subtitles and closed captions can help you engage the audience on social networks, where videos autoplay without sound, and to make the content accessible to disabled users. There are two primary way of creating subtitles with Narakeet.

  1. You can generate an external subtitle track (in SubRip/SRT and Web Video Text Track/VTT formats). Many online video hosting and sharing platforms (such as YouTube, Facebook and LinkedIn) let you upload these files to take advantage of their native subtitle/closed captioning system.
  2. You can overlay the subtitles on top of the video permanently. This “burns” the subtitles into the video, obscuring part of the video frame.

The first option lets users choose whether to show or hide subtitles, and in many cases also lets users style subtitles themselves (they can choose the font size, type and colour in the video player).

The second option fixes the subtitles into the video, so they cannot be turned off or on. It’s better for publishing to platforms that do not have native subtitle/closed caption features (such as Twitter), or when you want to make sure the subtitles are always visible.

For overlaid subtitles, because Narakeet writes the subtitles directly into the video as images, users cannot style them directly. The subtitles normally show as white text with a black outline or background, to create enough contrast with video content. Narakeet automatically chooses an appropriate font size for the video frame to fit in roughly two lines of text, so that the captions do not obscure too much video content. This is suitable for most usages, but you can also customise it for your needs. For example, you can increase the font size or reduce the amount of text shown on the screen at any single time.

Using standard subtitle styles

There are three standard subtitle styles, which you can specify using the subtitles header.

  • embed: create an embedded subtitle track in the result video, and generate SRT and VTT files as separate downloads. Users can turn on/off subtitles in the video player, but a video player must support subtitles to show them.
  • overlay: burn the subtitles onto the video (permanently shown). Users cannot turn off these subtitles, but they work in all video players.
  • overlay-background: burn the subtitles onto the video, with a semi-transparent black background.
  • none: do not include any subtitles

To set one of the standard styles, use the style name as the value of the subtitles header. For example, the following script will turn on overlay with background subtitles:

---
size: 720p
subtitles: overlay-background
---

Where do you want to go for coffee?

![](pic.jpg)

The big difference between overlay and overlay-background is in how the contrasting background is shown. With outline, a small border around the font gets shown in a contrasting color, as in the image below:

video subtitles with standard overlay style

With outline-background, the text is shown on a semi-transparent background box, as in the image below:

video subtitles with standard overlay-background style

Specifying subtitle properties

You can set many subtitle properties directly in the header, such as colors and sizes. In that case, the subtitle property becomes a key-value map, and you must specify the mode sub-property. With mode, use either embed or overlay.

---
size: 720p
subtitles: 
  mode: overlay
  # additional properties optionally
---

Where do you want to go for coffee?

![](pic.jpg)

Controlling the number of characters in a single frame

Narakeet breaks long narration lines into individual subtitles to avoid overcrowding a single video frame. The standard line break method allows between 130 and 140 characters on a screen.

It’s sometimes useful to reduce or increase the number of characters that can be shown in a single frame. For example, arabic script characters can get very long, so you may want to show fewer on a single frame. If you use a very large video frame and a small subtitle font, then increase the limit so you can show more text.

You can control the maximum breaking limit by setting the break property. For example, the following script will restrict subtitles to up to 30 characters in a single frame:

---
size: 720p
subtitles: 
  mode: overlay
  break: 30
---

Where do you want to go for coffee?

![](pic.jpg)

Note that you can use the break property with overlay and embed subtitles. The other styling properties only apply to overlay subtitles (since the video player itself controls the styling for embedded video tracks).

Changing the font size

Narakeet automatically chooses the font size depending on the video frame, to fit approximately two lines of text to a video frame. You can modify the font size by using the scale property, and set it to a multiplier you would like to apply to the font size. Because this is a multiplier, 0.5 would produce a font half the normal size, and 2 would produce font twice the normal size. For example, the following script will show subtitles in twice the normal font size:

---
size: 720p
subtitles: 
  mode: overlay
  scale: 2
---

Where do you want to go for coffee?

![](pic.jpg)

The result will look as in the image below:

video subtitles with a larger font

For more precise control, you can also use the size property and set it to a pixel font size. For example, the following script uses a 40 pixel font for subtitles:

---
size: 720p
subtitles: 
  mode: overlay
  size: 40
---

Where do you want to go for coffee?

![](pic.jpg)

Note that you can use either the scale or the size property, but not both. We generally recommend using the scale property, since it will adjust to the video frame. Use the size property only when you absolutely want to control the text sizing, for example to fit it into some prepared background box on the video materials.

### Changing the outline color

You can specify a color using CSS color names or hex codes. All standard web color names are supported (e.g. black or aqua), as well as RGB/A codes in the standard CSS format (# followed by 6 hex values RRGGBB or 8 hex values RRGGBBAA). Because the header is technically YAML, and YAML uses the hash symbol (#) as a comment marker, make sure to enclose RGB/A colors in quotes.

The following example will set the outline color to red.

---
size: 720p
subtitles: 
  mode: overlay
  scale: 2
  outline: red
---

Where do you want to go for coffee?

![](pic.jpg)

The output will look like the picture below:

video subtitles with a custom outline color

Changing the background color

To show subtitles over a background box instead of using an outline, specify the background property. Here is an example, setting the background to a highly transparent black (“#000000BB” means black color (RGB=000000) with BB as the alpha channel setting transparency.

---
size: 720p
subtitles: 
  mode: overlay
  scale: 2
  background: "#000000BB"
---

Where do you want to go for coffee?

![](pic.jpg)

The output will look like the picture below:

video subtitles on a transparent background

Note that you can either use the background or the outline color, but not both.

Changing the primary color

You can also change the primary font color - just remember to make the background contrasting. For example, we could use black font on semi-transparent white background. Using the RGBA hex code, #FFFFFF88 shows a white color (FFFFFF) with roughly 50% alpha-channel (88).

---
size: 720p
subtitles: 
  mode: overlay
  scale: 2
  color: black
  background: "#FFFFFF88"
---

Where do you want to go for coffee?

![](pic.jpg)

The result will look like in the picture below:

video subtitles on an inverted background

Executable example

Check out the subtitle-styling example project on GitHub to see the key features explained in this tutorial in action.

More information

For more information, check out the subtitles header format documentation.