diff options
author | Oleg Oshmyan <chortos@inbox.lv> | 2020-07-14 00:38:43 +0300 |
---|---|---|
committer | Oleg Oshmyan <chortos@inbox.lv> | 2020-07-14 20:14:44 +0300 |
commit | 66dba8dd21bbf81b25b26e2556c404006f80a43c (patch) | |
tree | 28080a0ab2a4110e0cfa7bc8a8e909391356b336 /libass/ass.c | |
parent | c1aff3a86e00e99e750057a956f27564120934cb (diff) | |
download | libass-66dba8dd21bbf81b25b26e2556c404006f80a43c.tar.bz2 libass-66dba8dd21bbf81b25b26e2556c404006f80a43c.tar.xz |
Disable bidi bracket matching unless enabled via ASS_Feature
Bracket matching is incompatible with VSFilter (even on modern
Windows), so disable it by default. But as it's generally
a good thing (and 100% more compliant with current Unicode),
keep it available as an ASS_Feature.
It can be toggled individually or enabled as part of the
catch-all ASS_FEATURE_INCOMPATIBLE_EXTENSIONS feature.
If libass is compiled against FriBidi older than 1.0,
bracket matching is impossible. Signal this at runtime
by failing to recognize the ASS_FEATURE_BIDI_BRACKETS
feature. This way, clients who want to use bracket matching
can set the feature without any compile-time checks for
FriBidi and can be freely linked against libass that is itself
compiled against any version of FriBidi; and yet they can
detect at runtime whether the feature is actually enabled.
Fixes https://github.com/libass/libass/issues/374.
Diffstat (limited to 'libass/ass.c')
-rw-r--r-- | libass/ass.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/libass/ass.c b/libass/ass.c index 13cfea5..811a9a7 100644 --- a/libass/ass.c +++ b/libass/ass.c @@ -36,6 +36,7 @@ #include "ass_utils.h" #include "ass_library.h" #include "ass_priv.h" +#include "ass_shaper.h" #include "ass_string.h" #define ass_atof(STR) (ass_strtod((STR),NULL)) @@ -1468,7 +1469,11 @@ int ass_track_set_feature(ASS_Track *track, ASS_Feature feature, int enable) { switch (feature) { case ASS_FEATURE_INCOMPATIBLE_EXTENSIONS: - track->parser_priv->enable_extensions = !!enable; + //-fallthrough +#ifdef USE_FRIBIDI_EX_API + case ASS_FEATURE_BIDI_BRACKETS: + track->parser_priv->bidi_brackets = !!enable; +#endif return 0; default: return -1; |