Hi DFro,

How about :

%CODE START
%%%%% Valentin Villanave's macro for the French-style C clef %%%%%%%

\version "2.19.82" %% "2.18.2"

altoClef =
#(ly:make-stencil
  `(path 0.001
    `(moveto  2.48 -3.06
     lineto   2.48 -4.92
     curveto  2.48 -4.96 2.45 -5.00 2.40 -5.00
     lineto   2.18 -5.00
     curveto  2.13 -5.00 2.10 -4.96 2.10 -4.92
     lineto   2.10 4.92
     curveto  2.10 4.96 2.13 5.00 2.18 5.00
     lineto   2.40 5.00
     curveto  2.45 5.00 2.48 4.96 2.48 4.92
     lineto   2.48 2.92
     curveto  2.74 2.70 3.48 2.42 3.70 2.42
     curveto  4.04 2.42 4.62 2.28 4.62 4.53
     curveto  4.62 5.60 4.76 6.70 5.76 6.70
     curveto  6.28 6.70 6.71 6.26 6.71 5.71
     curveto  6.71 5.16 6.28 4.71 5.76 4.71
     curveto  5.26 4.71 5.30 4.96 5.20 5.03
     curveto  5.13 5.02 5.10 4.78 5.10 4.37
     lineto   5.10 3.40
     curveto  5.10 1.92 4.90 0.94 4.77 0.79
     curveto  4.42 0.39 3.32 0.70 2.48 0.70
     lineto   2.48 -0.83
     curveto  3.32 -0.83 4.42 -0.53 4.77 -0.93
     curveto  4.90 -1.08 5.10 -2.06 5.10 -3.54
     lineto   5.10 -4.51
     curveto  5.10 -4.91 5.13 -5.16 5.20 -5.17
     curveto  5.30 -5.09 5.26 -4.85 5.76 -4.85
     curveto  6.28 -4.85 6.71 -5.30 6.71 -5.84
     curveto  6.71 -6.40 6.28 -6.84 5.76 -6.84
     curveto  4.76 -6.84 4.62 -5.74 4.62 -4.67
     curveto  4.62 -2.42 4.04 -2.56 3.70 -2.56
     curveto  3.48 -2.56 2.74 -2.83 2.48 -3.06
     closepath
     moveto   1.30 -5.00
     lineto   0.08 -5.00
     curveto  0.04 -5.00 0 -4.96 0 -4.92
     lineto   0 4.92
     curveto  0 4.96 0.04 5.00 0.08 5.00
     lineto   1.30 5.00
     curveto  1.34 5.00 1.38 4.96 1.38 4.92
     lineto   1.38 -4.92
     curveto  1.38 -4.96 1.34 -5.00 1.30 -5.00
      closepath)
     'round 'round #t)
   (cons  -0.1 5)
   (cons  -5   5))

\layout {
  \context {
    \Score
    \override Clef.stencil =
      #(lambda (grob)
         (let* ((sz (ly:grob-property grob 'font-size 0))
                (mlt (magstep sz))
                (glyph (ly:grob-property grob 'glyph-name)))
                 (cond
                  ((equal? glyph "clefs.C")
                     (ly:stencil-scale altoClef (* .4 mlt) (* .4 mlt)))
                  ((equal? glyph "clefs.C_change")
                    (ly:stencil-scale altoClef (* .3 mlt) (* .3 mlt)))
                  (else (ly:clef::print grob)))))
  }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%

\relative c' {

      \numericTimeSignature
      \clef "alto"

      | c4 c
      \set Staff.forceClef = ##t
      \clef "alto"

      c4 c \break
      \set Staff.forceClef = ##t
      \clef "alto"

      | c4 c c c

      \time 2/4
      \break

      \set Staff.forceClef = ##t
      \clef "alto"

      | c8 c

      \set Staff.forceClef = ##t
      \clef "alto"

      c c \break

      \set Staff.forceClef = ##t
      \clef "alto"

      | c8 c c c
}

\paper {
      ragged-right = ##t
}

%%%

(See LSR: See : http://lsr.di.unimi.it/LSR/Item?id=900 )
Cheers,
Pierre

2018-07-03 7:18 GMT+02:00 David Kastrup <d...@gnu.org>:

> dfro <d...@umich.edu> writes:
>
> > In the code snippet below, the custom glyph sometimes collides with
> > the notes before it, and sometimes does not. Also, I cannot control
> > the distance from notes immediately after the custom glyph, as I can
> > with the standard "alto" glyph.
> >
> > I have tried to experiment and to understand the various Clef object
> > properties, but I cannot figure it out. I am sure there is something
> > basic about grob behavior that I don't understand, yet.
> >
> > %CODE START
> > %%%%% Valentin Villanave's macro for the French-style C clef %%%%%%%
> >
> > altoClef = \markup \postscript #"
> > gsave newpath
> >    0.004 0.004 scale
> >    -200 0 translate
> [...]
> > fill grestore"
>
> Uh, that's opaque to LilyPond.  It has neither bounding box nor
> outline.  Try rewriting in terms of the \path command.
>
> --
> David Kastrup
>
> _______________________________________________
> lilypond-user mailing list
> lilypond-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-user
>
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to