From 64fcf9508af318cc2d71811815cfbe99063867b1 Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Tue, 15 Feb 2022 17:11:23 +0100 Subject: [PATCH] gnu: texlive-amsfonts/fixed: Do not generate tfm from afm and pl files. The TFM files are included in the amsfonts bundle and are meant to installed as is. They were not meant to be the result of converting afm or pl files. We ended up with subtly broken fonts due to this attempted conversion. * gnu/packages/tex.scm (texlive-amsfonts/fixed)[source]: Fetch tfm directory. [arguments]: Remove custom #:modules; remove build phases 'build-fonts and 'install-generated-fonts; adjust 'remove-extra-files; add build phase 'chdir and 'unchdir. [native-inputs]: Remove texlive-fontinst. --- gnu/packages/tex.scm | 137 ++++--------------------------------------- 1 file changed, 10 insertions(+), 127 deletions(-) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 753a6e8d8d..5d5e5e7fc4 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -1431,11 +1431,12 @@ details can be found in the documentation.") "/fonts/source/public/amsfonts/" "/fonts/type1/public/amsfonts/" "/fonts/afm/public/amsfonts/" + "/fonts/tfm/public/amsfonts/" "/fonts/map/dvips/amsfonts/" "/tex/plain/amsfonts/" "/doc/fonts/amsfonts/") (base32 - "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw")))) + "1rpl87643q8v6gcqsz68mjha8wac6cqx7mr16ds8f0ccbw7a4w9b")))) (package (inherit template) (arguments @@ -1444,135 +1445,17 @@ details can be found in the documentation.") '(list "amsfonts.ins")) ((#:tex-directory _ #t) "latex/amsfonts") - ((#:modules modules '()) - `((guix build texlive-build-system) - (guix build utils) - (ice-9 match) - (srfi srfi-1) - (srfi srfi-26))) ((#:phases phases) `(modify-phases ,phases - (add-before 'build 'build-fonts - (lambda* (#:key inputs #:allow-other-keys) - ;; Allow self fonts sources and other resources to be - ;; discovered. - (setenv "GUIX_TEXMF" (string-append (getenv "GUIX_TEXMF") - ":" (getcwd))) - - (let ((build "/tmp/build-fonts")) - (mkdir-p build) - (with-directory-excursion "fonts/source/public/amsfonts" - (for-each (lambda (font) - (format #t "building font ~a\n" (basename font ".mf")) - (with-directory-excursion (dirname font) - (let ((outdir (string-append build "/" (dirname font)))) - (mkdir-p outdir) - (invoke "mf" "-progname=mf" - (string-append "-output-directory=" outdir) - (string-append "\\" - "mode:=ljfour; " - "mag:=1; " - "nonstopmode; " - "input " - (getcwd) "/" - (basename font ".mf")))))) - (find-files "." "([0-9]+|dummy)\\.mf$")))) - - ;; There are no metafont sources for the Euler fonts, so we - ;; convert the afm files instead. - (let ((build "/tmp/build-fonts")) - (mkdir-p build) - (with-directory-excursion "fonts/afm/public/amsfonts/" - ;; These files have bogus values for the Descender field, - ;; so we can't process them. - (substitute* (find-files "." "eus(b|m).*\\.afm$") - (("^Descender -2147483648") "")) - - (for-each (lambda (font) - (let ((directory (string-append build "/" (dirname font)))) - (mkdir-p directory) - (format #t "converting afm font ~a\n" (basename font ".afm")) - (invoke "afm2tfm" font - (string-append directory "/" - (basename font ".afm") - ".tfm")))) - (find-files "." "\\.afm$"))) - - ;; Frustratingly, not all fonts can be created this way. To - ;; generate eufm8.tfm, for example, we first scale down - ;; eufm10.afm to eufm8.pl, and then generate the tfm file from - ;; the pl file. - (setenv "TEXINPUTS" - (string-append ":" build "//:" - (getcwd) "/fonts/afm/public/amsfonts//:" - (getcwd) "/source/latex/amsfonts//:")) - - (with-directory-excursion (string-append build "/euler") - (for-each (match-lambda - (((target-base target-size) - (source-base source-size)) - (let ((factor (number->string - (truncate/ (* 1000 target-size) - source-size)))) - (invoke "tex" - "-interaction=scrollmode" - (string-append "\\input fontinst.sty " - "\\transformfont{" target-base "}" - "{\\scalefont{" factor "}" - "{\\fromafm{" source-base "}}} " - "\\bye"))) - (invoke "pltotf" - (string-append target-base ".pl") - (string-append target-base ".tfm")) - (delete-file (string-append target-base ".pl")))) - - '((("eufb6" 6) ("eufb7" 7)) - (("eufb8" 8) ("eufb10" 10)) - (("eufb9" 9) ("eufb10" 10)) - - (("eufm6" 6) ("eufm7" 7)) - (("eufm8" 8) ("eufm10" 10)) - (("eufm9" 9) ("eufm10" 10)) - - (("eurb6" 6) ("eurb7" 7)) - (("eurb8" 8) ("eurb10" 10)) - (("eurb9" 9) ("eurb10" 10)) - - (("eurm6" 6) ("eurm7" 7)) - (("eurm8" 8) ("eurm10" 10)) - (("eurm9" 9) ("eurm10" 10)) - - (("eusb6" 6) ("eusb7" 7)) - (("eusb8" 8) ("eusb10" 10)) - (("eusb9" 9) ("eusb10" 10)) - - (("eusm6" 6) ("eusm7" 7)) - (("eusm8" 8) ("eusm10" 10)) - (("eusm9" 9) ("eusm10" 10)))))))) - (add-after 'install 'install-generated-fonts - (lambda* (#:key inputs outputs #:allow-other-keys) - (copy-recursively "/tmp/build-fonts" - (string-append - (assoc-ref outputs "out") - "/share/texmf-dist/fonts/tfm/public/amsfonts")))) + (add-after 'unpack 'chdir + (lambda _ (chdir "source/latex/amsfonts"))) + (add-before 'copy-files 'unchdir + (lambda _ (chdir "../../.."))) (add-after 'copy-files 'remove-extra-files - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((prefix (string-append - (assoc-ref outputs "out") - "/share/texmf-dist/fonts/"))) - (for-each delete-file - (find-files (string-append prefix - "tfm/public/amsfonts/") - "\\.(mtx|pl|log|600gf)")) - (for-each delete-file-recursively - (list (string-append (assoc-ref outputs "out") - "/share/texmf-dist/build/") - (string-append prefix - "tfm/public/amsfonts/cm/") - (string-append prefix - "tfm/public/amsfonts/latxfont/")))))))))) - (native-inputs - (list (texlive-updmap.cfg (list texlive-fontinst)))) + (lambda* (#:key outputs #:allow-other-keys) + (delete-file-recursively + (string-append (assoc-ref outputs "out") + "/share/texmf-dist/source/latex/amsfonts/build/")))))))) (home-page "https://www.ctan.org/pkg/amsfonts") (synopsis "TeX fonts from the American Mathematical Society") (description