summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/interface-changes.rst2
-rw-r--r--DOCS/man/options.rst12
-rw-r--r--options/options.c1
-rw-r--r--options/options.h1
-rw-r--r--sub/ass_mp.c3
-rw-r--r--sub/osd.c2
-rw-r--r--sub/osd.h1
-rw-r--r--sub/sd_ass.c4
8 files changed, 26 insertions, 0 deletions
diff --git a/DOCS/interface-changes.rst b/DOCS/interface-changes.rst
index 13b51ad4ba..3423d737ec 100644
--- a/DOCS/interface-changes.rst
+++ b/DOCS/interface-changes.rst
@@ -32,6 +32,8 @@ Interface changes
- "vo-drop-frame-count" to "frame-drop-count"
The old names still work, but are deprecated.
- remove the --stream-capture option and property. No replacement.
+ - add --sub-justify
+ - add --sub-ass-justify
--- mpv 0.23.0 ---
- remove deprecated vf_vdpaurb (use "--hwdec=vdpau-copy" instead)
- the following properties now have new semantics:
diff --git a/DOCS/man/options.rst b/DOCS/man/options.rst
index a6034e512e..1ad2f18b02 100644
--- a/DOCS/man/options.rst
+++ b/DOCS/man/options.rst
@@ -1976,6 +1976,18 @@ Subtitles
Vertical position (default: ``bottom``).
Details see ``--sub-align-x``.
+``--sub-justify=<auto|left|center|right>``
+ Control how multi line subs are justified irrespective of where they
+ are aligned (default: ``auto`` which justifies as defined by
+ ``--sub-align-y``).
+ Left justification is recommended to make the subs easier to read
+ as it is easier for the eyes.
+
+``--sub-ass-justify=<yes|no>``
+ Applies justification as defined by ``--sub-justify`` on ASS subtitles
+ if ``--sub-ass-style-override`` is not set to ``no``.
+ Default: ``no``.
+
``--sub-shadow-color=<color>``
See ``--sub-color``. Color used for sub text shadow.
diff --git a/options/options.c b/options/options.c
index 6547f06074..5166ef6940 100644
--- a/options/options.c
+++ b/options/options.c
@@ -500,6 +500,7 @@ const m_option_t mp_opts[] = {
({"none", 0}, {"light", 1}, {"normal", 2}, {"native", 3})),
OPT_CHOICE("sub-ass-shaper", ass_shaper, UPDATE_OSD,
({"simple", 0}, {"complex", 1})),
+ OPT_FLAG("sub-ass-justify", ass_justify, 0),
OPT_CHOICE("sub-ass-style-override", ass_style_override, UPDATE_OSD,
({"no", 0}, {"yes", 1}, {"force", 3}, {"signfs", 4}, {"strip", 5})),
OPT_FLAG("sub-scale-by-window", sub_scale_by_window, UPDATE_OSD),
diff --git a/options/options.h b/options/options.h
index b0687ac9e5..82a8f92d48 100644
--- a/options/options.h
+++ b/options/options.h
@@ -281,6 +281,7 @@ typedef struct MPOpts {
int ass_style_override;
int ass_hinting;
int ass_shaper;
+ int ass_justify;
int sub_clear_on_seek;
int teletext_page;
diff --git a/sub/ass_mp.c b/sub/ass_mp.c
index 84a706b681..6d85ac1f28 100644
--- a/sub/ass_mp.c
+++ b/sub/ass_mp.c
@@ -78,6 +78,9 @@ void mp_ass_set_style(ASS_Style *style, double res_y,
style->ScaleX = 1.;
style->ScaleY = 1.;
style->Alignment = 1 + (opts->align_x + 1) + (opts->align_y + 2) % 3 * 4;
+#ifdef ASS_JUSTIFY_LEFT
+ style->Justify = opts->justify;
+#endif
style->Blur = opts->blur;
style->Bold = opts->bold;
style->Italic = opts->italic;
diff --git a/sub/osd.c b/sub/osd.c
index bf6233a0b1..a35380d99f 100644
--- a/sub/osd.c
+++ b/sub/osd.c
@@ -62,6 +62,8 @@ static const m_option_t style_opts[] = {
OPT_FLOATRANGE("blur", blur, 0, 0, 20),
OPT_FLAG("bold", bold, 0),
OPT_FLAG("italic", italic, 0),
+ OPT_CHOICE("justify", justify, 0,
+ ({"auto", 0}, {"left", 1}, {"center", 2}, {"right", 3})),
{0}
};
diff --git a/sub/osd.h b/sub/osd.h
index aef1c60b33..7572ec0360 100644
--- a/sub/osd.h
+++ b/sub/osd.h
@@ -134,6 +134,7 @@ struct osd_style_opts {
float blur;
int bold;
int italic;
+ int justify;
};
extern const struct m_sub_options osd_style_conf;
diff --git a/sub/sd_ass.c b/sub/sd_ass.c
index 31c66a6087..9b4d3763c5 100644
--- a/sub/sd_ass.c
+++ b/sub/sd_ass.c
@@ -333,6 +333,10 @@ static void configure_ass(struct sd *sd, struct mp_osd_res *dim,
if (converted)
set_force_flags |= ASS_OVERRIDE_BIT_ALIGNMENT;
#endif
+#ifdef ASS_JUSTIFY_AUTO
+ if ((converted || opts->ass_style_override) && opts->ass_justify)
+ set_force_flags |= ASS_OVERRIDE_BIT_JUSTIFY;
+#endif
ass_set_selective_style_override_enabled(priv, set_force_flags);
ASS_Style style = {0};
mp_ass_set_style(&style, 288, opts->sub_style);