From 027f7687583d1a9f2e5291907b4e121a247bcd23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Na=C3=AFm=20Favier?= Date: Sat, 31 Dec 2022 19:51:20 +0100 Subject: [PATCH] dina-font: fix encoding MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The provided BDF files are encoded as CP1252, but they claim to be ISO8859-1. This causes a few glyphs (like `œ`) to be unused. Use fontforge to re-encode from CP1252 to Unicode, but keep doing the conversion with other tools because fontforge introduces spacing issues. --- pkgs/data/fonts/dina/default.nix | 48 +++++++++++++++++++------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/pkgs/data/fonts/dina/default.nix b/pkgs/data/fonts/dina/default.nix index 509a37556ce..4a0612efd3e 100644 --- a/pkgs/data/fonts/dina/default.nix +++ b/pkgs/data/fonts/dina/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, unzip +{ lib, stdenv, fetchzip, fontforge , bdftopcf, xorg }: @@ -8,32 +8,41 @@ stdenv.mkDerivation { outputs = [ "out" "bdf" ]; - src = fetchurl { - url = "http://www.donationcoder.com/Software/Jibz/Dina/downloads/Dina.zip"; - sha256 = "1kq86lbxxgik82aywwhawmj80vsbz3hfhdyhicnlv9km7yjvnl8z"; + src = fetchzip { + url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61"; + hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s="; + extension = "zip"; + stripRoot = false; }; nativeBuildInputs = - [ unzip bdftopcf xorg.mkfontscale xorg.fonttosfnt ]; - - postPatch = '' - sed -i 's/microsoft-cp1252/ISO8859-1/' *.bdf - ''; + [ fontforge bdftopcf xorg.mkfontscale xorg.fonttosfnt ]; buildPhase = '' runHook preBuild newName() { - test "''${1:5:1}" = i && _it=Italic || _it= - case ''${1:6:3} in - 400) test -z $it && _weight=Medium ;; - 700) _weight=Bold ;; - esac - _pt=''${1%.bdf} - _pt=''${_pt#*-} - echo "Dina$_weight$_it$_pt" + 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" @@ -62,9 +71,8 @@ stdenv.mkDerivation { relatively compact to allow a lot of code on screen, while (hopefully) clear enough to remain readable even at high resolutions. ''; - homepage = "https://www.donationcoder.com/Software/Jibz/Dina/"; - downloadPage = "https://www.donationcoder.com/Software/Jibz/Dina/"; + homepage = "https://www.dcmembers.com/jibsen/download/61/"; license = licenses.free; - maintainers = [ maintainers.prikhi ]; + maintainers = with maintainers; [ prikhi ncfavier ]; }; }