> ---------- Forwarded message ---------- > From: Aaron Hill <lilyp...@hillvisions.com> > To: lilypond-user@gnu.org > Date: Sun, 12 May 2019 21:13:54 -0700 > Subject: Re: ChordName Font Size > On 2019-05-12 5:29 pm, Gregory Hollands wrote: > > I want to use an alternative font for ChordNames, but the font I have > > chosen is not exactly the same size as the default font. The result is > > that > > musical symbols (sharps, flat, etc) appear too large. > > > > How can I change the size of the musical symbols in ChordNames so that > > they > > match the size of the font? > > Here is a bit of a hack: > > %%%% > \version "2.19.82" > > embiggenChordNames = #(define-scheme-function (size) (number?) > #{ \with { > chordNameFunction = #(lambda (in-pitches bass inversion context) > (define (helper mu) > (if (list? mu) > (if (eq? (car mu) musicglyph-markup) > (markup (#:fontsize (- size) mu)) > (map helper mu)) > mu)) > (let ((orig (ignatzek-chord-names in-pitches bass inversion > context))) > (markup (#:fontsize size (helper orig))))) > } #} ) > > theChords = \chordmode { c2:7 g2:dim aes2:m fis2 } > << \new ChordNames \theChords > \new ChordNames \with \embiggenChordNames #5 \theChords > \new ChordNames \with \embiggenChordNames #-3 \theChords >> > %%%% > > This applies a global \fontsize to the markup to scale everything up by > a specified amount; however, it also looks within the markup for > occurrences of \musicglyph and applies an inverse \fontsize so they > remain the original size. > > Wouldn't be surprised to learn there is some built-in procedure like > map-some-music but for markup that would obsolete my helper function > above. But I threw this together pretty quickly. > > > -- Aaron Hill_______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user
I was going to reply to this, then realized I hadn't read the question specifically enough. When I tried this approach suggested by Aaron, I noticed that it doesn't actually address the question, as it leaves the musical symbols (like sharp, flat) the same size, while the text font changes size. I started to try to modify this so that it would apply a different scaling to the musical symbols, but couldn't figure out how to do that. In an effort to try to help understand how to adapt this function, I started off by formatting and adding commentary to see if I actually understand what it is doing. There are numerous questions therin. If anyone can help explain how it works, I might be able to move this forward. %%% \version "2.19" % The original embiggenChordNames = #(define-scheme-function (size) (number?) #{ \with { chordNameFunction = #(lambda (in-pitches bass inversion context) (define (helper mu) (if (list? mu) (if (eq? (car mu) musicglyph-markup) (markup (#:fontsize (- size) mu)) (map helper mu)) mu)) (let ((orig (ignatzek-chord-names in-pitches bass inversion context))) (markup (#:fontsize size (helper orig))))) } #} ) % My attempt at explanation embiggenChordNames = #(define-scheme-function (size) (number?) #{ \with { chordNameFunction = #(lambda (in-pitches bass inversion context) ;;; A recursive function that goes through the elements in the list (define (helper mu) ;;; See if the element is a list (if (list? mu) ;;; The case where mu is a list. ;;; This next statement confuses me ;;; since in it, we treat mu as a pair, by using car. ;;; So, it it a list or a pair? (if (eq? (car mu) musicglyph-markup) ;;; The case where the first element of the pair is a musical symbol? ;;; So adjust its font size. ;;; However, in practice this appears to affect the text, ;;; rather than the symbols. (markup (#:fontsize (- size) mu)) ;;; The case where the first element not is a musical symbol? ;;; Seems like we are assuming it is not an element that needs adjustment ;;; but rather another list on which we recurse. ;;; I would have guessed (based on the logic) that this might be the case for text. ;;; or (based on the output) that this might be the case for musical symbols. (map helper mu) ) ;;; The base case, where we do not have a list. ;;; Why are we not concerned with the font size of this element? ;;; What type of element do we expect this to be? mu ) ) ;;; Apply the function defined above to a copy of the chord info (let ( ;;; What does this represent? ;;; Seems like it must be referencing something from which this ;;; function is applied--the thing to which this is \with-ed? (orig (ignatzek-chord-names in-pitches bass inversion context) ) ) (markup (#:fontsize size (helper orig))) ) ) } #} ) theChords = \chordmode { c2:7 g2:dim aes2:m fis2 } << \new ChordNames \theChords % Demonstrating what seems to be close to the default: 0.5 \new ChordNames \with \embiggenChordNames #0.5 \theChords \new ChordNames \with \embiggenChordNames #6 \theChords \new ChordNames \with \embiggenChordNames #-3 \theChords >> %%%% Thanks, Elaine Alt 415 . 341 .4954 "*Confusion is highly underrated*" ela...@flaminghakama.com Producer ~ Composer ~ Instrumentalist ~ Educator -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user