From: Jan Nieuwenhuizen <janneke@gnu.org>
Date: Tue, 20 Oct 2009 11:33:39 +0000 (+0200)
Subject: Prepare for adding alternative music font, set default font-family feta.
X-Git-Tag: release/2.13.6-1~2
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d93f7d1101b3d24487398de766f1bf48ae4fc9af;p=lilypond.git

Prepare for adding alternative music font, set default font-family feta.

This makes using alternative fetaMusic encoded music fonts, such
as Gonville, fairly easy.  See input/regression/gonville.ly.
---

diff --git a/Documentation/changes.tely b/Documentation/changes.tely
index 4675f0caaf..848f832455 100644
--- a/Documentation/changes.tely
+++ b/Documentation/changes.tely
@@ -198,6 +198,10 @@ and to add notes to the number or fraction:
 FretBoards now have a chordChanges property to keep repeated FretBoard objects
 from being typeset.
 
+@item
+Support for using an alternative music font, such as Gonville, is now
+added.
+
 @end itemize
 
 
diff --git a/input/regression/gonville.ly b/input/regression/gonville.ly
new file mode 100644
index 0000000000..9a3e36ebc1
--- /dev/null
+++ b/input/regression/gonville.ly
@@ -0,0 +1,57 @@
+\header {
+
+  texidoc = "The default music font can be overridden by setting
+  @code{(font-family . gonville)} in the @code{font-defaults} in the
+  paper block."
+
+}
+
+\version "2.13.6"
+
+\paper {
+  % Load the alternative font definitions into the font tree.
+  #(add-music-fonts fonts "gonville" 'gonville (/ staff-height (* 20 pt)))
+}
+
+%{
+  Note: for this to work, do something like
+
+     wget -P out http://www.chiark.greenend.org.uk/~sgtatham/gonville/gonville-r8724.tar.gz
+     tar xzf out/gonville-r8724.tar.gz
+     ln out/gonville-r8724/lilyfonts/otf/gonville* out/share/lilypond/current/fonts/otf/
+     (cd out/share/lilypond/current/fonts/otf && for i in gonville*; do mv $i $(echo $i | sed s/gonville/gonville-/); done)
+
+
+  To show all available fonts, do
+
+     lilypond -dshow-available-fonts blabla
+
+%}
+
+\relative c'' {
+  \set Staff.instrumentName = #"Default"
+  a4-\trill b8 c16 d32
+}
+
+\score {
+  \relative c'' {
+    \set Staff.instrumentName = #"Feta"
+    a4-\trill b8
+    c16 d32
+  }
+  \layout {
+    #(define font-defaults
+      '((font-family . feta) (font-encoding . fetaMusic)))
+  }
+}
+
+\score {
+  \relative c'' {
+    \set Staff.instrumentName = #"Gonville"
+    a4-\trill b8 c16 d32
+  }
+  \layout {
+    #(define font-defaults
+      '((font-family . gonville) (font-encoding . fetaMusic)))
+  }
+}
diff --git a/ly/paper-defaults-init.ly b/ly/paper-defaults-init.ly
index 0e71cdac04..df7a63b768 100644
--- a/ly/paper-defaults-init.ly
+++ b/ly/paper-defaults-init.ly
@@ -68,7 +68,7 @@
   page-limit-inter-system-space-factor = 1.4
 
   #(define font-defaults
-     '((font-encoding . fetaMusic)))
+    '((font-family . feta) (font-encoding . fetaMusic)))
 
   %%
   %% the font encoding `latin1' is a dummy value for Pango fonts
diff --git a/scm/font.scm b/scm/font.scm
index 3d30e45695..559bb41ddb 100644
--- a/scm/font.scm
+++ b/scm/font.scm
@@ -140,26 +140,33 @@
 
 ;; 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 factor)
+(define-public (add-music-fonts node name family factor)
   (for-each
    (lambda (x)
      (add-font node
-	       (list (cons 'font-encoding (car x)))
+	       (list (cons 'font-encoding (car x))
+		     (cons 'font-family family))
 	       (cons (* factor (cadr x))
 		     (caddr x))))
    `((fetaDynamic ,(ly:pt 20.0) ,feta-alphabet-size-vector)
      (fetaNumber ,(ly:pt 20.0) ,feta-alphabet-size-vector)
      (fetaMusic ,(ly:pt 20.0)
-		#(,(delay (ly:system-font-load "emmentaler-11"))
-		  ,(delay (ly:system-font-load "emmentaler-13"))
-		  ,(delay (ly:system-font-load "emmentaler-14"))
-		  ,(delay (ly:system-font-load "emmentaler-16"))
-		  ,(delay (ly:system-font-load "emmentaler-18"))
-		  ,(delay (ly:system-font-load "emmentaler-20"))
-		  ,(delay (ly:system-font-load "emmentaler-23"))
-		  ,(delay (ly:system-font-load "emmentaler-26"))))
+		#(
+		  ,(delay (ly:system-font-load (string-append name "-11")))
+		  ,(delay (ly:system-font-load (string-append name "-13")))
+		  ,(delay (ly:system-font-load (string-append name "-14")))
+		  ,(delay (ly:system-font-load (string-append name "-16")))
+		  ,(delay (ly:system-font-load (string-append name "-18")))
+		  ,(delay (ly:system-font-load (string-append name "-20")))
+		  ,(delay (ly:system-font-load (string-append name "-23")))
+		  ,(delay (ly:system-font-load (string-append name "-26")))
+		  ))
      (fetaBraces ,(ly:pt 20.0)
-		 #(,(delay (ly:system-font-load "aybabtu")))))))
+		 #(,(delay (ly:system-font-load
+			    ;;; TODO: rename aybabtu to emmentaler-brace
+			    (string-replace "emmentaler-brace" "aybabtu"
+					    (string-append name "-brace"))
+			    )))))))
 
 (define-public (add-pango-fonts node lily-family family factor)
   (define (add-node shape series)
@@ -186,7 +193,9 @@
 
 (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 factor)
+    (add-music-fonts n "emmentaler" 'feta factor)
+;; Let's not do this [yet], see input/regression/gonville.ly
+;;    (add-music-fonts n "gonville" 'gonville 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)