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.
parent
7a67e9f3b5
commit
64fcf9508a
|
@ -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
|
||||
|
|
Reference in New Issue