X-Git-Url: https://git.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fdcp_content.cc;h=2e89adff0421d43228afa5698557fb1327a425d7;hp=f8639cef9cc187f7ed2b35bc2821d955329be0e9;hb=8b9888ed8247109dc3c09492302e865fa4731460;hpb=5a5f6d3ac42668017141469fd0e5cd14e3bebe88 diff --git a/src/lib/dcp_content.cc b/src/lib/dcp_content.cc index f8639cef9..2e89adff0 100644 --- a/src/lib/dcp_content.cc +++ b/src/lib/dcp_content.cc @@ -268,6 +268,7 @@ DCPContent::examine (shared_ptr film, shared_ptr job) for (int i = 0; i < examiner->text_count(TextType::OPEN_SUBTITLE); ++i) { auto c = make_shared(this, TextType::OPEN_SUBTITLE, TextType::OPEN_SUBTITLE); c->set_language (examiner->open_subtitle_language()); + add_fonts_from_examiner(c, examiner->fonts()); new_text.push_back (c); } @@ -820,3 +821,41 @@ DCPContent::resolution () const return Resolution::TWO_K; } + +void +add_fonts_from_examiner(shared_ptr text, vector>> const & all_fonts) +{ + int reel_number = 0; + for (auto reel_fonts: all_fonts) { + for (auto font: reel_fonts) { + /* Each reel could have its own font with the same ID, so we disambiguate them here + * by prepending the reel number. We do the same disambiguation when emitting the + * subtitles in the DCP decoder. + */ + font->set_id(id_for_font_in_reel(font->id(), reel_number)); + text->add_font(font); + } + ++reel_number; + } + +} + + +string +id_for_font_in_reel(string id, int reel) +{ + return String::compose("%1_%2", reel, id); +} + + +void +DCPContent::check_font_ids() +{ + if (text.empty()) { + return; + } + + DCPExaminer examiner(shared_from_this(), true); + add_fonts_from_examiner(text.front(), examiner.fonts()); +} +