diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-08-01 02:02:28 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-08-01 02:02:28 +0200 |
| commit | 1a9554c281720d0bf54295ab16f593ccc0ef3b4e (patch) | |
| tree | 5bbdcb49377a1e3e0832250c063563e13ac470e7 | |
| parent | 2306f9cbc7086f6b51aa1cb55eb56b521fb92113 (diff) | |
Do all text -> HTML conversion for subtitles in the same place.
Previously we would convert > to > then the ampersand to &
resulting in &gt;
| -rw-r--r-- | src/lib/render_text.cc | 6 | ||||
| -rw-r--r-- | src/lib/text_decoder.cc | 5 |
2 files changed, 4 insertions, 7 deletions
diff --git a/src/lib/render_text.cc b/src/lib/render_text.cc index e47098ee9..7bb7d6b45 100644 --- a/src/lib/render_text.cc +++ b/src/lib/render_text.cc @@ -77,11 +77,7 @@ marked_up (list<StringText> subtitles, int target_height, float fade_factor) /* Between 1-65535 inclusive, apparently... */ out += "alpha=\"" + dcp::raw_convert<string>(int(floor(fade_factor * 65534)) + 1) + "\" "; out += "color=\"#" + i.colour().to_rgb_string() + "\">"; - - string t = i.text(); - replace_all(t, "&", "&"); - out += t; - + out += i.text(); out += "</span>"; } diff --git a/src/lib/text_decoder.cc b/src/lib/text_decoder.cc index 0a7bdf95d..6ee6ed079 100644 --- a/src/lib/text_decoder.cc +++ b/src/lib/text_decoder.cc @@ -72,10 +72,11 @@ void TextDecoder::emit_plain_start (ContentTime from, list<dcp::SubtitleString> s) { for (auto& i: s) { - /* We must escape < and > in strings, otherwise they might confuse our subtitle - renderer (which uses some HTML-esque markup to do bold/italic etc.) + /* We must escape some things, otherwise they might confuse our subtitle + renderer (which uses entities and some HTML-esque markup to do bold/italic etc.) */ string t = i.text (); + boost::algorithm::replace_all (t, "&", "&"); boost::algorithm::replace_all (t, "<", "<"); boost::algorithm::replace_all (t, ">", ">"); i.set_text (t); |
