From: Jürgen Reuter Date: Tue, 13 May 2003 21:04:05 +0000 (+0000) Subject: * lily/coherent-ligature-engraver.cc: fixed typo X-Git-Tag: release/1.7.20~61 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=527f75649e7c6a1a45af5b3aa933885033d773eb;p=lilypond.git * lily/coherent-ligature-engraver.cc: fixed typo * lily/coherent-ligature-engraver.cc, lily/gregorian-ligature-engraver.cc, lily/ligature-bracket-engraver.cc, lily/ligature-engraver.cc, lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc, lily/vaticana-ligature-engraver.cc, lily/include/ligature-engraver.hh, ly/gregorian-init.ly, scm/grob-description.scm: cleanup: junked LigatureHead grob and removed all ligature specific stuff from NoteHead code * lily/ligature-head.cc, lily/include/ligature-head.hh: removed; ligatures now use regular noteheads * lily/vaticana-ligature.cc: tiny code cleanups * lily/vaticana-ligature-engraver.cc: bugfix: insert additional space between two adjacent noteheads of the same pitch * scm/grob-description.scm: bugfix: VaticanaLigature: interface description; cleanup: removed obsolete font-family settings --- diff --git a/ChangeLog b/ChangeLog index 48a4d3ddac..ab338adef5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2003-05-13 Juergen Reuter + + * lily/coherent-ligature-engraver.cc: fixed typo + + * lily/coherent-ligature-engraver.cc, + lily/gregorian-ligature-engraver.cc, + lily/ligature-bracket-engraver.cc, lily/ligature-engraver.cc, + lily/mensural-ligature-engraver.cc, lily/note-heads-engraver.cc, + lily/vaticana-ligature-engraver.cc, + lily/include/ligature-engraver.hh, ly/gregorian-init.ly, + scm/grob-description.scm: cleanup: junked LigatureHead grob and + removed all ligature specific stuff from NoteHead code + + * lily/ligature-head.cc, lily/include/ligature-head.hh: removed; + ligatures now use regular noteheads + + * lily/vaticana-ligature.cc: tiny code cleanups + + * lily/vaticana-ligature-engraver.cc: bugfix: insert additional + space between two adjacent noteheads of the same pitch + + * scm/grob-description.scm: bugfix: VaticanaLigature: interface + description; cleanup: removed obsolete font-family settings + 2003-05-11 Juergen Reuter * lily/coherent-ligature-engraver.cc, diff --git a/lily/coherent-ligature-engraver.cc b/lily/coherent-ligature-engraver.cc index 091403154e..b898920950 100644 --- a/lily/coherent-ligature-engraver.cc +++ b/lily/coherent-ligature-engraver.cc @@ -50,9 +50,8 @@ * any further accidental for that pitch within that ligature * (actually, in such a case, the user should split the ligature into * two separate ligatures). Similarly, any object that, in ordinary - * notation, may be put to the left or to the right of a - * note-head/ligature-head, should be collected and put before or - * after the ligature. + * notation, may be put to the left or to the right of a note-head, + * should be collected and put before or after the ligature. * * TODO: make spacing more robust: do not screw up spacing if user * erroneously puts rest in ligature. @@ -173,7 +172,7 @@ Coherent_ligature_engraver::collect_accidentals (Spanner *, Array) void Coherent_ligature_engraver::build_ligature (Spanner *, Array) { - programming_error ("Cohrent_ligature_engraver::build_ligature (): " + programming_error ("Coherent_ligature_engraver::build_ligature (): " "this is an abstract method that should not be called, " "but overridden by a subclass"); } @@ -197,6 +196,6 @@ ENTER_DESCRIPTION (Coherent_ligature_engraver, /* descr */ "This is an abstract class. Subclasses such as Gregorian_ligature_engraver handle ligatures by glueing special ligature heads together.", /* creats*/ "", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface note-head-interface rest-interface", +/* acks */ "note-head-interface rest-interface", /* reads */ "", /* write */ ""); diff --git a/lily/gregorian-ligature-engraver.cc b/lily/gregorian-ligature-engraver.cc index 482b60ba71..ca09fe88fb 100644 --- a/lily/gregorian-ligature-engraver.cc +++ b/lily/gregorian-ligature-engraver.cc @@ -275,6 +275,6 @@ ENTER_DESCRIPTION (Gregorian_ligature_engraver, /* descr */ "This is an abstract class. Subclasses such as Vaticana_ligature_engraver handle ligatures by glueing special ligature heads together.", /* creats*/ "", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface note-head-interface rest-interface", +/* acks */ "note-head-interface rest-interface", /* reads */ "", /* write */ ""); diff --git a/lily/include/ligature-engraver.hh b/lily/include/ligature-engraver.hh index 137d94688c..5c246ce4f6 100644 --- a/lily/include/ligature-engraver.hh +++ b/lily/include/ligature-engraver.hh @@ -46,6 +46,8 @@ private: Grob *last_bound_; + void override_molecule_callback (); + void revert_molecule_callback (); }; #endif // LIGATURE_ENGRAVER_HH diff --git a/lily/include/ligature-head.hh b/lily/include/ligature-head.hh deleted file mode 100644 index f5ca384cdd..0000000000 --- a/lily/include/ligature-head.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - ligature-head.hh -- part of GNU LilyPond - - (c) 2002--2003 Juergen Reuter -*/ - -#ifndef LIGATURE_HEAD_HH -#define LIGATURE_HEAD_HH - -#include "lily-guile.hh" -#include "molecule.hh" - -/** ball within a ligature. Also takes care of ledger lines. - - LigatureHead is a kind of RhythmicHead, see there. - - Read-only: -*/ - -class Ligature_head -{ -public: - DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM )); - static bool has_interface (Grob*); - -}; -#endif // LIGATURE_HEAD_HH - diff --git a/lily/ligature-bracket-engraver.cc b/lily/ligature-bracket-engraver.cc index 8f1c18a50b..72310f39f0 100644 --- a/lily/ligature-bracket-engraver.cc +++ b/lily/ligature-bracket-engraver.cc @@ -66,6 +66,6 @@ ENTER_DESCRIPTION(Ligature_bracket_engraver, /* descr */ "Handles Ligature_events by engraving Ligature brackets.", /* creats*/ "TupletBracket", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface rest-interface note-column-interface", +/* acks */ "rest-interface note-column-interface", /* reads */ "", /* write */ ""); diff --git a/lily/ligature-engraver.cc b/lily/ligature-engraver.cc index 3e15bbf5f5..dfcb323ee9 100644 --- a/lily/ligature-engraver.cc +++ b/lily/ligature-engraver.cc @@ -7,12 +7,12 @@ */ #include "ligature-engraver.hh" -#include "ligature-head.hh" #include "spanner.hh" #include "score-engraver.hh" #include "note-head.hh" #include "rest.hh" #include "warn.hh" +#include "translator-group.hh" /* * This abstract class provides the general framework for ligatures of @@ -103,29 +103,78 @@ Ligature_engraver::create_ligature_spanner () return 0; } +/* + * This method should do something that comes close to the following + * .ly snippet: + * + * \property Voice.NoteHead \override #'molecule-callback = + * < value of #'ligature-primitive-callback of Voice.NoteHead > + * + * TODO: What we are doing here on the c++ level, should actually be + * performed on the SCM level. However, I do not know how to teach + * lilypond to apply an \override and \revert on #'molecule-callback, + * whenever lily encounters a \[ and \] in an .ly file, respectively. + * Also encounter, that lily should not crash if a user erronously + * nests \[ and \]. + */ +void +Ligature_engraver::override_molecule_callback () +{ + SCM symbol = ly_symbol2scm ("NoteHead"); + SCM target_callback = ly_symbol2scm ("molecule-callback"); + SCM source_callback = ly_symbol2scm ("ligature-primitive-callback"); + SCM noteHeadProperties = daddy_trans_->get_property ("NoteHead"); + SCM value = ly_cdr (scm_sloppy_assq (source_callback, noteHeadProperties)); + daddy_trans_->execute_single_pushpop_property (symbol, target_callback, value); +} + +/* + * This method should do something that comes close to the following + * .ly snippet: + * + * \property Voice.NoteHead \revert #'molecule-callback + * + * TODO: What we are doing here on the c++ level, should actually be + * performed on the SCM level. However, I do not know how to teach + * lilypond to apply an \override and \revert on #'molecule-callback, + * whenever lily encounters a \[ and \] in an .ly file, respectively. + * Also encounter, that lily should not crash if a user erronously + * nests \[ and \]. + */ +void +Ligature_engraver::revert_molecule_callback () +{ + SCM symbol = ly_symbol2scm ("NoteHead"); + SCM key = ly_symbol2scm ("molecule-callback"); + daddy_trans_->execute_single_pushpop_property (symbol, key, SCM_UNDEFINED); +} + void Ligature_engraver::process_music () { if (reqs_drul_[STOP]) { if (!ligature_) - reqs_drul_[STOP]->origin ()->warning (_ ("can't find start of ligature")); + { + reqs_drul_[STOP]->origin ()->warning (_ ("can't find start of ligature")); + return; + } + + if (!last_bound_) + { + reqs_drul_[STOP]->origin ()->warning (_ ("no right bound")); + } else { - if (!last_bound_) - { - reqs_drul_[STOP]->origin ()->warning (_ ("no right bound")); - } - else - { - ligature_->set_bound (RIGHT, last_bound_); - } + ligature_->set_bound (RIGHT, last_bound_); } + prev_start_req_ = 0; finished_primitives_ = primitives_; finished_ligature_ = ligature_; primitives_.clear (); ligature_ = 0; + revert_molecule_callback (); } last_bound_ = unsmob_grob (get_property ("currentMusicalColumn")); @@ -134,6 +183,7 @@ Ligature_engraver::process_music () // TODO: maybe forbid breaks only if not transcribing top_engraver ()->forbid_breaks (); } + if (reqs_drul_[START]) { if (ligature_) @@ -164,6 +214,7 @@ Ligature_engraver::process_music () ligature_start_mom_ = now_mom (); announce_grob(ligature_, reqs_drul_[START]->self_scm()); + override_molecule_callback (); } } @@ -223,13 +274,10 @@ Ligature_engraver::acknowledge_grob (Grob_info info) if (Note_head::has_interface (info.grob_)) { primitives_.push (info); - } - if (Ligature_head::has_interface (info.grob_)) - { - info.grob_->set_grob_property ("ligature-primitive-callback", + info.grob_->set_grob_property ("molecule-callback", brew_ligature_primitive_proc); } - else if (Rest::has_interface (info.grob_)) + if (Rest::has_interface (info.grob_)) { info.music_cause ()->origin ()->warning (_ ("ligature may not contain rest; ignoring rest")); prev_start_req_->origin ()->warning (_ ("ligature was started here")); @@ -243,6 +291,6 @@ ENTER_DESCRIPTION (Ligature_engraver, /* descr */ "Abstract class; a concrete subclass handles Ligature_events by engraving Ligatures in a concrete style.", /* creats */ "", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface rest-interface", +/* acks */ "note-head-interface rest-interface", /* reads */ "", /* write */ ""); diff --git a/lily/ligature-head.cc b/lily/ligature-head.cc deleted file mode 100644 index ff90c1414b..0000000000 --- a/lily/ligature-head.cc +++ /dev/null @@ -1,42 +0,0 @@ -/* - ligature-head.cc -- implement Ligature_head - - source file of the GNU LilyPond music typesetter - - (c) 2002--2003 Juergen Reuter -*/ - -#include "ligature-head.hh" -#include "item.hh" -#include "note-head.hh" -#include "warn.hh" - -/* - * TODO: in scm/grob-description.scm, LigatureHead must contain value - * "rhythmic-head-interface" in the interfaces list. Otherwise, text - * scripts (such as fermata) are horizontally aligned with the end of - * the ligature rather than with the associated head. Why? - */ -MAKE_SCHEME_CALLBACK (Ligature_head,brew_molecule,1); -SCM -Ligature_head::brew_molecule (SCM smob) -{ - Grob *me = unsmob_grob (smob); - SCM brew_ligature_primitive_proc = - me->get_grob_property ("ligature-primitive-callback"); - if (brew_ligature_primitive_proc != SCM_EOL) - { - return gh_call1 (brew_ligature_primitive_proc, smob); - } - else - { - warning ("Ligature_head: ligature-primitive-callback undefined -> resorting to Note_head::brew_molecule"); - return Note_head::brew_molecule (smob); - } -} - -/* - UGH primitive is only used within the engraver. -*/ -ADD_INTERFACE (Ligature_head,"ligature-head-interface","Ligature head", - "primitive ligature-primitive-callback thickness flexa-width head-width delta-pitch join-left"); diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc index 913580a2d3..3674775cda 100644 --- a/lily/mensural-ligature-engraver.cc +++ b/lily/mensural-ligature-engraver.cc @@ -334,17 +334,17 @@ void set_delta_pitch (Item *primitive, Grob_info info1, Grob_info info2) } /* - * A MensuralLigature grob consists of a bunch of LigatureHead grobs - * that are glued together. It (a) does not make sense to change + * A MensuralLigature grob consists of a bunch of NoteHead grobs that + * are glued together. It (a) does not make sense to change * properties like thickness or flexa-width from one head to the next * within a ligature (this would totally screw up alignment), and (b) * some of these properties (like flexa-width) are specific to * e.g. the MensuralLigature (as in contrast to e.g. LigatureBracket), - * and therefore should not be handled in the generic LigatureHead - * (which is also used by LigatureBracket). Therefore, we let the - * user control these properties via the concrete Ligature grob (like + * and therefore should not be handled in the NoteHead code (which is + * also used by LigatureBracket). Therefore, we let the user control + * these properties via the concrete Ligature grob (like * MensuralLigature) and then copy these properties as necessary to - * each of the LigatureHead grobs. This is what + * each of the NoteHead grobs. This is what * propagate_properties() does. */ void @@ -470,6 +470,6 @@ ENTER_DESCRIPTION (Mensural_ligature_engraver, /* descr */ "Handles Mensural_ligature_events by glueing special ligature heads together.", /* creats*/ "MensuralLigature", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface note-head-interface rest-interface", +/* acks */ "note-head-interface rest-interface", /* reads */ "", /* write */ ""); diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index be672cb34a..55e20f8a6e 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -19,14 +19,6 @@ make balls and rests */ -/* - * TODO: junk bool in_ligature (and all the messy code around it). - * This can be done by also junking LigatureHead in - * scm/grob-description.scm. Instead, NoteHead should be used - * throughout typesetting of ligatures; ligature-(start/stop)-events - * should simply modify NoteHead properties values of - * molecule-callback ligature-primitive-callback. --jr - */ class Note_heads_engraver : public Engraver { Link_array notes_; @@ -43,14 +35,10 @@ protected: virtual void process_music (); virtual void stop_translation_timestep (); - -private: - bool in_ligature; }; Note_heads_engraver::Note_heads_engraver() { - in_ligature = 0; } bool @@ -63,19 +51,6 @@ Note_heads_engraver::try_music (Music *m) } else if (m->is_mus_type ("busy-playing-event")) return note_reqs_.size (); - else if (m->is_mus_type ("abort-event")) - { - in_ligature = 0; - } - else if (m->is_mus_type ("ligature-event")) - { - /* - Urg ; this is not protocol. We should accept and return - true, or ignore. - */ - in_ligature = (to_dir (m->get_mus_property("span-direction")) == START); - return false; - } return false; } @@ -86,8 +61,7 @@ Note_heads_engraver::process_music () { for (int i=0; i < note_reqs_.size (); i++) { - Item *note = - new Item (get_property ((in_ligature) ? "LigatureHead" : "NoteHead")); + Item *note = new Item (get_property ("NoteHead")); Music * req = note_reqs_[i]; @@ -146,8 +120,8 @@ Note_heads_engraver::start_translation_timestep () ENTER_DESCRIPTION(Note_heads_engraver, -/* descr */ "Generate noteheads (also serves a double functions: makes ligatures.", -/* creats*/ "NoteHead LigatureHead Dots", +/* descr */ "Generate noteheads.", +/* creats*/ "NoteHead Dots", /* accepts */ "note-event busy-playing-event ligature-event abort-event", /* acks */ "", /* reads */ "centralCPosition", diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc index 5c00edafa2..22c05494c1 100644 --- a/lily/vaticana-ligature-engraver.cc +++ b/lily/vaticana-ligature-engraver.cc @@ -151,6 +151,14 @@ Vaticana_ligature_engraver::finish_primitive (Item *first_primitive, */ next_distance += 2 * join_thickness; } + else if (pitch_delta == 0) + { + /* + * Make a small space between two adjacent notes with the + * same pitch. + */ + next_distance += 2 * join_thickness; + } /* * Horizontally line-up this head to form a ligature. @@ -356,6 +364,6 @@ ENTER_DESCRIPTION (Vaticana_ligature_engraver, /* descr */ "Handles ligatures by glueing special ligature heads together.", /* creats*/ "VaticanaLigature", /* accepts */ "ligature-event abort-event", -/* acks */ "ligature-head-interface note-head-interface rest-interface", +/* acks */ "note-head-interface rest-interface", /* reads */ "", /* write */ ""); diff --git a/lily/vaticana-ligature.cc b/lily/vaticana-ligature.cc index bd2da97fb7..58b8492402 100644 --- a/lily/vaticana-ligature.cc +++ b/lily/vaticana-ligature.cc @@ -23,25 +23,52 @@ */ Molecule vaticana_brew_flexa (Grob *me, - Real interval, bool solid, - Real width, Real thickness, - bool add_stem, Direction stem_direction) { + Real staff_space = Staff_symbol_referencer::staff_space (me); + Molecule molecule = Molecule (); + Real right_height = 0.6 * staff_space; + + Real interval; + SCM flexa_height_scm = me->get_grob_property ("flexa-height"); + if (flexa_height_scm != SCM_EOL) + { + interval = gh_scm2int (flexa_height_scm); + } + else + { + me->warning ("Vaticana_ligature: " + "flexa-height undefined; assuming 0"); + interval = 0.0; + } + if (interval >= 0.0) { me->warning (_ ("ascending vaticana style flexa")); } - Real space = Staff_symbol_referencer::staff_space (me); - Molecule molecule = Molecule (); - Real right_height = 0.6 * space; + Real width; + SCM flexa_width_scm = me->get_grob_property ("flexa-width"); + if (flexa_width_scm != SCM_EOL) + { + width = gh_scm2double (flexa_width_scm); + } + else + { + me->warning ("Vaticana_ligature:" + "flexa-width undefined; assuming 2.0"); + width = 2.0 * staff_space; + } + + bool add_stem = to_boolean (me->get_grob_property ("add-stem")); // Compensate thickness that appears to be smaller in steep section // of bend. - Real left_height = right_height + min (0.12 * abs(interval), 0.3) * space; + Real left_height = + right_height + + min (0.12 * abs(interval), 0.3) * staff_space; if (add_stem) { @@ -53,13 +80,13 @@ vaticana_brew_flexa (Grob *me, if (consider_interval) { - Real y_length = max (abs(interval)/2.0*space + + Real y_length = max (abs(interval)/2.0*staff_space + (right_height-left_height), - 1.2*space); + 1.2*staff_space); stem_box_y = Interval (0, y_length); } else - stem_box_y = Interval (0, space); + stem_box_y = Interval (0, staff_space); Real y_correction = (stem_direction == UP) ? @@ -74,9 +101,9 @@ vaticana_brew_flexa (Grob *me, // Compensate optical illusion regarding vertical position of left // and right endings due to curved shape. - Real ypos_correction = -0.1*space * sign(interval); - Real interval_correction = 0.2*space * sign(interval); - Real corrected_interval = interval*space + interval_correction; + Real ypos_correction = -0.1*staff_space * sign(interval); + Real interval_correction = 0.2*staff_space * sign(interval); + Real corrected_interval = interval*staff_space + interval_correction; // middle curve of flexa shape Bezier curve; @@ -210,33 +237,7 @@ vaticana_brew_primitive (Grob *me, bool ledger_take_space) if (!String::compare (glyph_name, "flexa")) { - SCM flexa_height_scm = me->get_grob_property ("flexa-height"); - if (flexa_height_scm != SCM_EOL) - { - flexa_height = gh_scm2int (flexa_height_scm); - } - else - { - me->warning ("Vaticana_ligature: " - "flexa-height undefined; assuming 0"); - } - - Real flexa_width; - SCM flexa_width_scm = me->get_grob_property ("flexa-width"); - if (flexa_width_scm != SCM_EOL) - { - flexa_width = gh_scm2double (flexa_width_scm); - } - else - { - me->warning ("Vaticana_ligature:" - "flexa-width undefined; assuming 2.0"); - flexa_width = 2.0 * staff_space; - } - - bool add_stem = to_boolean (me->get_grob_property ("add-stem")); - out = vaticana_brew_flexa (me, flexa_height, true, - flexa_width, thickness, add_stem, DOWN); + out = vaticana_brew_flexa (me, true, thickness, DOWN); } else { diff --git a/ly/gregorian-init.ly b/ly/gregorian-init.ly index 8dfcde6751..83b6df6a32 100644 --- a/ly/gregorian-init.ly +++ b/ly/gregorian-init.ly @@ -8,31 +8,31 @@ % declare head prefix shortcuts % virga = - \once \property Voice.LigatureHead \override #'virga = ##t + \once \property Voice.NoteHead \override #'virga = ##t stropha = - \once \property Voice.LigatureHead \override #'stropha = ##t + \once \property Voice.NoteHead \override #'stropha = ##t inclinatum = - \once \property Voice.LigatureHead \override #'inclinatum = ##t + \once \property Voice.NoteHead \override #'inclinatum = ##t auctum = - \once \property Voice.LigatureHead \override #'auctum = ##t + \once \property Voice.NoteHead \override #'auctum = ##t aucta = - \once \property Voice.LigatureHead \override #'auctum = ##t + \once \property Voice.NoteHead \override #'auctum = ##t descendens = - \once \property Voice.LigatureHead \override #'descendens = ##t + \once \property Voice.NoteHead \override #'descendens = ##t ascendens = - \once \property Voice.LigatureHead \override #'ascendens = ##t + \once \property Voice.NoteHead \override #'ascendens = ##t pes = - \once \property Voice.LigatureHead \override #'pes-or-flexa = ##t + \once \property Voice.NoteHead \override #'pes-or-flexa = ##t flexa = - \once \property Voice.LigatureHead \override #'pes-or-flexa = ##t + \once \property Voice.NoteHead \override #'pes-or-flexa = ##t semivocalis = - \once \property Voice.LigatureHead \override #'semivocalis = ##t + \once \property Voice.NoteHead \override #'semivocalis = ##t oriscus = - \once \property Voice.LigatureHead \override #'oriscus = ##t + \once \property Voice.NoteHead \override #'oriscus = ##t quilisma = - \once \property Voice.LigatureHead \override #'quilisma = ##t + \once \property Voice.NoteHead \override #'quilisma = ##t deminutum = - \once \property Voice.LigatureHead \override #'deminutum = ##t + \once \property Voice.NoteHead \override #'deminutum = ##t % % declare divisiones shortcuts diff --git a/scm/grob-description.scm b/scm/grob-description.scm index 875a60bf83..eb9fd179e1 100644 --- a/scm/grob-description.scm +++ b/scm/grob-description.scm @@ -264,7 +264,6 @@ (neutral-direction . -1) (adjust-if-on-staffline . #t) (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (font-family . ancient) (space-alist . ( (first-note . (minimum-space . 0.0)) (right-edge . (extra-space . 0.1)) @@ -455,21 +454,6 @@ (meta . ((interfaces . (tuplet-bracket-interface spanner-interface)))) )) - (LigatureHead - . ( - (ligature-primitive-callback . ,Note_head::brew_molecule) - (molecule-callback . ,Ligature_head::brew_molecule) - (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) - (stem-attachment-function . ,note-head-style->attachment-coordinates) - (font-family . ancient) - (style . default) - (glyph-name-procedure . ,find-notehead-symbol) - (meta . ((interfaces . (ligature-head-interface rhythmic-head-interface - rhythmic-grob-interface - font-interface - note-head-interface staff-symbol-referencer-interface)))) - )) - (LyricHyphen . ( (thickness . 1.0) @@ -513,7 +497,6 @@ (flexa-width . 2.0) (ligature-primitive-callback . ,Mensural_ligature::brew_ligature_primitive) (molecule-callback . ,Mensural_ligature::brew_molecule) - (font-family . ancient) (meta . ((interfaces . (mensural-ligature-interface font-interface)))) )) @@ -604,6 +587,7 @@ . ( (style . default) (molecule-callback . ,Note_head::brew_molecule) + (ligature-primitive-callback . ,Note_head::brew_molecule) (glyph-name-procedure . ,find-notehead-symbol) (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) (stem-attachment-function . ,note-head-style->attachment-coordinates) @@ -1176,8 +1160,7 @@ (flexa-width . 2.0) (ligature-primitive-callback . ,Vaticana_ligature::brew_ligature_primitive) (molecule-callback . ,Vaticana_ligature::brew_molecule) - (font-family . ancient) - (meta . ((interfaces . (mensural-ligature-interface font-interface)))) + (meta . ((interfaces . (vaticana-ligature-interface font-interface)))) )) (VoltaBracket