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