summaryrefslogtreecommitdiff
path: root/src/subtitle_asset.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-12-15 22:58:21 +0100
committerCarl Hetherington <cth@carlh.net>2019-12-22 01:21:00 +0100
commitdd0db15b82a0b40b1271bad122c874d458c0fef4 (patch)
tree201b4efac6915353e9635f230b3a08297be87dd7 /src/subtitle_asset.cc
parent82c72bf1a25891d5053b7b4fb1f7d2bab9d7fd13 (diff)
Add fix_empty_font_ids() to replace empty Font ids with a dummy string.
Diffstat (limited to 'src/subtitle_asset.cc')
-rw-r--r--src/subtitle_asset.cc40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/subtitle_asset.cc b/src/subtitle_asset.cc
index bb7b0b1c..083a8040 100644
--- a/src/subtitle_asset.cc
+++ b/src/subtitle_asset.cc
@@ -1,5 +1,5 @@
/*
- Copyright (C) 2012-2018 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2012-2019 Carl Hetherington <cth@carlh.net>
This file is part of libdcp.
@@ -40,6 +40,7 @@
#include "subtitle_string.h"
#include "subtitle_image.h"
#include "dcp_assert.h"
+#include "load_font_node.h"
#include <asdcp/AS_DCP.h>
#include <asdcp/KM_util.h>
#include <libxml++/nodes/element.h>
@@ -655,3 +656,40 @@ SubtitleAsset::fonts_with_load_ids () const
}
return out;
}
+
+/** Replace empty IDs in any <LoadFontId> and <Font> tags with
+ * a dummy string. Some systems give errors with empty font IDs
+ * (see DCP-o-matic bug #1689).
+ */
+void
+SubtitleAsset::fix_empty_font_ids ()
+{
+ bool have_empty = false;
+ list<string> ids;
+ BOOST_FOREACH (shared_ptr<LoadFontNode> i, load_font_nodes()) {
+ if (i->id == "") {
+ have_empty = true;
+ } else {
+ ids.push_back (i->id);
+ }
+ }
+
+ if (!have_empty) {
+ return;
+ }
+
+ string const empty_id = unique_string (ids, "font");
+
+ BOOST_FOREACH (shared_ptr<LoadFontNode> i, load_font_nodes()) {
+ if (i->id == "") {
+ i->id = empty_id;
+ }
+ }
+
+ BOOST_FOREACH (shared_ptr<Subtitle> i, _subtitles) {
+ shared_ptr<SubtitleString> j = dynamic_pointer_cast<SubtitleString> (i);
+ if (j && j->font() && j->font().get() == "") {
+ j->set_font (empty_id);
+ }
+ }
+}