xcursor-pro: init at 2.0.2 (#335188)
[NixPkgs.git] / pkgs / by-name / di / dina-font / package.nix
blob410dd1a0fef5bf53a18e5e244ae1dff03e26c58b
2   lib,
3   stdenv,
4   fetchzip,
5   fontforge,
6   bdftopcf,
7   xorg,
8 }:
10 stdenv.mkDerivation {
11   pname = "dina-font";
12   version = "2.92";
14   outputs = [
15     "out"
16     "bdf"
17   ];
19   src = fetchzip {
20     url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61";
21     hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s=";
22     extension = "zip";
23     stripRoot = false;
24   };
26   nativeBuildInputs = [
27     fontforge
28     bdftopcf
29     xorg.mkfontscale
30     xorg.fonttosfnt
31   ];
33   buildPhase = ''
34     runHook preBuild
36     newName() {
37       local name=''${1##*/}
38       test "''${name:5:1}" = i && _it=Italic || _it=
39       case ''${name:6:3} in
40           400) _weight=Medium ;;
41           700) _weight=Bold ;;
42       esac
43       _pt=''${1%.bdf}
44       _pt=''${_pt#*-}
45       echo "Dina$_weight$_it$_pt"
46     }
48     # Re-encode the provided BDF files from CP1252 to Unicode as fonttosfnt does
49     # not support the former.
50     # We could generate the PCF and OTB files with fontforge directly, but that
51     # results in incorrect spacing in various places.
52     for f in BDF/*.bdf; do
53       basename=''${f##*/} basename=''${basename%.*}
54       fontforge -lang=ff -c "Open(\"$f\"); Reencode(\"win\", 1); Reencode(\"unicode\"); Generate(\"$basename.bdf\")"
55       mv "$basename"-*.bdf "$basename".bdf # remove the superfluous added size suffix
56     done
58     for f in *.bdf; do
59         name=$(newName "$f")
60         bdftopcf -t -o "$name.pcf" "$f"
61         fonttosfnt -v -o "$name.otb" "$f"
62     done
63     gzip -n -9 *.pcf
65     runHook postBuild
66   '';
68   installPhase = ''
69     runHook preInstall
71     install -D -m 644 -t "$out/share/fonts/misc" *.pcf.gz *.otb
72     install -D -m 644 -t "$bdf/share/fonts/misc" *.bdf
73     mkfontdir "$out/share/fonts/misc"
74     mkfontdir "$bdf/share/fonts/misc"
76     runHook postInstall
77   '';
79   meta = with lib; {
80     description = "Monospace bitmap font aimed at programmers";
81     longDescription = ''
82       Dina is a monospace bitmap font, primarily aimed at programmers. It is
83       relatively compact to allow a lot of code on screen, while (hopefully)
84       clear enough to remain readable even at high resolutions.
85     '';
86     homepage = "https://www.dcmembers.com/jibsen/download/61/";
87     license = licenses.free;
88     maintainers = with maintainers; [
89       prikhi
90       ncfavier
91     ];
92   };