SubtitleSettings
Subtitle styling. camelCase, unlike the snake_case fields around it.
Every field is optional; omitted ones take the renderer's defaults.
Only fontSize and strokeWidth are range-checked server-side — the
rest are passed through, so an unrecognised value is ignored rather
than rejected. Sending the full set is the safer habit: switching
animationStyle cannot then leave a stale field behind.
Possible values: [LilitaOne, DMSerifDisplay, Dangrek, NotoSans, Roboto, Arial, TimesNewRoman, ComicSans, Impact, Courier]
LilitaOneRange-enforced. Outside 16–26 returns 400.
Possible values: >= 16 and <= 26
20Any CSS colour.
whiteblackRange-enforced. Outside 0–4 returns 400.
Possible values: >= 0 and <= 4
2Possible values: [left, center, right]
centerPossible values: [top, center, bottom]
centerExactly four numbers — [left, top, right, bottom].
Possible values: >= 4, <= 4
[0,0,0,0]When false, backgroundColor is painted behind the text.
trueOnly visible when transparent is false.
rgba(0,0,0,0.5)Possible values: [regular, uppercase, lowercase]
regularScales how quickly subtitles advance.
1classic shows wrapped lines, one_word one word at a time, and
phrase_highlight a phrase with the spoken word picked out in
highlightColor.
Possible values: [classic, one_word, phrase_highlight]
classicOnly used by phrase_highlight.
#FFD700Only used by phrase_highlight.
4Gap between wrapped lines as a fraction of font size — 0.2 is
20%. Not meaningful for one_word, which never wraps.
0.2{
"font": "LilitaOne",
"fontSize": 20,
"color": "white",
"strokeColor": "black",
"strokeWidth": 2,
"textAlign": "center",
"verticalAlign": "center",
"margin": [
0,
0,
0,
0
],
"transparent": true,
"textCase": "uppercase",
"animationStyle": "phrase_highlight",
"highlightColor": "#FFD700",
"maxPhraseWords": 4,
"lineSpacing": 0.2
}