summary refs log tree commit diff
path: root/pkgs/data/fonts/source-han/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/data/fonts/source-han/default.nix')
-rw-r--r--pkgs/data/fonts/source-han/default.nix70
1 files changed, 63 insertions, 7 deletions
diff --git a/pkgs/data/fonts/source-han/default.nix b/pkgs/data/fonts/source-han/default.nix
index 0174324b016..573cfd6c5b9 100644
--- a/pkgs/data/fonts/source-han/default.nix
+++ b/pkgs/data/fonts/source-han/default.nix
@@ -5,7 +5,7 @@
 }:
 
 let
-  makePackage =
+  makeSuperOTC =
     { family
     , description
     , rev
@@ -13,9 +13,10 @@ let
     , zip ? ""
     , prefix ? ""
     }:
-    let Family =
-      lib.toUpper (lib.substring 0 1 family) +
-      lib.substring 1 (lib.stringLength family) family;
+    let
+      Family =
+        lib.toUpper (lib.substring 0 1 family) +
+        lib.substring 1 (lib.stringLength family) family;
     in
     stdenvNoCC.mkDerivation rec {
       pname = "source-han-${family}";
@@ -49,9 +50,36 @@ let
         maintainers = with lib.maintainers; [ taku0 emily ];
       };
     };
+
+  makeVariable =
+    { family
+    , version
+    , hash
+    , format
+    }:
+    let
+      Family =
+        lib.toUpper (lib.substring 0 1 family) +
+        lib.substring 1 (lib.stringLength family) family;
+    in
+    fetchurl {
+      pname = "source-han-${family}-vf-${format}";
+      inherit version hash;
+      url = "https://raw.githubusercontent.com/adobe-fonts/source-han-${family}/${version}R/Variable/OTC/SourceHan${Family}-VF.${format}.ttc";
+      recursiveHash = true;
+      downloadToTemp = true;
+      postFetch = "install -Dm444 $downloadedFile $out/share/fonts/variable/SourceHan${Family}-VF.${format}.ttc";
+
+      meta = {
+        description = "An open source Pan-CJK ${Family} typeface";
+        homepage = "https://github.com/adobe-fonts/source-han-${family}";
+        license = lib.licenses.ofl;
+        maintainers = with lib.maintainers; [ taku0 emily ];
+      };
+    };
 in
 {
-  sans = makePackage {
+  sans = makeSuperOTC {
     family = "sans";
     description = "sans-serif";
     rev = "2.004R";
@@ -59,7 +87,7 @@ in
     zip = ".zip";
   };
 
-  serif = makePackage {
+  serif = makeSuperOTC {
     family = "serif";
     description = "serif";
     rev = "2.001R";
@@ -68,10 +96,38 @@ in
     prefix = "01_";
   };
 
-  mono = makePackage {
+  mono = makeSuperOTC {
     family = "mono";
     description = "monospaced";
     rev = "1.002";
     hash = "sha256-DBkkSN6QhI8R64M2h2iDqaNtxluJZeSJYAz8x6ZzWME=";
   };
+
+  sans-vf-otf = makeVariable {
+    family = "sans";
+    version = "2.004";
+    hash = "sha256-V7PE09c7h4RDS8Ij4PSI36Gy+LM+PVDi73Rcs+4DfHo=";
+    format = "otf";
+  };
+
+  sans-vf-ttf = makeVariable {
+    family = "sans";
+    version = "2.004";
+    hash = "sha256-mXTG/d30gUxzxkJpaH4vOawRXMSxxTXlHCvHEsfGqbc=";
+    format = "ttf";
+  };
+
+  serif-vf-otf = makeVariable {
+    family = "serif";
+    version = "2.002";
+    hash = "sha256-8sD4bU6w7HBm4vBuPAjcjpxN2rtEJugAw+X0bAOcmjA=";
+    format = "otf";
+  };
+
+  serif-vf-ttf = makeVariable {
+    family = "serif";
+    version = "2.002";
+    hash = "sha256-dmTZFRsD55WCOg2+sqd8bkmTSnSNn5xUYf0PgzIvzww=";
+    format = "ttf";
+  };
 }