+ (begin
+ (set! never-embed-font-list
+ (append never-embed-font-list (list font-set-name)))
+ (string-append header
+ binary-data
+ footer))))
+
+(define check-conflict-and-embed-cff
+ (let ((font-list '()))
+ (lambda (name file-name font-index)
+ (if name
+ (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))))
+ (begin
+ (ly:debug (_ "Initializing embedded CFF font list."))
+ (set! font-list '()))))))
+
+(define (initialize-font-embedding)
+ (check-conflict-and-embed-cff #f #f #f))