- (name (cadr font-name-filename))
- (file-name (caddr font-name-filename))
- (bare-file-name (ly:find-file file-name)))
- (cons name
- (if (mac-font? bare-file-name)
- (handle-mac-font name bare-file-name)
- (cond
- ((internal-font? file-name)
- (ps-load-file (ly:find-file
- (format "~a.otf" file-name))))
- ((string? bare-file-name)
- (ps-load-file file-name))
- (else
- (ly:warning (_ "cannot embed ~S=~S") name file-name)
- ""))))))
+ (name (cadr font-name-filename))
+ (file-name (caddr font-name-filename))
+ (font-index (cadddr font-name-filename))
+ (bare-file-name (ly:find-file file-name)))
+ (cond
+ ((and (number? font-index)
+ (!= font-index 0))
+ (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))
+ ((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 Collection (OTC) font.")
+ name)
+ (load-font font-name-filename))
+ ((and (string? bare-file-name)
+ (eq? (ly:get-font-format bare-file-name font-index) 'TrueType)
+ (not (ly:has-glyph-names? bare-file-name font-index)))
+ (ly:warning (_ "Font ~a cannot be used via Ghostscript because it is a TrueType font that does not have glyph names.")
+ name)
+ (load-font font-name-filename))
+ (else
+ (begin
+ (if (or (and font (cff-font? font))
+ (and (string? bare-file-name)
+ (not (eq? (ly:get-font-format
+ bare-file-name
+ font-index) 'TrueType))))
+ (set! never-embed-font-list
+ (append never-embed-font-list (list name))))
+ (cons name
+ (if (mac-font? bare-file-name)
+ (handle-mac-font name bare-file-name)
+ (cond
+ ((and font (cff-font? font))
+ (ps-load-file (ly:find-file
+ (format #f "~a.otf" file-name))))
+ ((string? bare-file-name)
+ (ps-load-file file-name))
+ (else
+ (ly:warning (_ "cannot embed ~S=~S") name file-name)
+ "")))))))))