;; hmmm. what's the best failure option?
(throw 'ly-file-failed)))))
+;; ly:system can't handle pipe and redirection.
+;; This procedure can handle them by using shell.
+(define-public (ly:system-with-shell command)
+ (let ((s (if (eq? PLATFORM 'windows)
+ ;; MinGW (except Cygwin): Use COMSPEC (cmd.exe)
+ ;; FIXME: Command window is displayed briefly
+ (list (or (getenv "COMSPEC")
+ "cmd.exe")
+ "/c")
+ ;; POSIX (also Cygwin): Use /bin/sh
+ (list "/bin/sh"
+ "-c")))
+ (c (list (if (eq? PLATFORM 'windows)
+ ;; MinGW hack: Double quotes can not be used here.
+ ;; So we remove them.
+ ;; FIXME: The filename that contains space
+ ;; can't be handled.
+ (string-join (string-split command #\") "")
+ ;; Other environments (also Cygwin):
+ ;; Double quotes can be used. Pass through.
+ command
+ ))))
+ (ly:system (append s c))))
+
(define-public (search-executable names)
(define (helper path lst)
(if (null? (cdr lst))
"-r1200"
(if (ly:bigpdfs) "-dSubsetFonts=false")
"-sDEVICE=pdfwrite"
+ "-dAutoRotatePages=/None"
(string-append "-sOutputFile="
(string-join
(string-split pdf-name #\%)
(module-remove! output-module x))
missing-stencil-list))
-(define (filter-out pred? lst)
- (filter (lambda (x) (not (pred? x))) lst))
-
(define-public (font-name-split font-name)
"Return @code{(FONT-NAME . DESIGN-SIZE)} from @var{font-name} string
or @code{#f}."
(let* ((font-list (ly:paper-fonts paper))
(pango-fonts (filter ly:pango-font? font-list))
- (other-fonts (filter-out ly:pango-font? font-list))
+ (other-fonts (remove ly:pango-font? font-list))
(other-font-names (map ly:font-name other-fonts))
(pango-only-fonts
- (filter-out (lambda (x)
- (member (pango-font-name x) other-font-names))
- pango-fonts)))
+ (remove (lambda (x)
+ (member (pango-font-name x) other-font-names))
+ pango-fonts)))
(define (font-load-command font)
(let* ((font-name (ly:font-name font))