From 11a47a4544f77a47b508e4cf1983aca7d5b6cd2a Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 17 Jun 2023 00:03:51 +0200 Subject: Ignore newlines in subtitle text (#2341). --- src/lib/render_text.cc | 1 + test/data | 2 +- test/render_subtitles_test.cc | 50 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) 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 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 += ""; diff --git a/test/data b/test/data index dab442170..b6d209730 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit dab44217068e681f3bfded6a8d71a54867b1cf9e +Subproject commit b6d209730b870fec225a375c9b19350cd7f6724d 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 #include +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 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 st; + for (auto i: ss) { + st.push_back({i, 0, make_shared("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) -- cgit v1.2.3