feat(core,player,app): full subtitle styling, applied live, with a preview

The subtitle style was three fixed choices. It is now size, position,
font, bold and italic, free colours with opacity for the text, outline,
box and shadow, outline thickness, shadow distance and blur, and an
opt-in "Restyle styled subtitles" that repaints ASS dialogue too
(sub-ass-override=force). The defaults are mpv's own, so a viewer who
never opens the section sees no change.

Settings has a section of its own with a sample line drawn on a bright
and a dark picture. Every change also reaches the playing file at once,
and is written when the mouse is let go rather than once per frame of a
drag. The player's subtitle menu has size, position and a per-file
delay; Z and X shift subtitles by 0.1 s, as in mpv.

Every option is sent every time, so a change back to a default lands on
a live player. A refused sub-border-style still skips the border options
that depend on it, so an older libmpv loses the box rather than drawing
a smear.
This commit is contained in:
nvrl committed 2026-10-27 22:25:53 +01:00
1 parent 238ecd8220
commit 69d961d7b8
11 files changed
+940 -175

No files matched your search

+20 -4
View File
@@ -85,7 +85,8 @@ The picture plays inside the app's window. Move the mouse to show the controls.
- **Up next** counts down 10 seconds when the credits start, then plays the next episode. Choose
**Play now**, **Cancel** or **Watch till the end**.
- **Subtitles and audio** are chosen from the buttons at the bottom right. The app remembers your
choice for each show.
choice for each show. The subtitle menu also has **Size** and **Position**, which are saved like
the ones in Settings, and **Delay**, which moves subtitles earlier or later for this file only.
- **Speed** goes from 0.5× to 3×, and stays for the next episode.
### Keyboard
@@ -112,6 +113,7 @@ Press **?** anywhere to see this list in the app.
| N / P | Next and previous episode |
| [ / ] | Slower and faster |
| S | Skip the opening or the credits |
| Z / X | Subtitles 0.1 s earlier and later |
| E | The list of episodes |
| F or double-click | Fullscreen |
| Ctrl+S | Save the frame to `Pictures/proton-stream` |
@@ -184,12 +186,26 @@ The **Proton account** section on this page is where you sign in. See
**Playback**
- **Audio language** and **Subtitles:** the language to start in, or the file's own default.
- **Subtitle size**, **Subtitle background** and **Subtitle colour:** how plain subtitles (SRT)
look. Choose **Dark box** if text is hard to read on bright scenes. Styled subtitles (ASS) keep
their own look and only change size. These apply from the next file.
- **Play the next episode** (on by default) and **Skip openings and credits** (off).
- **Hardware decoding** (on). Turn it off if the picture shows green blocks or stays black.
**Subtitles**
How subtitles look. A sample line at the top shows the style on a bright and a dark picture, and
a video that is playing changes at once.
- **Size** and **Position**: how big the line is and how far up the picture it sits.
- **Font**, **Bold** and **Italic**: any font installed on this computer. The sample line uses the
app's own font; the video uses the one you chose.
- **Text colour**, and a **Background** of **Outline** or **Box**, each with its own colour. A
colour's opacity sets how much of the picture shows through. Choose **Box** if text is hard to
read on bright scenes.
- **Shadow** and **Blur**.
- **Restyle styled subtitles** (off). Plain subtitles (SRT) always take the whole style. Styled
subtitles (ASS) keep the look their makers gave them and take only the size and position,
unless this is on. Turned on, signs and songs can come out wrong.
- **Reset** goes back to the default look.
**Storage**
- **Streaming cache:** 1 to 16 GiB, 4 GiB by default. It keeps the parts of videos you streamed,