diff options
Diffstat (limited to 'nixpkgs/pkgs/data/fonts/dina/default.nix')
-rw-r--r-- | nixpkgs/pkgs/data/fonts/dina/default.nix | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/data/fonts/dina/default.nix b/nixpkgs/pkgs/data/fonts/dina/default.nix new file mode 100644 index 000000000000..37bf08611f35 --- /dev/null +++ b/nixpkgs/pkgs/data/fonts/dina/default.nix @@ -0,0 +1,78 @@ +{ lib, stdenv, fetchzip, fontforge +, bdftopcf, xorg +}: + +stdenv.mkDerivation { + pname = "dina-font"; + version = "2.92"; + + outputs = [ "out" "bdf" ]; + + src = fetchzip { + url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61"; + hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s="; + extension = "zip"; + stripRoot = false; + }; + + nativeBuildInputs = + [ fontforge bdftopcf xorg.mkfontscale xorg.fonttosfnt ]; + + buildPhase = '' + runHook preBuild + + newName() { + local name=''${1##*/} + test "''${name:5:1}" = i && _it=Italic || _it= + case ''${name:6:3} in + 400) _weight=Medium ;; + 700) _weight=Bold ;; + esac + _pt=''${1%.bdf} + _pt=''${_pt#*-} + echo "Dina$_weight$_it$_pt" + } + + # Re-encode the provided BDF files from CP1252 to Unicode as fonttosfnt does + # not support the former. + # We could generate the PCF and OTB files with fontforge directly, but that + # results in incorrect spacing in various places. + for f in BDF/*.bdf; do + basename=''${f##*/} basename=''${basename%.*} + fontforge -lang=ff -c "Open(\"$f\"); Reencode(\"win\", 1); Reencode(\"unicode\"); Generate(\"$basename.bdf\")" + mv "$basename"-*.bdf "$basename".bdf # remove the superfluous added size suffix + done + + for f in *.bdf; do + name=$(newName "$f") + bdftopcf -t -o "$name.pcf" "$f" + fonttosfnt -v -o "$name.otb" "$f" + done + gzip -n -9 *.pcf + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -D -m 644 -t "$out/share/fonts/misc" *.pcf.gz *.otb + install -D -m 644 -t "$bdf/share/fonts/misc" *.bdf + mkfontdir "$out/share/fonts/misc" + mkfontdir "$bdf/share/fonts/misc" + + runHook postInstall + ''; + + meta = with lib; { + description = "Monospace bitmap font aimed at programmers"; + longDescription = '' + Dina is a monospace bitmap font, primarily aimed at programmers. It is + relatively compact to allow a lot of code on screen, while (hopefully) + clear enough to remain readable even at high resolutions. + ''; + homepage = "https://www.dcmembers.com/jibsen/download/61/"; + license = licenses.free; + maintainers = with maintainers; [ prikhi ncfavier ]; + }; +} |