]> git.donarmstrong.com Git - lilypond.git/commitdiff
new option gs-load-lily-fonts: only load lilypond fonts via
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 22 Jul 2007 07:19:19 +0000 (00:19 -0700)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 22 Jul 2007 07:19:19 +0000 (00:19 -0700)
ghostscript

This is needed to make lilypond test-output "portable"; we cannot load
fonts from /usr through ghostscript.

GNUmakefile.in
scm/backend-library.scm
scm/framework-ps.scm
scm/lily.scm

index 00345e39dc760f509f46524d42e724aed8d9697f..e50686442cfe3519b7462b84d53eccd2e0fce128 100644 (file)
@@ -227,7 +227,7 @@ test:
                echo -e '\n\n\n' ; \
                git diff ; \
        fi > input/regression/out-test/tree.gittxt
-       $(MAKE) -C input/regression/ out=$(OUT_TEST) LILYPOND_BOOK_LILYPOND_FLAGS="-dbackend=eps --formats=ps $(LILYPOND_JOBS) -dseparate-log-files -dinclude-eps-fonts -dgs-load-fonts --header=texidoc -I $(top-src-dir)/input/manual -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_VERBOSE= out-$(OUT_TEST)/collated-files.html
+       $(MAKE) -C input/regression/ out=$(OUT_TEST) LILYPOND_BOOK_LILYPOND_FLAGS="-dbackend=eps --formats=ps $(LILYPOND_JOBS) -dseparate-log-files -dinclude-eps-fonts -dgs-load-lily-fonts --header=texidoc -I $(top-src-dir)/input/manual -ddump-profile -dcheck-internal-types -ddump-signatures -danti-alias-factor=1" LILYPOND_BOOK_VERBOSE= out-$(OUT_TEST)/collated-files.html
        @find input ly -name '*.ly' -print |grep -v 'out.*/' | xargs grep '\\version' -L | grep -v "standard input" |sed 's/^/**** Missing version: /g' 
        rsync -L -a --exclude 'out-*' --exclude 'out' --exclude mf --exclude source --exclude mf $(outdir)/share input/regression/out-test/
 
index 73c147c1599d4dfd1b2acf4108506ff7bc54de77..0f13b6f55aad0f71f50353619d297c0e1c7c8011 100644 (file)
@@ -96,7 +96,9 @@
 "
                      (search-gs)
                      (if (ly:get-option 'verbose) "" "-q")
-                     (if (ly:get-option 'gs-load-fonts)
+                     (if (or (ly:get-option 'gs-load-fonts)
+                             (ly:get-option 'gs-load-lily-fonts))
+                             
                          " -dNOSAFER "
                          " -dSAFER ")
                      paper-size-string
index 7c5669fdb32ecd11b80ded4d137994e30ddfb81c..1f5860433c23e5bcb33843df8f3990d574fae38b 100644 (file)
 
 
 (define (write-preamble paper load-fonts? port)
-
-  (define (load-font-via-GS font-name-filename)
+  (define (internal-font? file-name)
+    (or (string-startswith file-name "Emmentaler")
+       (string-startswith file-name "emmentaler")
+       (string-startswith file-name "aybabtu")
+       (string-startswith file-name "Aybabtu")))
+  (define (load-font-via-GS font-name-filename)       
     (define (ps-load-file file-name)
       (if (string? file-name)
          (if (string-contains file-name (ly:get-option 'datadir))
              (begin
                (set! file-name (ly:string-substitute (ly:get-option 'datadir) "" file-name))
                (format "lilypond-datadir (~a) concatstrings (r) file .loadfont" file-name))
+             
              (format "(~a) (r) file .loadfont\n" file-name))
          (format "% cannot find font file: ~a\n" file-name)))
 
        (if (mac-font? bare-file-name)
           (handle-mac-font name bare-file-name)
           (cond
-           ((or (string-startswith file-name "Emmentaler")
-                (string-startswith file-name "emmentaler")
-                (string-startswith file-name "aybabtu")
-                (string-startswith file-name "Aybabtu"))
+           ((internal-font? file-name)
             (ps-load-file (ly:find-file
                            (format "~a.otf"  file-name))))
            ((string? bare-file-name)
 
   (define (load-fonts paper)
     (let* ((fonts (ly:paper-fonts paper))
+
+          ;; todo - doc format of list.
           (all-font-names
            (map
             (lambda (font)
             (sort (apply append all-font-names)
                   (lambda (x y) (string<? (cadr x) (cadr y))))))
 
-          (font-loader (if (ly:get-option 'gs-load-fonts)
-                           load-font-via-GS
-                           load-font))
+          ;; slightly spaghetti-ish: deciding what to load where
+          ;; is smeared out.
+          (font-loader (lambda (name)
+                         (cond
+                          ((ly:get-option 'gs-load-fonts) 
+                           (load-font-via-GS name))
+                          ((ly:get-option 'gs-load-lily-fonts)
+                           (if (or
+                                (string-contains (caddr name) (ly:get-option 'datadir))
+                                (internal-font? (caddr name)))
+
+                               (load-font-via-GS name)
+                               (load-font name)))
+                          (else (load-font name)))))
                         
           (pfas (map font-loader font-names)))
       pfas))
index 645e2c192c7865ad79fe6164f3b3c2503672a0e7..ce1936fd9089a1cb914a06952623f5dae474438c 100644 (file)
@@ -46,6 +46,8 @@ ensure that all refs to parsed objects are dead.  This is an internal option, an
     (eps-box-padding #f "Pad EPS bounding box left edge.  Guarantee alignment between systems in LaTeX.")
     (gs-load-fonts #f
                   "load fonts via Ghostscript.")
+    (gs-load-lily-fonts #f
+                       "load only lilypond fonts via Ghostscript.")
     (gui #f "running from gui; redirect stderr to log file")
     (help #f "show this help.") 
     (include-book-title-preview #t "include book-titles in preview images.")