;;;; This file is part of LilyPond, the GNU music typesetter.
;;;;
-;;;; Copyright (C) 2004--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; Copyright (C) 2004--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
;;;;
;;;; LilyPond is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU General Public License as published by
;; 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:
@item
@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)}.
)))
(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)
(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.
+;
+; Note that 'LilyPond Serif', 'LilyPond Sans Serif' and 'Lilypond Monospace'
+; are aliases that are defined in mf/00-lilypond-fonts.conf.in (source file)
+; or fonts/00-lilypond-fonts.conf (installed file).
+
+(define*-public (set-global-fonts #:key
+ (music "emmentaler")
+ (brace "emmentaler")
+ (roman (if (eq? (ly:get-option 'backend) 'svg)
+ "serif" "LilyPond Serif"))
+ (sans (if (eq? (ly:get-option 'backend) 'svg)
+ "sans-serif" "LilyPond Sans Serif"))
+ (typewriter (if (eq? (ly:get-option 'backend) 'svg)
+ "monospace" "LilyPond 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)
n))
-(define-public (make-century-schoolbook-tree factor)
+(define-public (make-default-fonts-tree factor)
(make-pango-font-tree
- "Century Schoolbook L"
- "sans-serif" "monospace" factor))
+ (if (eq? (ly:get-option 'backend) 'svg) "serif" "LilyPond Serif")
+ (if (eq? (ly:get-option 'backend) 'svg) "sans-serif" "LilyPond Sans Serif")
+ (if (eq? (ly:get-option 'backend) 'svg) "monospace" "LilyPond Monospace")
+ factor))
(define-public all-text-font-encodings
'(latin1))