+
+void
+Dynamic_engraver::acknowledge_script (Grob_info info)
+{
+ if (!line_spanner_ || !script_)
+ return;
+
+ SCM p = info.grob ()->get_property ("script-priority");
+
+ /*
+ UGH.
+
+ DynamicText doesn't really have a script-priority field.
+ */
+ if (scm_is_number (p)
+ && scm_to_int (p)
+ < scm_to_int (script_->get_property ("script-priority")))
+ Side_position_interface::add_support (line_spanner_, info.grob ());
+}
+
+ADD_ACKNOWLEDGER (Dynamic_engraver, accidental);
+ADD_ACKNOWLEDGER (Dynamic_engraver, script);
+ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
+ADD_ACKNOWLEDGER (Dynamic_engraver, slur);
+ADD_ACKNOWLEDGER (Dynamic_engraver, stem_tremolo);
+
+ADD_TRANSLATOR (Dynamic_engraver,
+ /* doc */
+ "This engraver creates hairpins, dynamic texts, and their vertical\n"
+ "alignments. The symbols are collected onto a DynamicLineSpanner grob\n"
+ "which takes care of vertical positioning. ",
+
+ /* create */ "DynamicLineSpanner DynamicText Hairpin TextSpanner",
+ /* accept */ "absolute-dynamic-event crescendo-event decrescendo-event",
+ /* read */ "",
+ /* write */ "");