about summary refs log tree commit diff
path: root/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/data/fonts/noto-fonts/default.nix')
-rw-r--r--nixpkgs/pkgs/data/fonts/noto-fonts/default.nix190
1 files changed, 190 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix b/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix
new file mode 100644
index 000000000000..a2f96a5e980f
--- /dev/null
+++ b/nixpkgs/pkgs/data/fonts/noto-fonts/default.nix
@@ -0,0 +1,190 @@
+{ stdenv
+, stdenvNoCC
+, lib
+, fetchFromGitHub
+, fetchurl
+, fetchzip
+, cairo
+, python3
+, pkg-config
+, pngquant
+, which
+, imagemagick
+, zopfli
+}:
+
+let
+  mkNoto = { pname, weights }:
+    stdenvNoCC.mkDerivation {
+      inherit pname;
+      version = "2020-01-23";
+
+      src = fetchFromGitHub {
+        owner = "googlefonts";
+        repo = "noto-fonts";
+        rev = "f4726a2ec36169abd02a6d8abe67c8ff0236f6d8";
+        sha256 = "0zc1r7zph62qmvzxqfflsprazjf6x1qnwc2ma27kyzh6v36gaykw";
+      };
+
+      installPhase = ''
+        # We copy in reverse preference order -- unhinted first, then
+        # hinted -- to get the "best" version of each font while
+        # maintaining maximum coverage.
+        #
+        # TODO: install OpenType, variable versions?
+        local out_ttf=$out/share/fonts/truetype/noto
+        install -m444 -Dt $out_ttf phaseIII_only/unhinted/ttf/*/*-${weights}.ttf
+        install -m444 -Dt $out_ttf phaseIII_only/hinted/ttf/*/*-${weights}.ttf
+        install -m444 -Dt $out_ttf unhinted/*/*-${weights}.ttf
+        install -m444 -Dt $out_ttf hinted/*/*-${weights}.ttf
+      '';
+
+      meta = with lib; {
+        description = "Beautiful and free fonts for many languages";
+        homepage = "https://www.google.com/get/noto/";
+        longDescription =
+        ''
+          When text is rendered by a computer, sometimes characters are
+          displayed as “tofu”. They are little boxes to indicate your device
+          doesn’t have a font to display the text.
+
+          Google has been developing a font family called Noto, which aims to
+          support all languages with a harmonious look and feel. Noto is
+          Google’s answer to tofu. The name noto is to convey the idea that
+          Google’s goal is to see “no more tofu”.  Noto has multiple styles and
+          weights, and freely available to all.
+
+          This package also includes the Arimo, Cousine, and Tinos fonts.
+        '';
+        license = licenses.ofl;
+        platforms = platforms.all;
+        maintainers = with maintainers; [ mathnerd314 emily ];
+      };
+    };
+in
+
+{
+  noto-fonts = mkNoto {
+    pname = "noto-fonts";
+    weights = "{Regular,Bold,Light,Italic,BoldItalic,LightItalic}";
+  };
+
+  noto-fonts-extra = mkNoto {
+    pname = "noto-fonts-extra";
+    weights = "{Black,Condensed,Extra,Medium,Semi,Thin}*";
+  };
+
+  noto-fonts-cjk = stdenvNoCC.mkDerivation rec {
+    pname = "noto-fonts-cjk";
+    version = "2.001";
+
+    src = fetchzip {
+      url = "https://raw.githubusercontent.com/googlefonts/noto-cjk/NotoSansV${version}/NotoSansCJK.ttc.zip";
+      # __MACOSX...
+      stripRoot = false;
+      sha256 = "0ik4z2b15i0pghskgfm3adzb0h35fr4gyzvz3bq49hhkhn9h85vi";
+    };
+
+    buildCommand = ''
+      install -m444 -Dt $out/share/fonts/opentype/noto-cjk $src/*.ttc
+    '';
+
+    meta = with lib; {
+      description = "Beautiful and free fonts for CJK languages";
+      homepage = "https://www.google.com/get/noto/help/cjk/";
+      longDescription =
+      ''
+        Noto Sans CJK is a sans serif typeface designed as an intermediate style
+        between the modern and traditional. It is intended to be a multi-purpose
+        digital font for user interface designs, digital content, reading on laptops,
+        mobile devices, and electronic books. Noto Sans CJK comprehensively covers
+        Simplified Chinese, Traditional Chinese, Japanese, and Korean in a unified font
+        family. It supports regional variants of ideographic characters for each of the
+        four languages. In addition, it supports Japanese kana, vertical forms, and
+        variant characters (itaiji); it supports Korean hangeul — both contemporary and
+        archaic.
+      '';
+      license = licenses.ofl;
+      platforms = platforms.all;
+      maintainers = with maintainers; [ mathnerd314 emily ];
+    };
+  };
+
+  noto-fonts-emoji = let
+    version = "2020-09-16-unicode13_1";
+    emojiPythonEnv =
+      python3.withPackages (p: with p; [ fonttools nototools ]);
+  in stdenv.mkDerivation {
+    pname = "noto-fonts-emoji";
+    version = builtins.replaceStrings [ "_" ] [ "." ] version;
+
+    src = fetchFromGitHub {
+      owner = "googlefonts";
+      repo = "noto-emoji";
+      rev = "v${version}";
+      sha256 = "0659336dp0l2nkac153jpcb9yvp0p3dx1crcyxjd14i8cqkfi2hh";
+    };
+
+    nativeBuildInputs = [
+      cairo
+      imagemagick
+      zopfli
+      pngquant
+      which
+      pkg-config
+      emojiPythonEnv
+    ];
+
+    postPatch = ''
+      patchShebangs *.py
+      patchShebangs third_party/color_emoji/*.py
+      # remove check for virtualenv, since we handle
+      # python requirements using python.withPackages
+      sed -i '/ifndef VIRTUAL_ENV/,+2d' Makefile
+
+      # Make the build verbose so it won't get culled by Hydra thinking that
+      # it somehow got stuck doing nothing.
+      sed -i 's;\t@;\t;' Makefile
+    '';
+
+    enableParallelBuilding = true;
+
+    installPhase = ''
+      mkdir -p $out/share/fonts/noto
+      cp NotoColorEmoji.ttf fonts/NotoEmoji-Regular.ttf $out/share/fonts/noto
+    '';
+
+    meta = with lib; {
+      inherit version;
+      description = "Color and Black-and-White emoji fonts";
+      homepage = "https://github.com/googlefonts/noto-emoji";
+      license = with licenses; [ ofl asl20 ];
+      platforms = platforms.all;
+      maintainers = with maintainers; [ mathnerd314 ];
+    };
+  };
+
+  noto-fonts-emoji-blob-bin = stdenv.mkDerivation rec {
+    pname = "noto-fonts-emoji-blob-bin";
+    version = "2019-06-14-Emoji-12";
+
+    src = fetchurl {
+      url = "https://github.com/C1710/blobmoji/releases/download/v${version}/Blobmoji.ttf";
+      sha256 = "0snvymglmvpnfgsriw2cnnqm0f4llav0jvzir6mpd17mqqhhabbh";
+    };
+
+    dontUnpack = true;
+
+    installPhase = ''
+      install -D $src $out/share/fonts/blobmoji/Blobmoji.ttf
+    '';
+
+    meta = with lib; {
+      description = "Noto Emoji with extended Blob support";
+      homepage = "https://github.com/C1710/blobmoji";
+      license = with licenses; [ ofl asl20 ];
+      platforms = platforms.all;
+      maintainers = with maintainers; [ rileyinman ];
+    };
+  };
+}