diff options
| author | Carl Hetherington <cth@carlh.net> | 2023-06-17 00:03:51 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2023-09-03 20:43:51 +0200 |
| commit | 11a47a4544f77a47b508e4cf1983aca7d5b6cd2a (patch) | |
| tree | 38aa06b6fce34586df172813ceab132c5dd06ce5 | |
| parent | dbfb852ea5b7169a80b701089bf0bc7e30c6e328 (diff) | |
Ignore newlines in subtitle text (#2341).
| -rw-r--r-- | src/lib/render_text.cc | 1 | ||||
| m--------- | test/data | 0 | ||||
| -rw-r--r-- | test/render_subtitles_test.cc | 50 |
3 files changed, 51 insertions, 0 deletions
diff --git a/src/lib/render_text.cc b/src/lib/render_text.cc index 8e5acc0ff..870f3045d 100644 --- a/src/lib/render_text.cc +++ b/src/lib/render_text.cc @@ -104,6 +104,7 @@ marked_up(vector<StringText> subtitles, int target_height, float fade_factor, st boost::algorithm::replace_all(text, "&", "&"); boost::algorithm::replace_all(text, "<", "<"); boost::algorithm::replace_all(text, ">", ">"); + boost::algorithm::replace_all(text, "\n", ""); span += text; span += "</span>"; diff --git a/test/data b/test/data -Subproject dab44217068e681f3bfded6a8d71a54867b1cf9 +Subproject b6d209730b870fec225a375c9b19350cd7f6724 diff --git a/test/render_subtitles_test.cc b/test/render_subtitles_test.cc index 023237568..5672230da 100644 --- a/test/render_subtitles_test.cc +++ b/test/render_subtitles_test.cc @@ -29,10 +29,12 @@ #include "lib/image_png.h" #include "lib/render_text.h" #include "lib/string_text.h" +#include "test.h" #include <dcp/subtitle_string.h> #include <boost/test/unit_test.hpp> +using std::make_shared; using std::shared_ptr; @@ -120,6 +122,54 @@ BOOST_AUTO_TEST_CASE (marked_up_test6) } +BOOST_AUTO_TEST_CASE(render_text_with_newline_test) +{ + std::list<dcp::SubtitleString> ss = { + { + {}, true, false, false, dcp::Colour(255, 255, 255), 42, 1.0, + dcp::Time(0, 0, 0, 0, 24), dcp::Time(0, 0, 1, 0, 24), + 0.5, dcp::HAlign::CENTER, + 0.5, dcp::VAlign::CENTER, + 0.0, + dcp::Direction::LTR, + "Hello world", + dcp::Effect::NONE, dcp::Colour(0, 0, 0), + {}, {}, + 0 + }, + { + {}, true, false, false, dcp::Colour(255, 255, 255), 42, 1.0, + dcp::Time(0, 0, 0, 0, 24), dcp::Time(0, 0, 1, 0, 24), + 0.5, dcp::HAlign::CENTER, + 0.5, dcp::VAlign::CENTER, + 0.0, + dcp::Direction::LTR, + "\n", + dcp::Effect::NONE, dcp::Colour(0, 0, 0), + {}, {}, + 0 + } + }; + + std::vector<StringText> st; + for (auto i: ss) { + st.push_back({i, 0, make_shared<dcpomatic::Font>("foo"), dcp::SubtitleStandard::SMPTE_2014}); + } + + auto images = render_text(st, dcp::Size(1998, 1080), {}, 24); + + BOOST_CHECK_EQUAL(images.size(), 1U); + image_as_png(Image::ensure_alignment(images.front().image, Image::Alignment::PADDED)).write("build/test/render_text_with_newline_test.png"); +#if defined(DCPOMATIC_OSX) + check_image("test/data/mac/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#elif defined(DCPOMATIC_WINDOWS) + check_image("test/data/windows/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#else + check_image("test/data/render_text_with_newline_test.png", "build/test/render_text_with_newline_test.png"); +#endif +} + + #if 0 BOOST_AUTO_TEST_CASE (render_text_test) |
