void
-TextDecoder::emit_plain_start (ContentTime from, vector<dcp::SubtitleString> subtitles)
+TextDecoder::emit_plain_start (ContentTime from, vector<dcp::SubtitleString> subtitles, dcp::Standard valign_standard)
{
vector<StringText> string_texts;
for (auto& subtitle: subtitles) {
- auto string_text = StringText(subtitle, content()->outline_width(), subtitle.font() ? content()->get_font(*subtitle.font()) : shared_ptr<Font>());
+ auto string_text = StringText(
+ subtitle,
+ content()->outline_width(),
+ subtitle.font() ? content()->get_font(*subtitle.font()) : shared_ptr<Font>(),
+ valign_standard
+ );
string_text.set_text(escape_text(string_text.text()));
set_forced_appearance(content(), string_text);
string_texts.push_back(string_text);
switch (line.vertical_position.reference.get_value_or(sub::BOTTOM_OF_SCREEN)) {
case sub::BOTTOM_OF_SCREEN:
case sub::TOP_OF_SUBTITLE:
- /* This 1.015 is an arbitrary value to lift the bottom sub off the bottom
+ /* This 0.9 is an arbitrary value to lift the bottom sub off the bottom
of the screen a bit to a pleasing degree.
*/
- v_position = 1.015 -
+ v_position = 0.9 -
(1 + bottom_line.get() - line.vertical_position.line.get()) * multiplier;
v_align = dcp::VAlign::TOP;
0
);
- auto string_text = StringText(dcp_subtitle, content()->outline_width(), content()->get_font(block.font.get_value_or("")));
+ auto string_text = StringText(
+ dcp_subtitle,
+ content()->outline_width(),
+ content()->get_font(block.font.get_value_or("")),
+ dcp::Standard::SMPTE
+ );
set_forced_appearance(content(), string_text);
string_texts.push_back(string_text);
}
void
-TextDecoder::emit_plain (ContentTimePeriod period, vector<dcp::SubtitleString> subtitles)
+TextDecoder::emit_plain (ContentTimePeriod period, vector<dcp::SubtitleString> subtitles, dcp::Standard valign_standard)
{
- emit_plain_start (period.from, subtitles);
+ emit_plain_start (period.from, subtitles, valign_standard);
emit_stop (period.to);
}