From: Jan Nieuwenhuizen Date: Mon, 7 Jun 2010 08:03:57 +0000 (+0200) Subject: Svg with woff fonts: move framework support to backend-lib.scm. X-Git-Tag: release/2.13.26-1~8 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d59b3e4801e5832c86e9210724ac3d2ec4fef1be;p=lilypond.git Svg with woff fonts: move framework support to backend-lib.scm. --- diff --git a/scm/backend-library.scm b/scm/backend-library.scm index cc689d8482..0c80ee66b3 100644 --- a/scm/backend-library.scm +++ b/scm/backend-library.scm @@ -243,3 +243,63 @@ (lambda (x) (module-remove! output-module x)) missing-stencil-list)) + +(define (filter-out pred? lst) + (filter (lambda (x) (not (pred? x))) lst)) + +(define-public (font-name-split font-name) + "Return (FONT-NAME . DESIGN-SIZE) from FONT-NAME string or #f." + (let ((match (regexp-exec (make-regexp "(.*)-([0-9]*)") font-name))) + (if (regexp-match? match) + (cons (match:substring match 1) (match:substring match 2)) + (cons font-name-designsize #f)))) + +;; Example of a pango-physical-font +;; ("Emmentaler-11" "/home/janneke/vc/lilypond/out/share/lilypond/current/fonts/otf/emmentaler-11.otf" 0) +(define-public (pango-pf-font-name pango-pf) + "Return the font-name of the pango physical font PANGO-PF." + (list-ref pango-pf 0)) +(define-public (pango-pf-file-name pango-pf) + "Return the file-name of the pango physical font PANGO-PF." + (list-ref pango-pf 1)) +(define-public (pango-pf-fontindex pango-pf) + "Return the fontindex of the pango physical font PANGO-PF." + (list-ref pango-pf 2)) + +(define (pango-font-name pango-font) + (pango-pf-font-name (car (ly:pango-font-physical-fonts pango-font)))) + +(define-public (define-fonts paper define-font define-pango-pf) + "Return a string of all fonts used in PAPER, invoking the functions +DEFINE-FONT DEFINE-PANGO-PF for producing the actual font definition." + + (let* ((font-list (ly:paper-fonts paper)) + (pango-fonts (filter ly:pango-font? font-list)) + (other-fonts (filter-out ly:pango-font? font-list)) + (other-font-names (map ly:font-name other-fonts)) + (pango-only-fonts + (filter-out (lambda (x) + (member (pango-font-name x) other-font-names)) + pango-fonts))) + + (define (font-load-command font) + (let* ((font-name (ly:font-name font)) + (designsize (ly:font-design-size font)) + (magnification (* (ly:font-magnification font))) + (ops (ly:output-def-lookup paper 'output-scale)) + (scaling (* ops magnification designsize))) + (if (equal? font-name "unknown") + (display (list font font-name))) + (define-font font font-name scaling))) + + (define (pango-font-load-command pango-font) + (let* ((pango-pf (car (ly:pango-font-physical-fonts pango-font))) + (font-name (pango-pf-font-name pango-pf)) + (scaling (ly:output-def-lookup paper 'output-scale))) + (if (equal? font-name "unknown") + (display (list pango-font font-name))) + (define-pango-pf pango-pf font-name scaling))) + + (string-append + (apply string-append (map font-load-command other-fonts)) + (apply string-append (map pango-font-load-command pango-only-fonts))))) diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 61175c5896..409e8c1f88 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -891,62 +891,3 @@ between the two text elements." (define-public (laissez-vibrer::print grob) (ly:tie::print grob)) -(define (filter-out pred? lst) - (filter (lambda (x) (not (pred? x))) lst)) - -(define-public (font-name-split font-name) - "Return (FONT-NAME . DESIGN-SIZE) from FONT-NAME string or #f." - (let ((match (regexp-exec (make-regexp "(.*)-([0-9]*)") font-name))) - (if (regexp-match? match) - (cons (match:substring match 1) (match:substring match 2)) - (cons font-name-designsize #f)))) - -;; Example of a pango-physical-font -;; ("Emmentaler-11" "/home/janneke/vc/lilypond/out/share/lilypond/current/fonts/otf/emmentaler-11.otf" 0) -(define-public (pango-pf-font-name pango-pf) - "Return the font-name of the pango physical font PANGO-PF." - (list-ref pango-pf 0)) -(define-public (pango-pf-file-name pango-pf) - "Return the file-name of the pango physical font PANGO-PF." - (list-ref pango-pf 1)) -(define-public (pango-pf-fontindex pango-pf) - "Return the fontindex of the pango physical font PANGO-PF." - (list-ref pango-pf 2)) - -(define (pango-font-name pango-font) - (pango-pf-font-name (car (ly:pango-font-physical-fonts pango-font)))) - -(define-public (define-fonts paper define-font define-pango-pf) - "Return a string of all fonts used in PAPER, invoking the functions -DEFINE-FONT DEFINE-PANGO-PF for producing the actual font definition." - - (let* ((font-list (ly:paper-fonts paper)) - (pango-fonts (filter ly:pango-font? font-list)) - (other-fonts (filter-out ly:pango-font? font-list)) - (other-font-names (map ly:font-name other-fonts)) - (pango-only-fonts - (filter-out (lambda (x) - (member (pango-font-name x) other-font-names)) - pango-fonts))) - - (define (font-load-command font) - (let* ((font-name (ly:font-name font)) - (designsize (ly:font-design-size font)) - (magnification (* (ly:font-magnification font))) - (ops (ly:output-def-lookup paper 'output-scale)) - (scaling (* ops magnification designsize))) - (if (equal? font-name "unknown") - (display (list font font-name))) - (define-font font font-name scaling))) - - (define (pango-font-load-command pango-font) - (let* ((pango-pf (car (ly:pango-font-physical-fonts pango-font))) - (font-name (pango-pf-font-name pango-pf)) - (scaling (ly:output-def-lookup paper 'output-scale))) - (if (equal? font-name "unknown") - (display (list pango-font font-name))) - (define-pango-pf pango-pf font-name scaling))) - - (string-append - (apply string-append (map font-load-command other-fonts)) - (apply string-append (map pango-font-load-command pango-only-fonts)))))