]> git.donarmstrong.com Git - lilypond.git/commitdiff
PDF metadata now handle unclosed parentheses and backslash.
authorBertrand Bordage <bordage.bertrand@gmail.com>
Tue, 12 Apr 2011 10:12:05 +0000 (12:12 +0200)
committerGraham Percival <graham@percival-music.ca>
Sat, 16 Apr 2011 07:41:49 +0000 (08:41 +0100)
Fix issue 1605

input/regression/pdfmark-metadata.ly
scm/framework-ps.scm

index 16f47ebb994f55a028ab375ccaa809127ff3278c..cb34f7c6559d73cf2d891ffbdbc3ca3e5a87ef0b 100644 (file)
@@ -13,6 +13,7 @@ those without the prefix for PDF creation (not for visual display on the page).
   arranger = \markup { The Arranger \circle f \draw-circle #3 #0.5  ##t }
   copyright = "The Copyright"
   keywords = "pdfmark, metadata, DOCINFO, lilypond"
+  modDate = "Test for special characters : \ ) ("
 }
 \layout { ragged-right= ##t }
 
index bd4846654add4ffda7d5d482a886197c972af411..eb4e54553158a3c203b4f02bba640b8cd7e1dda4 100644 (file)
   (display "%%EndProlog\n" port)
   (display "%%BeginSetup\ninit-lilypond-parameters\n%%EndSetup\n\n" port))
 
+(define (ps-quote str)
+        (fold
+          (lambda (replacement-list result)
+                  (string-join
+                    (string-split
+                      result
+                      (car replacement-list))
+                    (cadr replacement-list)))
+          str
+          '((#\\ "\\\\") (#\( "\\(") (#\) "\\)"))))
+
 ;;; Create DOCINFO pdfmark containing metadata
 ;;; header fields with pdf prefix override those without the prefix
 (define (handle-metadata header port)
           (fallbackval (ly:modules-lookup (list header) fallbackvar))
           (val (if overrideval overrideval fallbackval)))
       (if val
-         (format port "/~a (~a)\n" field (markup->string val)))))
+         (format port "/~a (~a)\n" field (ps-quote (markup->string val))))))
   (display "[ " port)
   (metadata-lookup-output 'pdfcomposer 'composer "Author")
   (format port "/Creator (LilyPond ~a)\n" (lilypond-version))