Hi David!
Sigh. Why do you use set_empty _after_ translation? That makes the remaining point stick out from the actual glyph. And of course, it totally moots any effect of set_empty before translation.
It does not matter where set_empty is used, it does not have the desired effect. I tried a lot of possible places and combinations. See comments in the following snippet: Stencil total; for (int i = 0; i < hyphens; i++) { Stencil ds = dash_stencil; ds.translate_axis (span_points[LEFT] + start_space + i * (dash_period + dash_length), X_AXIS); total.add_stencil (ds); if (whiteout > 0.0 ) { // A markup property whiteout-markup-wzd is implemented. // The following definition is used for that property: // \markup { \with-dimensions #'(0 . 0) #'(0 . 0) { // \filled-box #'(0.0 . 1.0) #'(-0.5 . 0.5) #0.0 } } SCM properties = Font_interface::text_font_alist_chain (me); SCM ws_zd_mod = Text_interface::interpret_markup ( me->layout ()->self_scm (), properties, me->get_property ("whiteout-markup-wzd")); Stencil wsa = *unsmob<Stencil> (ws_zd_mod); // The following three lines should give an equivalent definition: Box wb (Interval (0.0, 1.0), Interval (-0.5, 0.5)); Stencil wsb (Lookup::round_filled_box (wb, 0)); wsb.set_empty(false); Stencil wos; // If this definition of wos is used everything works as intended, // collsion detection ignores wos: wos = wsa.in_color (1.0, 0, 0); // If this definition is used, collision detection does _not_ ignore // wos but moves the last lyric line in the testfile down: // // wos = wsb.in_color (1.0, 0, 0); Real xscale = (dash_stencil.extent (X_AXIS).length () + 2 * whiteout * lt); Real yscale = (dash_stencil.extent (Y_AXIS).length () + 2 * whiteout * lt); wos.scale(xscale,yscale); wos.translate_axis (span_points[LEFT] + start_space + i * (dash_period + dash_length) - whiteout * lt, X_AXIS); Real cory = 0.5 * (dash_stencil.extent (Y_AXIS)[DOWN] + dash_stencil.extent (Y_AXIS) [UP]); wos.translate_axis (cory, Y_AXIS); total.add_stencil (wos); } } total.translate_axis (-me->relative_coordinate (common, X_AXIS), X_AXIS); return total.smobbed_copy (); } _______________________________________________ lilypond-devel mailing list lilypond-devel@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-devel