carsonip / Penguin-Subtitle-Player

An open-source, cross-platform standalone subtitle player
GNU General Public License v3.0
304 stars 37 forks source link

Problems with line breaks and HTML formatted text #78

Closed EmilJunker closed 3 years ago

EmilJunker commented 3 years ago

In principle, the Penguin Subtitle Player seems to support HTML formatted text, e.g. subtiles with <i> and </i> tags are rendered italic:

1
01:42:13,365 --> 01:42:21,723
- <i>This includes all the marine vessels.</i>

image

However, I have found that if there are two lines of text and only the second line contains HTML tags, then the tags are ignored and show up literally:

2
01:42:56,429 --> 01:43:02,198
- The war is over, my love. The war is gone.
- <i>This includes all the marine vessels.</i>

image

If the first line of text also contains HTML tags, then the formatting works, but the line break itself gets ignored:

3
01:43:09,731 --> 01:43:17,464
- The <i>war</i> is over, my love. The war is gone.
- <i>This includes all the marine vessels.</i>

image

The cause of these issues appears to be the line break. If a <br> tag is used instead of a real line break, then it works fine:

4
01:43:23,731 --> 01:43:30,464
- The war is over, my love. The war is gone.<br>- <i>This includes all the marine vessels.</i>

image

In fact, even if the <br> tag is then followed by a real line break, it still works:

5
01:43:38,139 --> 01:43:45,479
- The war is over, my love. The war is gone.<br>
- <i>This includes all the marine vessels.</i>

image

By the way, I took these screenshots on Windows 10 version 2004. I haven't tested this on other operating systems.


My suggestion to fix these issues would be as follows: While parsing the .srt file, whenever you encounter a line break (inside a subtitle text block) that isn't already preceded by a <br> tag, simply insert a <br> tag right before it. What do you think? Would that be possible?

carsonip commented 3 years ago

Thanks for reporting this issue. It is a good find. The html processing is done by Qt label's rich text functionality, and it makes sense that once the text is identified as html, it ignores line breaks. So I agree with your suggestion about adding
for line breaks in subtitle files mixing html and line breaks.

sergeevabc commented 3 years ago

@carsonip, err… is this already done?

carsonip commented 3 years ago

It is now fixed. Please wait for the next release.