-
-
Save emilazy/a227e07d03650c4e1dafde637ac53597 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# TODO: investigate why https://fasterthanli.me/blog/2020/i-want-off-mr-golangs-wild-ride/ | |
# has wrong weights for Merriweather | |
# | |
# https://thenewstack.io/open-source-hardware-the-rise-of-risc-v/ too | |
{ pkgs, lib, ... }: | |
{ | |
fonts = { | |
enableDefaultFonts = false; | |
fonts = with pkgs; lib.mkForce [ | |
noto-fonts | |
noto-fonts-extra | |
twitter-color-emoji | |
source-sans-pro | |
source-serif-pro | |
source-han-sans | |
source-han-serif | |
source-han-mono | |
# source-han-code-jp | |
# https://en.wikipedia.org/wiki/Help%3AMultilingual_support | |
# missing: Nüshu, Nyiakeng Puachue Hmong | |
# Nüshu is coming! https://github.com/LisaHuang2017/noto-sans-nushu | |
# only option for nyiakeng puachue hmong is unifont :( | |
# TODO: update signwriting package to 3.0.2 (except it doesn't work and sucks rip) | |
# for wider han coverage | |
# seems to have too high a performance impact for now :( | |
hanazono | |
babelstone-han | |
# for math characters | |
# noto sans math might be good enough | |
stix-two | |
# for Sutton SignWriting | |
signwriting | |
# for Siddham | |
# noto is good enough | |
#muktamsiddham | |
# consider packaging for coverage? | |
#quivira | |
# to replace Microsoft fonts | |
liberation_ttf | |
caladea | |
carlito | |
merriweather | |
merriweather-sans | |
# used widely by Google etc. | |
roboto | |
#roboto-mono | |
#roboto-slab | |
# monospace fonts | |
cascadia-code | |
inconsolata | |
#source-code-pro | |
#go-font | |
#iosevka | |
#input-fonts | |
#fira | |
#fira-mono | |
#fira-code | |
]; | |
fontconfig = { | |
allowBitmaps = false; | |
hinting.enable = false; | |
subpixel.rgba = "none"; | |
dpi = 96; | |
# we set these ourselves in localConf | |
defaultFonts = { | |
sansSerif = []; | |
serif = []; | |
monospace = []; | |
}; | |
localConf = let | |
sourceHanDefault = lang: generic: families: '' | |
<match target="pattern"> | |
<test name="lang" compare="contains"> | |
<string>${lang}</string> | |
</test> | |
<test name="family"> | |
<string>${generic}</string> | |
</test>'' + lib.concatMapStrings (family: '' | |
<edit name="family" mode="prepend" binding="strong"> | |
<string>${family}</string> | |
</edit>'') families + '' | |
</match> | |
''; | |
sourceHanDefaults = lang: lib.concatStrings [ | |
(sourceHanDefault lang "sans-serif" ["Source Han Sans"]) | |
(sourceHanDefault lang "serif" ["Source Han Serif"]) | |
# see generic default for explanation | |
(sourceHanDefault lang "monospace" ["Twitter Color Emoji" "Source Han Mono"]) | |
]; | |
in ''<?xml version="1.0"?> | |
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> | |
<fontconfig> | |
<!-- fonts of last resort --> | |
<match> | |
<edit mode="append" name="family"><string>Twitter Color Emoji</string></edit> | |
<edit mode="append" name="family"><string>Noto Sans</string></edit> | |
<edit mode="append" name="family"><string>Source Han Sans</string></edit> | |
<!-- TODO: why does http://www.fileformat.info/info/unicode/block/sutton_signwriting/utf8test.htm use Filling? --> | |
<edit mode="append" name="family"><string>SignWriting 2010</string></edit> | |
</match> | |
<!-- System UI font aliases for web --> | |
${lib.concatMapStrings (family: '' | |
<alias binding="same"> | |
<family>${family}</family> | |
<accept> | |
<family>Source Sans Pro</family> | |
</accept> | |
</alias> | |
'') [ | |
"system-ui" | |
"-apple-system" | |
"BlinkMacSystemFont" | |
"San Francisco" | |
"Segoe UI" | |
# "Droid Sans" | |
"Cantarell" | |
"Oxygen" | |
"Ubuntu" | |
]} | |
${lib.concatMapStrings (family: '' | |
<alias binding="same"> | |
<family>${family}</family> | |
<accept> | |
<family>Cascadia Code</family> | |
</accept> | |
</alias> | |
'') ["SFMono-Regular" "Consolas"]} | |
<!-- | |
<alias binding="same"> | |
<family>Merriweather</family> | |
<default> | |
<family>Georgia</family> | |
</default> | |
</alias> | |
--> | |
<alias binding="same"> | |
<family>Georgia</family> | |
<accept> | |
<family>Merriweather</family> | |
</accept> | |
</alias> | |
<alias binding="same"> | |
<family>Verdana</family> | |
<accept> | |
<family>Noto Sans</family> | |
</accept> | |
</alias> | |
${sourceHanDefaults "ja"} | |
${sourceHanDefaults "zh"} | |
${sourceHanDefaults "ko"} | |
<!-- multilingual defaults --> | |
<alias binding="same"> | |
<family>sans-serif</family> | |
<prefer> | |
<family>Noto Sans</family> | |
<family>Twitter Color Emoji</family> | |
<family>Source Han Sans</family> | |
</prefer> | |
</alias> | |
<alias binding="same"> | |
<family>serif</family> | |
<prefer> | |
<family>Noto Serif</family> | |
<family>Twitter Color Emoji</family> | |
<family>Source Han Serif</family> | |
</prefer> | |
</alias> | |
<alias binding="same"> | |
<family>monospace</family> | |
<prefer> | |
<family>Cascadia Code</family> | |
<family>Twitter Color Emoji</family> | |
<family>Source Han Mono</family> | |
<family>Noto Sans Mono</family> | |
</prefer> | |
</alias> | |
<selectfont> | |
<rejectfont> | |
<pattern><patelt name="family"><string>DejaVu Sans</string></patelt></pattern> | |
<pattern><patelt name="family"><string>Arimo</string></patelt></pattern> | |
<pattern><patelt name="family"><string>Tinos</string></patelt></pattern> | |
<pattern><patelt name="family"><string>Cousine</string></patelt></pattern> | |
<pattern><patelt name="family"><string>Noto Mono</string></patelt></pattern> | |
<pattern><patelt name="family"><string>Noto Emoji</string></patelt></pattern> | |
</rejectfont> | |
</selectfont> | |
</fontconfig> | |
''; | |
}; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment