&& !to_boolean (me->get_property ("merge-differently-headed")))
merge_possible = false;
- merge_possible = merge_possible &&
- !(nu->get_property ("style") == ly_symbol2scm ("fa")
- && nd->get_property ("style") == ly_symbol2scm ("fa"));
-
+ if (merge_possible
+ && nu->get_property ("style") == ly_symbol2scm ("fa")
+ && nd->get_property ("style") == ly_symbol2scm ("fa"))
+ {
+ Interval uphead_size = nu->extent (nu, Y_AXIS);
+ Offset att = Offset (0.0, -1.0);
+ nu->set_property ("stem-attachment", ly_offset2scm (att));
+ nu->set_property ("transparent", SCM_BOOL_T);
+ }
/* Should never merge quarter and half notes, as this would make
them indistinguishable. */
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
save black_notehead_width, noteheight;
-save slash_thick, slash_slope, overdone_heads;
+save slash_thick, slash_slope, overdone_heads, solfa_noteheight;
numeric black_notehead_width, noteheight, slash_thick;
overdone_heads = 0.0;
noteheight# := staff_space# + (1 + overdone_heads) * stafflinethickness#;
+
+%
+% solfa heads should not overlap on chords.
+%
+solfa_noteheight# := staff_space# - stafflinethickness#;
+
define_pixels (slash_thick);
define_whole_vertical_pixels (noteheight);
path p_in, p_out;
pair left_dist, right_dist;
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
pickup pencircle scaled solfa_pen_thick;
save p_in, p_out;
path p_in, p_out;
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
pickup pencircle scaled solfa_pen_thick;
path path_out, path_in;
pair ne_dist, se_dist, ne, se;
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
pickup pencircle scaled solfa_pen_thick;
fet_beginchar ("Half mihead", "s1mi");
- draw_mi_head (1.6);
+ draw_mi_head (solfa_quarter_width);
fill path_out;
unfill path_in;
fet_endchar;
fet_beginchar ("Quart mihead", "s2mi");
- draw_mi_head (1.65);
+ draw_mi_head (solfa_quarter_width);
fill path_out;
fet_endchar;
def draw_fa_head (expr width_factor) =
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
save p_down_in, p_down_out, p_up_in, p_up_out, nw_dist, nw;
path p_down_in, p_down_out, p_up_in, p_up_out;
def draw_la_head (expr width_factor) =
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
save p_in, p_out;
path p_in, p_out;
def draw_ti_head (expr width_factor, dir) =
- set_char_box (0, width_factor * noteheight#,
- 0.5 noteheight#, 0.5 noteheight#);
+ set_char_box (0, width_factor * solfa_noteheight#,
+ 0.5 solfa_noteheight#, 0.5 solfa_noteheight#);
save p_in, p_out, p_top;
save nw_dist, sw_dist, nw, sw;
path p_in, p_out, p_top;