Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(176)

Issue 115590043: Allow changing of notation fonts

Can't Edit
Can't Publish+Mail
Start Review
Created:
9 years, 9 months ago by uliska
Modified:
9 years, 9 months ago
Reviewers:
tisimst
CC:
lilypond-devel_gnu.org
Visibility:
Public.

Description

Allow changing of notation fonts This commit changes the behaviour of make-pango-font-tree in the following ways: - Make all arguments optional key/value pairs keeping the current default values (emmentaler/Century Schoolbook) - Allow changing of music fonts too. Currently alternative music fonts have to be present in the font directory besides Emmentaler fonts, and they have to be manually installed. But now there are a number of alternative and compatible fonts available.

Patch Set 1 #

Unified diffs Side-by-side diffs Delta from patch set Stats (+42 lines, -6 lines) Patch
M scm/font.scm View 5 chunks +42 lines, -6 lines 0 comments Download

Messages

Total messages: 2
uliska
This is the current state of Abraham's approach to make music fonts switchable. The patch ...
9 years, 9 months ago (2014-08-02 16:40:29 UTC) #1
tisimst
9 years, 9 months ago (2014-08-02 18:01:42 UTC) #2
On Sat, Aug 2, 2014 at 10:40 AM, lilyliska@googlemail.com wrote:
> Reviewers: ,
> 
> Message:
> This is the current state of Abraham's approach to make music fonts
> switchable. The patch is incomplete in a few senses, but Abraham wants
> an official review for that current state:
> 
> - there's no documentation
>   -> We'll take care of that once the user interface
>      has been fixed
> - there's no convert-ly rule
>   -> ditto, this should pose no problems.
> - the patch will somehow have to be integrated with
>   Alexander's work on the text font selection interface,
>   but Alexander considers it not too problematic.
> 
> See
> http://lists.gnu.org/archive/html/lilypond-user/2014-08/msg00016.html
> 
> Description:
> Allow changing of notation fonts
> 
> This commit changes the behaviour of make-pango-font-tree in the
> following ways:
> 
> - Make all arguments optional key/value pairs
>   keeping the current default values (emmentaler/Century Schoolbook)
> - Allow changing of music fonts too.
> 
> Currently alternative music fonts have to be present in the font
> directory besides Emmentaler fonts, and they have to be manually
> installed.
> But now there are a number of alternative and compatible fonts
> available.
> 
> Please review this at https://codereview.appspot.com/115590043/
> 
> Affected files (+42, -6 lines):
>   M scm/font.scm
> 
> 
> Index: scm/font.scm
> diff --git a/scm/font.scm b/scm/font.scm
> index 
>
867612ae11529c3426a795498a6dc5168481f427..e177a055edb31ca56bcc4030718b2b759da75c4a

> 100644
> --- a/scm/font.scm
> +++ b/scm/font.scm
> @@ -147,7 +147,7 @@
> 
>  ;; Each size family is a vector of fonts, loaded with a delay.  The
>  ;; vector should be sorted according to ascending design size.
> -(define-public (add-music-fonts node name family design-size-alist 
> factor)
> +(define-public (add-music-fonts node family name brace 
> design-size-alist factor)
>    "Set up music fonts.
> 
>  Arguments:
> @@ -156,12 +156,15 @@ Arguments:
>  @var{node} is the font tree to modify.
> 
>  @item
> +@var{family} is the family name of the music font.
> +
> +@item
>  @var{name} is the basename for the music font.
>  @file{@var{name}-<designsize>.otf} should be the music font,
> -@file{@var{name}-brace.otf} should have piano braces.
> 
>  @item
> -@var{family} is the family name of the music font.
> +@var{brace} is the basename for the brace font.
> +@file{@var{brace}-brace.otf} should have piano braces.
> 
>  @item
>  @var{design-size-alist} is a list of @code{(rounded . designsize)}.
> @@ -199,7 +202,7 @@ used.  This is used to select the proper design 
> size for the text fonts.
>                         )))
>       (fetaBraces ,(ly:pt 20.0)
>                   #(,(delay (ly:system-font-load
> -                            (format #f "~a-brace" name)))))
> +                            (format #f "~a-brace" brace)))))
>       )))
> 
>  (define-public (add-pango-fonts node lily-family family factor)
> @@ -229,9 +232,40 @@ used.  This is used to select the proper design 
> size for the text fonts.
>    (add-node 'italic 'normal)
>    (add-node 'italic 'bold))
> 
> +; This function allows the user to change the specific fonts, 
> leaving others
> +; to the default values. This way, "make-pango-font-tree"'s syntax 
> doesn't
> +; have to change from the user's perspective.
> +;
> +; Usage:
> +;   \paper {
> +;     #(define fonts
> +;       (set-global-fonts
> +;        #:music "gonville"  ; (the main notation font)
> +;        #:roman "FreeSerif" ; (the main/serif text font)
> +;       ))
> +;   }
> +;
> +; Leaving out "#:brace", "#:sans", and "#:typewriter" leave them at
> +; "emmentaler", "sans-serif", and "monospace", respectively. All 
> fonts are
> +; still accesible through the usual scheme symbols: 'feta, 'roman, 
> 'sans, and
> +; 'typewriter.
> +(define*-public (set-global-fonts #:key
> +  (music "emmentaler")
> +  (brace "emmentaler")
> +  (roman "Century Schoolbook L")
> +  (sans "sans-serif")
> +  (typewriter "monospace")
> +  (factor 1))
> +  (let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))
> +    (add-music-fonts n 'feta music brace feta-design-size-mapping 
> factor)
> +    (add-pango-fonts n 'roman roman factor)
> +    (add-pango-fonts n 'sans sans factor)
> +    (add-pango-fonts n 'typewriter typewriter factor)
> +    n))
> +
>  (define-public (make-pango-font-tree roman-str sans-str 
> typewrite-str factor)
>    (let ((n (make-font-tree-node 'font-encoding 'fetaMusic)))
> -    (add-music-fonts n "emmentaler" 'feta feta-design-size-mapping 
> factor)
> +    (add-music-fonts n 'feta "emmentaler" "emmentaler" 
> feta-design-size-mapping factor)
>      (add-pango-fonts n 'roman roman-str factor)
>      (add-pango-fonts n 'sans sans-str factor)
>      (add-pango-fonts n 'typewriter typewrite-str factor)
> @@ -240,7 +274,9 @@ used.  This is used to select the proper design 
> size for the text fonts.
>  (define-public (make-century-schoolbook-tree factor)
>    (make-pango-font-tree
>     "Century Schoolbook L"
> -   "sans-serif" "monospace" factor))
> +   "sans-serif"
> +   "monospace"
> +   factor))
> 
>  (define-public all-text-font-encodings
>    '(latin1))
> 
> 
> 
> _______________________________________________
> lilypond-devel mailing list
> lilypond-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/lilypond-devel
> 
Urs,

Thank you for getting the ball rolling on this. A couple of notes:

1. The behavior of make-pango-font-tree doesn't actually change, nor 
does it allow arguments to be optional (only the new function allows 
for optional, keyword arguments). However, the internals are changed to 
accommodate the new call syntax to add-music-fonts by putting in a 
value for both the music and brace fonts.

2. In a user's file, their syntax doesn't change at all, so a 
convert-ly rule shouldn't be required.

3. The code for make-century-schoolbook-tree need not be any different 
than it currently stands (sorry, I forgot to revert that).

4. And, of course, I'll handle the documentation when we finalize the 
code points.

Again, thank you for getting this in front of the appropriate eyes!

-Abraham
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b