about summary refs log tree commit diff
path: root/pkgs/data
diff options
context:
space:
mode:
authorMichele Guerini Rocco <rnhmjoj@users.noreply.github.com>2020-02-15 01:28:40 +0100
committerGitHub <noreply@github.com>2020-02-15 01:28:40 +0100
commit8de09faad16428b16ed2dff64cbfa6db82d31857 (patch)
treedb3b15a0b7d6f50145ba3d1c7362b22d01ce4635 /pkgs/data
parent08ac06edbaaeccb4677adca396c30a8f88cb9c92 (diff)
parent36ca91e25306df0f72332a24c8dd67f7a59552bd (diff)
downloadnixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar.gz
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar.bz2
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar.lz
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar.xz
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.tar.zst
nixlib-8de09faad16428b16ed2dff64cbfa6db82d31857.zip
Merge pull request #79664 from rnhmjoj/dina
dina: generate otb files with fontforge
Diffstat (limited to 'pkgs/data')
-rw-r--r--pkgs/data/fonts/dina-pcf/default.nix64
-rw-r--r--pkgs/data/fonts/dina/default.nix57
2 files changed, 46 insertions, 75 deletions
diff --git a/pkgs/data/fonts/dina-pcf/default.nix b/pkgs/data/fonts/dina-pcf/default.nix
deleted file mode 100644
index eff0c579a707..000000000000
--- a/pkgs/data/fonts/dina-pcf/default.nix
+++ /dev/null
@@ -1,64 +0,0 @@
-{stdenv, fetchurl, unzip, bdftopcf, mkfontdir, mkfontscale}:
-
-stdenv.mkDerivation {
-  version = "2.92";
-  pname = "dina-font-pcf";
-
-  src = fetchurl {
-    url = "http://www.donationcoder.com/Software/Jibz/Dina/downloads/Dina.zip";
-    sha256 = "1kq86lbxxgik82aywwhawmj80vsbz3hfhdyhicnlv9km7yjvnl8z";
-  };
-
-  nativeBuildInputs = [ unzip bdftopcf mkfontdir mkfontscale ];
-
-  dontBuild = true;
-  patchPhase = "sed -i 's/microsoft-cp1252/ISO8859-1/' *.bdf";
-  installPhase = ''
-    _get_font_size() {
-      _pt=$\{1%.bdf}
-      _pt=$\{_pt#*-}
-      echo $_pt
-    }
-
-    for i in Dina_i400-*.bdf; do
-        bdftopcf -t -o DinaItalic$(_get_font_size $i).pcf $i
-    done
-    for i in Dina_i700-*.bdf; do
-        bdftopcf -t -o DinaBoldItalic$(_get_font_size $i).pcf $i
-    done
-    for i in Dina_r400-*.bdf; do
-        bdftopcf -t -o DinaMedium$(_get_font_size $i).pcf $i
-    done
-    for i in Dina_r700-*.bdf; do
-        bdftopcf -t -o DinaBold$(_get_font_size $i).pcf $i
-    done
-    gzip -n *.pcf
-
-    fontDir="$out/share/fonts/misc"
-    mkdir -p "$fontDir"
-    mv *.pcf.gz "$fontDir"
-
-    cd "$fontDir"
-    mkfontdir
-    mkfontscale
-  '';
-
-  preferLocalBuild = true;
-
-  outputHashAlgo = "sha256";
-  outputHashMode = "recursive";
-  outputHash = "0v0qn5zwq4j1yx53ypg6w6mqx6dk8l1xix0188b0k4z3ivgnflyb";
-
-  meta = with stdenv.lib; {
-    description = "A 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.donationcoder.com/Software/Jibz/Dina/;
-    downloadPage = https://www.donationcoder.com/Software/Jibz/Dina/;
-    license = licenses.free;
-    maintainers = [ maintainers.prikhi ];
-  };
-}
diff --git a/pkgs/data/fonts/dina/default.nix b/pkgs/data/fonts/dina/default.nix
index 0d4cd286219e..8bc1af60ab4d 100644
--- a/pkgs/data/fonts/dina/default.nix
+++ b/pkgs/data/fonts/dina/default.nix
@@ -1,20 +1,55 @@
-{ stdenv, fetchzip }:
+{ stdenv, fetchurl, unzip
+, bdftopcf, mkfontscale, fontforge
+}:
 
-let
+stdenv.mkDerivation {
+  pname = "dina-font";
   version = "2.92";
-in fetchzip {
-  name = "dina-font-${version}";
 
-  # `meta.homepage` has no direct download link
-  url = "https://github.com/ProgrammingFonts/ProgrammingFonts/archive/b15ef365146be7eef4a46979cfe157c5aeefb7c0.zip";
+  src = fetchurl {
+    url = "http://www.donationcoder.com/Software/Jibz/Dina/downloads/Dina.zip";
+    sha256 = "1kq86lbxxgik82aywwhawmj80vsbz3hfhdyhicnlv9km7yjvnl8z";
+  };
+
+  nativeBuildInputs =
+    [ unzip bdftopcf mkfontscale fontforge ];
+
+  patchPhase = "sed -i 's/microsoft-cp1252/ISO8859-1/' *.bdf";
+
+  buildPhase = ''
+    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"
+    }
+
+    # convert bdf fonts to pcf
+    for i in *.bdf; do
+      bdftopcf -t -o $(newName "$i").pcf "$i"
+    done
+    gzip -n -9 *.pcf
+
+    # convert bdf fonts to otb
+    for i in *.bdf; do
+      fontforge -lang=ff -c "Open(\"$i\"); Generate(\"$(newName $i).otb\")"
+    done
+  '';
 
-  postFetch = ''
-    mkdir -p $out/share/fonts
-    unzip -j $downloadedFile '*/Dina/*.bdf' -d $out/share/fonts
-    chmod u-x $out/share/fonts/*
+  installPhase = ''
+    install -D -m 644 -t "$out/share/fonts/misc" *.pcf.gz
+    install -D -m 644 -t "$bdf/share/fonts/misc" *.bdf
+    install -D -m 644 -t "$otb/share/fonts/misc" *.otb
+    mkfontdir "$out/share/fonts/misc"
+    mkfontdir "$bdf/share/fonts/misc"
+    mkfontdir "$otb/share/fonts/misc"
   '';
 
-  sha256 = "02a6hqbq18sw69npylfskriqhvj1nsk65hjjyd05nl913ycc6jl7";
+  outputs = [ "out" "bdf" "otb" ];
 
   meta = with stdenv.lib; {
     description = "A monospace bitmap font aimed at programmers";