- use grob properties for dot_neg_kern and slash_neg_kern.
--- /dev/null
+\version "2.11.65"
+\header {
+ texidoc = "The positioning of dots and slashes in percent repeat
+glyphs can be altered using @code{dot-negative-kern} and
+@code{slash-negative-kern}."
+}
+
+<<
+ \new Staff {
+ \set Staff.instrumentName = #"(default)"
+ \repeat percent 2 { c'1 }
+ \repeat percent 2 { d'1 e' }
+ }
+ \new Staff {
+ \override PercentRepeat #'dot-negative-kern = #1.1
+ \repeat percent 2 { c'1 }
+ \override DoublePercentRepeat #'dot-negative-kern = #0
+ \override DoublePercentRepeat #'slash-negative-kern = #1
+ \repeat percent 2 { d'1 e' }
+ }
+>>
DECLARE_GROB_INTERFACE();
DECLARE_SCHEME_CALLBACK (beat_slash, (SCM));
DECLARE_SCHEME_CALLBACK (double_percent, (SCM));
- static Stencil x_percent (Grob *, int, Real, Real);
+ static Stencil x_percent (Grob *, int);
static Stencil brew_slash (Grob *);
};
Grob *me = unsmob_grob (smob);
Spanner *sp = dynamic_cast<Spanner *> (me);
- Stencil r = Percent_repeat_item_interface::x_percent (me, 1, 0.75, 1.6);
+ Stencil r = Percent_repeat_item_interface::x_percent (me, 1);
// ugh copy & paste.
return m;
}
-/*
- todo: use grob props for dot_neg_kern, slash_neg_kern?
-*/
Stencil
-Percent_repeat_item_interface::x_percent (Grob *me, int count,
- Real dot_neg_kern,
- Real slash_neg_kern)
+Percent_repeat_item_interface::x_percent (Grob *me, int count)
{
Stencil m;
Stencil s = brew_slash (me);
+ Real dot_neg_kern =
+ robust_scm2double (me->get_property ("dot-negative-kern"), 0.75);
+ Real slash_neg_kern =
+ robust_scm2double (me->get_property ("slash-negative-kern"), 1.6);
+
for (int i = count; i--;)
m.add_at_edge (X_AXIS, RIGHT, s, -slash_neg_kern);
Stencil d1 = Font_interface::get_default_font (me)->find_by_name ("dots.dot");
m.add_at_edge (X_AXIS, LEFT, d1, -dot_neg_kern);
m.add_at_edge (X_AXIS, RIGHT, d2, -dot_neg_kern);
+ m.translate_axis (- m.extent (X_AXIS).center (), X_AXIS);
return m;
}
Percent_repeat_item_interface::double_percent (SCM grob)
{
Grob *me = unsmob_grob (grob);
- Stencil m = x_percent (me, 2, 0.75, 1.6);
- m.translate_axis (- m.extent (X_AXIS).center (), X_AXIS);
+ Stencil m = x_percent (me, 2);
return m.smobbed_copy ();
}
"Repeats that look like percent signs.",
/* properties */
+ "dot-negative-kern "
+ "slash-negative-kern "
"slope "
"thickness "
);
(ly:add-interface
'percent-repeat-interface
"Beat, Double and single measure repeats."
- '(slope thickness))
+ '(dot-negative-kern slash-negative-kern slope thickness))
(ly:add-interface
'piano-pedal-interface
-;;;; grob-property-description.scm -- part of generated backend documentation
+;;;; define-grob-properties.scm -- part of generated backend documentation
;;;;
;;;; source file of the GNU LilyPond music typesetter
;;;;
be used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1},
@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, @code{#CENTER}=@code{0}.")
(dot-count ,integer? "The number of dots.")
+ (dot-negative-kern ,number? "The space to remove between a dot
+a and slash in percent repeat glyphs. Larger values bring the two
+elements closer together.")
(dot-placement-list ,list? "List
consisting of @code{(@var{description} @var{string-number}
@var{fret-number} @var{finger-number})}
@code{direction-source} with this to get the direction of this
object.")
(size ,number? "Size of object, relative to standard size.")
+ (slash-negative-kern ,number? "The space to remove between
+slashes in percent repeat glyphs. Larger values bring the two
+elements closer together.")
(slope ,number? "The slope of this object.")
(slur-padding ,number? "Extra distance between slur and script.")
(space-alist ,list? "A table that specifies distances between
(stencil . ,ly:percent-repeat-item-interface::double-percent)
(non-musical . #t)
(slope . 1.0)
+ (dot-negative-kern . 0.75)
+ (slash-negative-kern . 1.6)
(font-encoding . fetaMusic)
(width . 2.0)
(thickness . 0.48)
(stencil . ,ly:multi-measure-rest::percent)
(slope . 1.0)
(thickness . 0.48)
+ (dot-negative-kern . 0.75)
(font-encoding . fetaMusic)
(meta . ((class . Spanner)
(interfaces . (multi-measure-rest-interface