summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2022-01-20 22:53:36 +0100
committerRicardo Wurmus <rekado@elephly.net>2022-01-20 22:56:55 +0100
commit374464a3bbd38f43784af0cdf54ddceed93e41bd (patch)
tree1a1c0d85bd0e4ad245e84c3849bbb6be27ff1db0 /gnu
parent2caf1b25fc5e3759b0f2f26bfd405f16ea49e9da (diff)
gnu: Add texlive-amsfonts/fixed.
* gnu/packages/tex.scm (texlive-amsfonts/fixed): New variable. (texlive-amsfonts)[replacement]: Add reference to texlive-amsfonts/fixed.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/packages/tex.scm166
1 files changed, 166 insertions, 0 deletions
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index bd4c2461a2..89f60f89d5 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -1304,6 +1304,8 @@ Taco Hoekwater.")
"15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw"))))
(package
(inherit template)
+ ;; TODO: This package is missing files.
+ (replacement texlive-amsfonts/fixed)
(arguments
(substitute-keyword-arguments (package-arguments template)
((#:build-targets _ #t)
@@ -1421,6 +1423,170 @@ Modern family of fonts. The Euler fonts are supported by separate packages;
details can be found in the documentation.")
(license license:silofl1.1))))
+(define-public texlive-amsfonts/fixed
+ (let ((template (simple-texlive-package
+ "texlive-amsfonts-fixed"
+ (list "/source/latex/amsfonts/"
+ "/fonts/source/public/amsfonts/"
+ "/fonts/type1/public/amsfonts/"
+ "/fonts/afm/public/amsfonts/"
+ "/fonts/map/dvips/amsfonts/"
+ "/tex/plain/amsfonts/"
+ "/doc/fonts/amsfonts/")
+ (base32
+ "15q70nkjf8wqzbd5ivcdx3i2sdgqxjb38q0qn9a2qw9i0qcnx6zw"))))
+ (package
+ (inherit template)
+ (arguments
+ (substitute-keyword-arguments (package-arguments template)
+ ((#:build-targets _ #t)
+ '(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 '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))))
+ (home-page "https://www.ctan.org/pkg/amsfonts")
+ (synopsis "TeX fonts from the American Mathematical Society")
+ (description
+ "This package provides an extended set of fonts for use in mathematics,
+including: extra mathematical symbols; blackboard bold letters (uppercase
+only); fraktur letters; subscript sizes of bold math italic and bold Greek
+letters; subscript sizes of large symbols such as sum and product; added sizes
+of the Computer Modern small caps font; cyrillic fonts (from the University of
+Washington); Euler mathematical fonts. All fonts are provided as Adobe Type 1
+files, and all except the Euler fonts are provided as Metafont source. The
+distribution also includes the canonical Type 1 versions of the Computer
+Modern family of fonts. The Euler fonts are supported by separate packages;
+details can be found in the documentation.")
+ (license license:silofl1.1))))
+
(define-deprecated-package texlive-fonts-amsfonts texlive-amsfonts)
(define-deprecated-package texlive-latex-amsfonts texlive-amsfonts)