(define (ps-load-file file-name)
(if (string? file-name)
- (if (string-contains file-name (ly:get-option 'datadir))
+ (if (and (not (ly:get-option 'font-export-dir))
+ (string-contains file-name (ly:get-option 'datadir)))
(begin
(set! file-name (ly:string-substitute (ly:get-option 'datadir)
"" file-name))
"/lilypond-datadir where {pop} {userdict /lilypond-datadir (~a) put } ifelse"
(ly:get-option 'datadir))
(set! never-embed-font-list (list))
+ (if (ly:get-option 'font-export-dir)
+ (let ((dirname (format #f "~a" (ly:get-option 'font-export-dir))))
+ (ly:debug
+ (_ "Making font export directory `~a'.") dirname)
+ (catch
+ 'system-error
+ (lambda ()
+ ;; mkdir:
+ ;; When the directory already exists, it raises system-error.
+ (mkdir dirname))
+ (lambda stuff
+ ;; Catch the system-error
+ (if (= EEXIST (system-error-errno stuff))
+ ;; If the directory already exists, avoid error.
+ (ly:debug
+ (_ "Font export directory `~a' already exists.") dirname)
+ ;; If the cause is something else, re-throw the error.
+ (throw 'system-error (cdr stuff)))))))
(if load-fonts?
(for-each (lambda (f)
(format port "\n%%BeginFont: ~a\n" (car f))
(define (metadata-encode val)
;; First, call ly:encode-string-for-pdf to encode the string (latin1 or
;; utf-16be), then escape all parentheses and backslashes
- ;; FIXME guile-2.0: use (string->utf16 str 'big) instead
-
+ ;;
+ ;; NOTE: with guile-2.0+ ly:encode-string-for-pdf is not really needed and
+ ;; could be replaced with the following code:
+ ;;
+ ;; (let* ((utf16be-bom #vu8(#xFE #xFF)))
+ ;; (string-append (bytevector->string utf16be-bom "ISO-8859-1")
+ ;; (bytevector->string (string->utf16 val 'big) "ISO-8859-1")))
+ ;;
(ps-quote (ly:encode-string-for-pdf val)))
(define (metadata-lookup-output overridevar fallbackvar field)
(let* ((overrideval (ly:modules-lookup (list header) overridevar))