From 59f07d959514b80fcce5aa99f575ef8e6fceba8b Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sat, 2 Jul 2016 22:20:54 +0100 Subject: Fix thinkos with marked_up() rendering of bold/italic/underline. --- ChangeLog | 2 ++ src/lib/render_subtitles.cc | 6 +++--- test/render_subtitles_test.cc | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 32e881fec..ad6964273 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2016-07-02 Carl Hetherington + * Fix problems with markup in subrip/SSA/ASS. + * Updated ru_RU translation from Igor Voytovich. * Updated uk_UA translation from Igor Voytovich. diff --git a/src/lib/render_subtitles.cc b/src/lib/render_subtitles.cc index fea788a5c..782d06532 100644 --- a/src/lib/render_subtitles.cc +++ b/src/lib/render_subtitles.cc @@ -52,6 +52,7 @@ marked_up (list subtitles) bool bold = false; bool underline = false; BOOST_FOREACH (dcp::SubtitleString const & i, subtitles) { + if (i.italic() && !italic) { out += ""; } @@ -61,9 +62,6 @@ marked_up (list subtitles) if (i.underline() && !underline) { out += ""; } - - out += i.text (); - if (!i.underline() && underline) { out += ""; } @@ -77,6 +75,8 @@ marked_up (list subtitles) italic = i.italic (); bold = i.bold (); underline = i.underline (); + + out += i.text (); } if (underline) { diff --git a/test/render_subtitles_test.cc b/test/render_subtitles_test.cc index c56f9dfa1..9ab4f5deb 100644 --- a/test/render_subtitles_test.cc +++ b/test/render_subtitles_test.cc @@ -82,3 +82,22 @@ BOOST_AUTO_TEST_CASE (render_markup_test4) add (s, "Hello", true, true, true); BOOST_CHECK_EQUAL (marked_up (s), "Hello"); } + +/** Test marked_up() in render_subtitles.cc */ +BOOST_AUTO_TEST_CASE (render_markup_test5) +{ + std::list s; + add (s, "Hello", false, true, false); + add (s, " world.", false, false, false); + BOOST_CHECK_EQUAL (marked_up (s), "Hello world."); +} + +/** Test marked_up() in render_subtitles.cc */ +BOOST_AUTO_TEST_CASE (render_markup_test6) +{ + std::list s; + add (s, "Hello", true, false, false); + add (s, " world ", false, false, false); + add (s, "we are bold.", false, true, false); + BOOST_CHECK_EQUAL (marked_up (s), "Hello world we are bold."); +} -- cgit v1.2.3