Hi, David!

On Sat, May 12, 2018 at 10:57 AM, David Sumbler <da...@aeolia.co.uk> wrote:

> On Sat, 2018-05-12 at 03:45 -0700, Torsten Hämmerle wrote:
> > David Sumbler wrote
> > >
> > > set-global-staff-size seems to be very buggy, and the newer
> > > magnify-
> > > staff (see Notation Ref. section 4.2.2) is recommended
> > Hi David,
> >
> > I wouldn't call set-global-staff-size buggy, it's still the way to go
> > if you
> > want to change the global stave size.
> >
> > \magnifyStaff is inteded to be used for scaling single staves within
> > a score
> > and spacing will behave accordingly.
> >
> > The problem Brent ran into is neither new nor does it come
> > unexpected: When
> > using custom fonts (no difference between text and music fonts here),
> > you'll
> > have to tell LilyPond which size to use, and consequently you always
> > had to
> > scaling factors.
> >
> > Examples:
> > When changing a document's default fonts by using pango-make-font-
> > tree,
> > there should alway be a scaling factor such as
> > (/ staff-height pt 20)
> > if you want to use non-standard stave-sizes (i.e. stave-sizes other
> > than 20
> > pt)
> >
> > The same holds true for music fonts.
> >
> > Therefore, Andrew's approach is the way to go.
> > There is a nice  essay on alternative notations fonts
> > <http://lilypondblog.org/2015/03/managing-alternative-fonts-with-lily
> > pond/>
> > by Urs Liska, giving an example:
> >
> > \paper {
> >   #(define fonts
> >     (set-global-fonts
> >       #:music "emmentaler"
> >       #:brace "emmentaler"
> >       #:roman "Century Schoolbook L"
> >       #:sans "sans-serif"
> >       #:typewriter "monospace"
> >       #:factor (/ staff-height pt 20)
> >   ))
> > }
> >
> > In Brent's original post, this #:factor entry was missing and that's
> > the
> > reason why the gonville font wasn't properly sized.
> >
> > All the best,
> > Torsten
>
> The problem I found over a year ago, and rediscovered yesterday is
> that, even without changing any fonts from the default, using set-
> global-staff-size more than once in the same input file (but relating
> to separate output files) causes huge problems with the layout of text
> in the second (or later) output file.  It is as if using this command
> sets various parameters, but then using it a second time (for a
> different output file) does not set those parameters correctly.  I
> would certainly call that buggy, particularly as the documentation
> implies that it ought to be set-able independently for every individual
> \book section in an output file.
>

What Torsten says is correct. And while the functionality is inconvenient
due to its restricted outermost scope, it *does* work for every individual
\book section with the appropriate order of events. What you need to
realize is that you need to be explicit about this. For example, if I have
an input file that has multiple \score blocks, but no explicit \book
blocks, like this:

#(set-global-staff-size 16)
\score { ...}

#(set-global-staff-size 18)
\score {...}

then yes, only the final call to set-global-staff-size will be in effect
because a \score block is *not* a \book block, so all \score blocks are
affected and any previous call to set-global-staff-size is basically undone
by the last one.

Now, if you explicitly call \book like this:

#(set-global-staff-size 16)
\book {
  \score { ... }
}

#(set-global-staff-size 18)
\book {
  \score { ... }
}

then you will find that each \score gets the appropriate scaling, the first
at 16pt and the second at 18pt. Just remember that the last call to
set-global-staff-size resets both the main staff size and ALL the font
choices and remains in effect from that point on until re-called before
another \book block. The downside here is that calling a new \book block
generates a new output file. So, if you want to have each \score inside the
same file, you need to be ok with the other scaling mechanisms (like
\magnifyStaff, etc.). As explained in section 4.2.2 of the NR, there's also
this option:

\score {
  ....
  \layout {
    #(layout-set-staff-size 16)
  }
}

which is supposed to set the staff size for that particular score, but I've
noticed that some of the horizontal spacing still acts like it is using
glyphs at the global staff size. See the attached image, which has the
first \score at the default 20pt and the second at 14pt and the third at
26pt. Notice, in particular, the space between the clef and key signature
and between the key signature and the time signature. I'd really love it if
this were addressed properly via the layout-set-staff-size function. This
isn't the only time I've seen spacing not being honored when the font is
changed to something non-default, but that's for another thread.


> I haven't looked at the source code, and probably wouldn't be able to
> fathom it if I did, but I wonder if set-global-staff-size alters some
> parameters on the assumption that they are at their default values,
> which of course can give a wrong result after a previous call.
>

It does alter some parameters with each call, particularly the fonts
(actually, the full "fonts" variable) and their sizes.


> Certainly for my purposes I have found set-global-staff-size virtually
> unusable, because it can produce crazy text layouts such as having
> adjacent letters in a word overlapping each other.  However I am
> delighted to say that putting (for instance)
> \layout { Staff \magnifyStaff #4/5 }
> at the appropriate point in a file gives me 16-point staves without
> messing up the layout of titles etc.
>

I certainly can't say that this has been my experience. I've found
set-global-staff-size perfectly usable, but you just have to know what to
expect when you call it and where its effects are felt.

Anyway, hopefully my explanation above is helpful.

Best,
Abraham
_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to