]> git.donarmstrong.com Git - lilypond.git/commitdiff
* lily/coherent-ligature-engraver.cc: fixed typo
authorJürgen Reuter <j@web.de>
Tue, 13 May 2003 21:04:05 +0000 (21:04 +0000)
committerJürgen Reuter <j@web.de>
Tue, 13 May 2003 21:04:05 +0000 (21:04 +0000)
* 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

14 files changed:
ChangeLog
lily/coherent-ligature-engraver.cc
lily/gregorian-ligature-engraver.cc
lily/include/ligature-engraver.hh
lily/include/ligature-head.hh [deleted file]
lily/ligature-bracket-engraver.cc
lily/ligature-engraver.cc
lily/ligature-head.cc [deleted file]
lily/mensural-ligature-engraver.cc
lily/note-heads-engraver.cc
lily/vaticana-ligature-engraver.cc
lily/vaticana-ligature.cc
ly/gregorian-init.ly
scm/grob-description.scm

index 48a4d3ddac0b94a3944379d226a516ebd283a3b1..ab338adef50fbc12b0815b4df538f6f9d6f4b3ed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,27 @@
+2003-05-13  Juergen Reuter  <reuter@ipd.uka.de>
+
+       * 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  <reuter@ipd.uka.de>
 
        * lily/coherent-ligature-engraver.cc,
index 091403154ec68cf04395189e597533e3f267b854..b898920950f73184e5873ea0be370ec4dc1dec78 100644 (file)
@@ -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<Grob_info>)
 void
 Coherent_ligature_engraver::build_ligature (Spanner *, Array<Grob_info>)
 {
-  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 */       "");
index 482b60ba718b0b47c54d55dabd6c676d3de8d3e6..ca09fe88fb363b48acade31ca3de7e42cbb45fea 100644 (file)
@@ -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 */       "");
index 137d94688ccdb487f89973e603bf4a7627775164..5c246ce4f6d0f6b61ef66057b586172d0cc1c329 100644 (file)
@@ -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 (file)
index f5ca384..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-  ligature-head.hh -- part of GNU LilyPond
-
-  (c)  2002--2003 Juergen Reuter <reuter@ipd.uka.de>
-*/
-
-#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
-
index 8f1c18a50b6524cfa1fffcd26fee190584b93161..72310f39f06a668cd31f35903dc662b9df1a1246 100644 (file)
@@ -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 */       "");
index 3e15bbf5f571fc11d946f3b08582041e6eaae112..dfcb323ee9a81b0e80fdd04d89f49ee35f44a5f0 100644 (file)
@@ -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 (file)
index ff90c14..0000000
+++ /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 <reuter@ipd.uka.de>
-*/
-
-#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");
index 913580a2d34e407add6760056a64e21f1582ff1f..3674775cda450e65384ba4beccd264180b3cb85a 100644 (file)
@@ -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 */       "");
index be672cb34a5e46d2b4c91a852e11b4b980ea7d1a..55e20f8a6e3bd16597e86f5f5013d091fd857e87 100644 (file)
   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<Item> 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",
index 5c00edafa2dcac8e545cac1b0dd6eae3f8302bc1..22c05494c16813fd9aa284acec7f9bf35bff4616 100644 (file)
@@ -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 */       "");
index bd2da97fb7a61713e094eb30cb6371945c90eb82..58b8492402825de529f94e0cfea3ba96b53963af 100644 (file)
  */
 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
     {
index 8dfcde6751c48a35032d77a2393ddc2af06dbe13..83b6df6a320d0d6ba116c42cc6642b5944e93206 100644 (file)
@@ -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
index 875a60bf83130b5122e263099ebf1d476bbc755a..eb9fd179e1a05623e36321bb5e525b282ce4c383 100644 (file)
        (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))
        (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)
        (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))))
        ))
 
      . (
        (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)
        (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