]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4901: Improve `-dgs-load-fonts` option for OTC fonts
authorMasamichi Hosoda <trueroad@trueroad.jp>
Sun, 19 Jun 2016 02:59:45 +0000 (11:59 +0900)
committerMasamichi Hosoda <trueroad@trueroad.jp>
Mon, 27 Jun 2016 14:45:58 +0000 (23:45 +0900)
`-dgs-load-fonts` loads fonts via Ghostscript.
However, Ghostscript could not load
OpenType/CFF Collection (OTC) fonts by this way.
http://bugs.ghostscript.com/show_bug.cgi?id=696808

This commit lets `-dgs-load-fonts` loads the OTC fonts
in a way that is not via Ghostscript.

scm/framework-ps.scm

index ae63cb91e9f3e85fd256710c5dd26625a07b888c..42b60b4042f61b87f8b5b8d68d209fa41ccd476f 100644 (file)
                             (ly:get-option 'datadir)))))
 
   (define (load-font-via-GS font-name-filename)
+    (define (is-collection-font? file-name)
+      (let ((port (open-file file-name "rb")))
+        (if (eq? (read-char port) #\t)
+            (if (eq? (read-char port) #\t)
+                (if (eq? (read-char port) #\c)
+                    (if (eq? (read-char port) #\f)
+                        #t
+                        #f)
+                    #f)
+                #f)
+            #f)))
+
     (define (ps-load-file file-name)
       (if (string? file-name)
           (if (string-contains file-name (ly:get-option 'datadir))
         (ly:warning (_ "Font ~a cannot be loaded via Ghostscript because its font-index (~a) is not zero.")
                     name font-index)
         (load-font font-name-filename))
-       ;; TODO: Check OTC fonts.
+       ((and (string? bare-file-name)
+             (eq? (ly:get-font-format bare-file-name font-index) 'CFF)
+             (is-collection-font? bare-file-name))
+        (ly:warning (_ "Font ~a cannot be loaded via Ghostscript because it is an OpenType/CFF (OTC) font.")
+                    name)
+        (load-font font-name-filename))
        ;; TODO: Check TrueType fonts that do not have glyph names.
        (else
         (cons name