Commit aa7aa11

HPCesia <me@hpcesia.com>
2026-10-07 14:04:54
fonts: update config
1 parent 02360f4
Changed files (6)
modules
desktop
modules/desktop/aesthetic/fonts.nix → modules/desktop/aesthetic/fonts/default.nix
@@ -22,10 +22,18 @@
       serif = mkOption {
         type = types.listOf fontType;
         default = [
+          {
+            name = "Source Han Serif SC VF";
+            package = pkgs: pkgs.source-han-serif-vf-ttf;
+          }
           {
             name = "Noto Serif CJK SC";
             package = pkgs: pkgs.noto-fonts-cjk-serif;
           }
+          {
+            name = "Symbols Nerd Font";
+            package = pkgs: pkgs.nerd-fonts.symbols-only;
+          }
         ];
       };
       sansSerif = mkOption {
@@ -35,15 +43,27 @@
             name = "Sarasa Gothic SC";
             package = pkgs: pkgs.sarasa-gothic;
           }
+          {
+            name = "Source Han Sans SC VF";
+            package = pkgs: pkgs.source-han-sans-vf-ttf;
+          }
           {
             name = "Noto Sans CJK SC";
             package = pkgs: pkgs.noto-fonts-cjk-sans;
           }
+          {
+            name = "Symbols Nerd Font";
+            package = pkgs: pkgs.nerd-fonts.symbols-only;
+          }
         ];
       };
       monospace = mkOption {
         type = types.listOf fontType;
         default = [
+          {
+            name = "JetBrains Mono";
+            package = pkgs: pkgs.jetbrains-mono;
+          }
           {
             name = "Maple Mono NF CN";
             package = pkgs: pkgs.maple-mono.NF-CN;
@@ -53,10 +73,18 @@
       emoji = mkOption {
         type = types.listOf fontType;
         default = [
+          {
+            name = "Twitter Color Emoji";
+            package = pkgs: pkgs.twitter-color-emoji;
+          }
           {
             name = "Noto Color Emoji";
             package = pkgs: pkgs.noto-fonts-color-emoji;
           }
+          {
+            name = "Symbols Nerd Font";
+            package = pkgs: pkgs.nerd-fonts.symbols-only;
+          }
         ];
       };
     };
@@ -72,16 +100,44 @@
         enableDefaultPackages = false;
         fontDir.enable = true;
 
-        packages =
-          (map (x: x.package pkgs)
+        packages = lib.unique ((map (x: x.package pkgs)
             (lib.concatMap (x: cfg.${x}) ["serif" "sansSerif" "monospace" "emoji"]))
           ++ (with pkgs; [
+            # CJK
+            arphic-ukai
+            lxgw-wenkai
+            lxgw-neoxihei
+            nur.repos.hpcesia.lxgw-neozhisong
+            nur.repos.hpcesia.zhuque-fangsong
+
+            # Latn
             dejavu_fonts
+            gyre-fonts
+            inter
             noto-fonts-lgc-plus
-          ]);
-        fontconfig.defaultFonts =
-          lib.genAttrs ["serif" "sansSerif" "monospace" "emoji"]
-          (x: lib.unique (map (x: x.name) cfg.${x}));
+
+            # Math
+            stix-two
+            tex-gyre-math.termes
+
+            # Misc
+            unifont
+            unifont_upper
+          ]));
+
+        fontconfig = {
+          antialias = true;
+          hinting = {
+            enable = false;
+            style = "none";
+          };
+
+          defaultFonts =
+            lib.genAttrs ["serif" "sansSerif" "monospace" "emoji"]
+            (x: lib.unique (map (x: x.name) cfg.${x}));
+
+          localConf = builtins.readFile ./fonts.local.xml;
+        };
       };
     };
   };
modules/desktop/aesthetic/fonts/fonts.local.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+  <match target="pattern">
+    <test name="family">
+      <string>KaiTi</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>AR PL UKai CN</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family">
+      <string>楷体</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>AR PL UKai CN</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family">
+      <string>楷体_GB2312</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>AR PL UKai CN</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>FangSong</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Zhuque Fangsong (technical preview)</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>SimFang</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Zhuque Fangsong (technical preview)</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>STFangsong</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Zhuque Fangsong (technical preview)</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>仿宋</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Zhuque Fangsong (technical preview)</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>华文仿宋</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Zhuque Fangsong (technical preview)</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family" qual="any">
+      <string>Times New Roman</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>TeX Gyre Termes</string>
+    </edit>
+  </match>
+  <match target="pattern">
+    <test name="family">
+      <string>Source Han Serif SC</string>
+    </test>
+    <edit name="family" mode="prepend" binding="strong">
+      <string>Source Han Serif SC VF</string>
+    </edit>
+  </match>
+</fontconfig>
modules/desktop/app/browser/floorp/default.nix
@@ -122,8 +122,6 @@
             "browser.newtabpage.activity-stream.feeds.telemetry" = false;
             "browser.newtabpage.activity-stream.telemetry" = false;
             # == Appearance ==
-            "font.name.monospace.x-western" = (builtins.elemAt fontsCfg.monospace 0).name;
-            "font.name.sans-serif.x-western" = (builtins.elemAt fontsCfg.sansSerif 0).name;
             "browser.newtabpage.activity-stream.feeds.topsites" = false;
             "browser.newtabpage.activity-stream.default.sites" = "";
             "browser.toolbars.bookmarks.visibility" = "always";
modules/desktop/app/term/foot.nix
@@ -17,7 +17,7 @@
         value = {
           main = {
             pad = "10x10";
-            font = "${(builtins.elemAt fontsCfg.monospace 0).name}:size=${toString fontsCfg.size}";
+            font = "monospace:size=${toString fontsCfg.size}";
             dpi-aware = "no";
           };
         };
modules/desktop/app/libreoffice.nix
@@ -6,10 +6,6 @@
       ];
     };
 
-    nixos = {pkgs, ...}: {
-      fonts.packages = [pkgs.nur.repos.rewine.ttf-ms-win10];
-    };
-
     hjem = {pkgs, ...}: {
       packages = [pkgs.libreoffice];
     };
modules/desktop/kmscon.nix
@@ -13,7 +13,6 @@
         extraOptions = "--term xterm-256color";
         config = {
           hwaccel = config.hardware.facter.detected.graphics.enable or false;
-          font-name = (builtins.elemAt fontsCfg.monospace 0).name;
           font-size = fontsCfg.size;
         };
       };