X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Ffont.scm;h=859efcd46ef5c87c935d25dd3199d2aba3a19b2d;hb=77267b700c377fd170abcbf4863728937038eb5e;hp=8753019fa79d0d3bb452125bae4efa222c3dc216;hpb=bd751630011a6fbfcf069ec1fc41a8eaed8a6b87;p=lilypond.git diff --git a/scm/font.scm b/scm/font.scm index 8753019fa7..859efcd46e 100644 --- a/scm/font.scm +++ b/scm/font.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2004--2012 Han-Wen Nienhuys +;;;; Copyright (C) 2004--2015 Han-Wen Nienhuys ;;;; ;;;; LilyPond is free software: you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by @@ -50,16 +50,16 @@ #:children (make-hash-table 11))) (define-method (display (leaf ) port) - (map (lambda (x) (display x port)) - (list - "#" - ))) + (for-each (lambda (x) (display x port)) + (list + "#" + ))) (define-method (display (node ) port) - (map + (for-each (lambda (x) (display x port)) (list @@ -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: @@ -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}-.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,18 +232,59 @@ 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/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))