nixpkgs-suyu/pkgs/data/fonts/uw-ttyp0/default.nix
rnhmjoj 6545e5a506
pkgs/data/fonts: merge back the split otb output
Since the Pango issue 457[1] has been fixed and Nixpkgs patched, it's no
longer necessary to keep X11 and .otb fonts in separate outputs (previously
they would cause application to display broken fonts).

[1]: https://gitlab.gnome.org/GNOME/pango/-/issues/457
2020-08-22 09:45:05 +02:00

90 lines
2.3 KiB
Nix

{ stdenv, fetchurl, perl
, bdftopcf, bdf2psf, mkfontdir
, fonttosfnt
, targetsDat ? null
, variantsDat ? null
}:
stdenv.mkDerivation rec {
pname = "uw-ttyp0";
version = "1.3";
src = fetchurl {
url = "https://people.mpi-inf.mpg.de/~uwe/misc/${pname}/${pname}-${version}.tar.gz";
sha256 = "1vp053bwv8sr40p3pn4sjaiq570zp7knh99z9ynk30v7ml4cz2i8";
};
# remove for version >1.3
patches = [ ./determinism.patch ];
nativeBuildInputs = [ perl bdftopcf bdf2psf fonttosfnt mkfontdir ];
# configure sizes, encodings and variants
preConfigure =
(if targetsDat == null
then ''
cat << EOF > TARGETS.dat
SIZES = 11 12 13 14 15 16 17 18 22 \
11b 12b 13b 14b 15b 16b 17b 18b 22b 15i 16i 17i 18i
ENCODINGS = uni
EOF
''
else ''cp "${targetsDat}" TARGETS.dat'') +
(if variantsDat == null
then ''
cat << EOF > VARIANTS.dat
COPYTO AccStress PApostropheAscii
COPYTO PAmComma AccGraveAscii
COPYTO Digit0Slashed Digit0
EOF
''
else ''cp "${variantsDat}" VARIANTS.dat'');
postBuild = ''
# convert bdf fonts to psf
build=$(pwd)
mkdir {psf,otb}
cd ${bdf2psf}/share/bdf2psf
for i in $build/genbdf/*.bdf; do
name="$(basename $i .bdf)"
bdf2psf \
--fb "$i" standard.equivalents \
ascii.set+useful.set+linux.set 512 \
"$build/psf/$name.psf"
done
cd -
# convert unicode bdf fonts to otb
for i in $build/genbdf/*-uni.bdf; do
name="$(basename $i .bdf)"
fonttosfnt -v -o "$build/otb/$name.otb" "$i"
done
'';
postInstall = ''
# install psf fonts
fontDir="$out/share/consolefonts"
install -m 644 -D psf/*.psf -t "$fontDir"
# install otb fonts
fontDir="$out/share/fonts/X11/misc"
install -m 644 -D otb/*.otb -t "$fontDir"
mkfontdir "$fontDir"
'';
# Nix with multiple outputs adds several flags
# that the ./configure script doesn't understand.
configurePhase = ''
runHook preConfigure
./configure --prefix="$out"
runHook postConfigure
'';
meta = with stdenv.lib; {
description = "Monospace bitmap screen fonts for X11";
homepage = "https://people.mpi-inf.mpg.de/~uwe/misc/uw-ttyp0/";
license = with licenses; [ free mit ];
maintainers = with maintainers; [ rnhmjoj ];
};
}