]> git.donarmstrong.com Git - lilypond.git/commitdiff
Issue 4909/2: Add checking conflicts between CFF flavored fonts
authorMasamichi Hosoda <trueroad@trueroad.jp>
Tue, 28 Jun 2016 09:44:49 +0000 (18:44 +0900)
committerMasamichi Hosoda <trueroad@trueroad.jp>
Mon, 4 Jul 2016 12:47:36 +0000 (21:47 +0900)
This commit adds checking conflicts between fonts
which have same name in 'CFF' table
but different name in 'name' table.

scm/framework-ps.scm

index 36c4dda9cbdcacafbe5a4fad77d41e6b4e18c8fe..8221e5eab35229e1e2f2e558ed1ca46e1ca3c152 100644 (file)
                    binary-data
                    footer)))
 
+(define check-conflict-and-embed-cff
+  (let ((font-list '()))
+    (lambda (name file-name font-index)
+      (let* ((name-symbol (string->symbol name))
+             (args-filename-offset
+              (cons file-name (ly:get-cff-offset file-name font-index)))
+             (found-filename-offset (assq name-symbol font-list)))
+        (if found-filename-offset
+            (begin
+              (if (equal? args-filename-offset (cdr found-filename-offset))
+                  (ly:debug
+                   (_ "CFF font `~a' already embedded, skipping.")
+                   name)
+                  (ly:warning
+                   (_ "Different CFF fonts which have the same name `~a' has been detected. The font cannot be embedded.")
+                   name))
+              "")
+            (begin
+              (ly:debug
+               (_ "Embedding CFF font `~a'")
+               name)
+              (set! font-list
+                    (acons name-symbol args-filename-offset font-list))
+              (ps-embed-cff (ly:otf->cff file-name font-index) name 0)))))))
+
 (define (write-preamble paper load-fonts? port)
   (define (internal-font? font-name-filename)
     (let* ((font (car font-name-filename))
         (ly:ttf->pfa file-name font-index))
        ((eq? font-format 'CFF)
         ;; OpenType/CFF fonts (OTF) and OpenType/CFF Collection (OTC)
-        (ps-embed-cff (ly:otf->cff file-name font-index) name 0))
+        (check-conflict-and-embed-cff name file-name font-index))
        (else
         (ly:warning (_ "do not know how to embed ~S=~S") name file-name)
         ""))))