]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/font.scm
Add comment to font.scm and lilypond-fonts.conf.in
[lilypond.git] / scm / font.scm
index 8753019fa79d0d3bb452125bae4efa222c3dc216..cad14c9ec531cfd9b90a34712b3f4f45698a5087 100644 (file)
@@ -1,6 +1,6 @@
 ;;;; This file is part of LilyPond, the GNU music typesetter.
 ;;;;
-;;;; Copyright (C) 2004--2012 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
     #:children (make-hash-table 11)))
 
 (define-method (display (leaf <Font-tree-leaf>) port)
-  (map (lambda (x) (display x port))
-       (list
-        "#<Font-size-family:\n"
-        (slot-ref leaf 'default-size)
-        (slot-ref leaf 'size-vector)
-        "#>"
-        )))
+  (for-each (lambda (x) (display x port))
+            (list
+             "#<Font-size-family:\n"
+             (slot-ref leaf 'default-size)
+             (slot-ref leaf 'size-vector)
+             "#>"
+             )))
 
 (define-method (display (node <Font-tree-node>) port)
-  (map
+  (for-each
    (lambda (x)
      (display x port))
    (list
 
 ;; 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:
@@ -155,13 +155,16 @@ 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)}.
@@ -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,45 @@ 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.
+;
+; Note that 'LilyPond Serif', 'LilyPond Sans Serif' and 'Lilypond Monospace'
+; are aliases that are defined in mf/lilypond-fonts.conf.in (source file)
+; or fonts/lilypond-fonts.conf (installed file).
+
+(define*-public (set-global-fonts #:key 
+  (music "emmentaler")
+  (brace "emmentaler")
+  (roman "LilyPond Serif")
+  (sans "LilyPond Sans Serif")
+  (typewriter "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)
@@ -239,8 +278,10 @@ 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))
+   "LilyPond Serif"
+   "LilyPond Sans Serif"
+   "LilyPond Monospace"
+   factor))
 
 (define-public all-text-font-encodings
   '(latin1))