On date Monday 2024-02-19 22:42:25 +0100, Oneric wrote: > Backslashes cannot be escaped by a backslash in any ASS renderer, > but unless followed by specific characters it is just printed out. > Insert a word-joiner character after a backslash to break up > active sequences without changing the visual output. > --- > libavcodec/ass.c | 9 ++++++++- > libavcodec/webvttdec.c | 2 +- > 2 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/libavcodec/ass.c b/libavcodec/ass.c > index 5058dc8337..a68d3568b4 100644 > --- a/libavcodec/ass.c > +++ b/libavcodec/ass.c > @@ -183,9 +183,16 @@ void ff_ass_bprint_text_event(AVBPrint *buf, const char > *p, int size, > > /* standard ASS escaping so random characters don't get > mis-interpreted > * as ASS */ > - } else if (!keep_ass_markup && strchr("{}\\", *p)) { > + } else if (!keep_ass_markup && strchr("{}", *p)) { > av_bprintf(buf, "\\%c", *p); >
> + /* append word-joiner U+2060 as UTF-8 to break up sequences like \N > */ I'm confused by this, what kind of \N sequences might appear in an ASS file? Can you show an offending sequence? > + } else if (!keep_ass_markup && *p == '\\') { > + if (p_end - p <= 3 || strncmp(p + 1, "\xe2\x81\xa0", 3)) > + av_bprintf(buf, "\\\xe2\x81\xa0"); > + else > + av_bprintf(buf, "\\"); > + > /* some packets might end abruptly (no \0 at the end, like for > example > * in some cases of demuxing from a classic video container), some > * might be terminated with \n or \r\n which we have to remove (for > diff --git a/libavcodec/webvttdec.c b/libavcodec/webvttdec.c > index 990d150f16..6e55bc5499 100644 > --- a/libavcodec/webvttdec.c > +++ b/libavcodec/webvttdec.c > @@ -37,7 +37,7 @@ static const struct { > {"<i>", "{\\i1}"}, {"</i>", "{\\i0}"}, > {"<b>", "{\\b1}"}, {"</b>", "{\\b0}"}, > {"<u>", "{\\u1}"}, {"</u>", "{\\u0}"}, > - {"{", "\\{"}, {"}", "\\}"}, // escape to avoid ASS markup conflicts > + {"{", "\\{"}, {"}", "\\}"}, {"\\", "\\\xe2\x81\xa0"}, // escape to avoid > ASS markup conflicts > {">", ">"}, {"<", "<"}, > {"‎", "\xe2\x80\x8e"}, {"‏", "\xe2\x80\x8f"}, > {"&", "&"}, {" ", "\\h"}, _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".