Change:
This is a follow up to and the comment in AFAICT, just like the variable fonts are best for CJK, they are the best version to use for all the other Noto fonts too. This is what . The variable fonts save a lot of disk space (10.94MiB vs 1.02MiB for Sinhala) and provide all variations, as well as enabling custom font variations in software that supports them. I was wondering about hinting but it seems that all that's is . ttfautohint is built into FreeType so I think it gets run on Linux regardless for TTF fonts. Now, the Adobe CFF renderer for OTF is better than the TTF renderer, and ideally we would get OTF variable fonts like with CJK. But those aren't available at the moment. unhinted/slim-variable-ttf is a variable font with only 400 (Regular) through 700 (Bold) on the weight axis, prepared for Android system UI use (, ), it's smaller at 353 KB vs 1.03MB. Since we ship Light (300) in the main noto-fonts package I think we want the full range. Although Fedora the slim, the savings from removing weights seems small IMO. I'm opening this now but I think we should wait a week or two before switching over the fonts, in case there is more fallout from the variable CJK switch. cc since you've been writing all the patches recently
OK, disk usage report on a download of So sparse git checkout is the way to go, to avoid the archive directory. Now, comparing the options: edit: numbers redone with a Python script based on actual font family names. Discovered several bugs in the font files during this. The VF options are all combined with (unhinted) OTF since the variable fonts cover only a subset of the fonts. The slim VF doesn't have Light, so to keep the same font set noto-font would include Light and LightItalic OTFs (5M or so). As I thought, Slim seems like a loser. It's worse than shipping the individual OTF's, by 3M (because it includes Medium and SemiBold). And it duplicates the font weights with VFs in noto-extra, which save a lot of space. The full variable fonts can either be in noto-fonts or noto-extra. If they are in noto-extra, we have to ship the normal OTF fonts ; if in noto-fonts we can skip this. VF in noto-extra minimizes the size of noto-fonts, while VF in noto-fonts minimizes Hydra usage and avoids shipping fonts twice. Even with the VF in noto-fonts, it's still a savings versus the hinted TTF. So overall this confirms my initial thoughts, ship the full VF set in noto-fonts. What do other people think?
VF in noto sounds good to me
Also, Light/LightItalic should be in the extra package IMO, and the main package should be limited to . Those are the , and the split is also what Debian does ( ). Looking at it seems Light was included in noto-fonts only because it was available in the 2016 git snapshot. It's only a 1M difference though, not sure if important. 58M and 59M are both close to the current 60M.
Ah, they were included because KDE says they need Light . And there's a vague sort of promise that . So I guess Light stays in. Although, most of the relevant languages have VF's with all weights, so it's kind of a corner case.
Alright, the status now is to wait a few days to see if Google fixes , , , and , as fixing those will simplify the packaging. Worst case I'll have to special-case exclude the buggy fonts.
PR is up,
Only tangentially related, but since you're probably fairly familiar with the Noto packaging process now, I was wondering if you saw the of the monochrome Noto Emoji (as opposed to Noto Color Emoji). I can't seem to find the source on GitHub (the still contains the old Noto Emoji, which is unmaintained and ), but the new version is available from under the SIL OFL. This bundle contains ttf's for five weights as well as a variable font; unfortunately, on the variable font indicates it only exposes three of these weights, so it might be best to hold off on the variable version for now. What do you think about modifying the package to install this new version instead of the old one? The five weights weigh in under 5 MiB.
Hmm, it should at least be in But it isn't. I think I will wait until it appears on GitHub somewhere, as the website link looks like it will break when they update the font. As far as packaging goes, we should probably have separate noto-emoji-color and noto-emoji packages.

Discussion:
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. <del> This package also includes the Arimo, Cousine, and Tinos fonts. </del> ''; in rec { mkNoto = { pname <del> , weights </del> , variants ? [ ] , longDescription ? notoLongDescription }: stdenvNoCC.mkDerivation rec { inherit pname; <del> version = "20201206-phase3"; </del> <ins> version = "23.4.1"; </ins> src = fetchFromGitHub { <del> owner = "googlefonts"; repo = "noto-fonts"; rev = "v${version}"; hash = "sha256-x60RvCRFLoGe0CNvswROnDkIsUFbWH+/laN8q2qkUPk="; </del> <ins> owner = "notofonts"; repo = "notofonts.github.io"; rev = "noto-monthly-release-${version}"; hash = "sha256-hiBbhcwktacuoYJnZcsh7Aej5QIrBNkqrel2NhjNjCU="; </ins> }; _variants = map (variant: builtins.replaceStrings [ " " ] [ "" ] variant) variants; installPhase = '' <del> # We copy in reverse preference order -- unhinted first, then # hinted -- to get the "best" version of each font while </del> <ins> # We check availability in order of variable -> otf -> ttf # unhinted -- the hinted versions use autohint </ins> # maintaining maximum coverage. # <del> # TODO: install OpenType, variable versions? local out_ttf=$out/share/fonts/truetype/noto </del> <ins> # We have a mix of otf and ttf fonts local out_font=$out/share/fonts/noto </ins> '' + (if _variants == [ ] then '' <del> install -m444 -Dt $out_ttf archive/unhinted/*/*-${weights}.ttf install -m444 -Dt $out_ttf archive/hinted/*/*-${weights}.ttf install -m444 -Dt $out_ttf unhinted/*/*/*-${weights}.ttf install -m444 -Dt $out_ttf hinted/*/*/*-${weights}.ttf </del> <ins> for folder in $(ls -d fonts/*/); do if [[ -d "$folder"unhinted/variable-ttf ]]; then install -m444 -Dt $out_font "$folder"unhinted/variable-ttf/*.ttf elif [[ -d "$folder"unhinted/otf ]]; then install -m444 -Dt $out_font "$folder"unhinted/otf/*.otf else install -m444 -Dt $out_font "$folder"unhinted/ttf/*.ttf fi done </ins> '' else '' for variant in $_variants; do <del> install -m444 -Dt $out_ttf archive/unhinted/$variant/*-${weights}.ttf install -m444 -Dt $out_ttf archive/hinted/$variant/*-${weights}.ttf install -m444 -Dt $out_ttf unhinted/*/$variant/*-${weights}.ttf install -m444 -Dt $out_ttf hinted/*/$variant/*-${weights}.ttf </del> <ins> if [[ -d fonts/"$variant"/unhinted/variable-ttf ]]; then install -m444 -Dt $out_font fonts/"$variant"/unhinted/variable-ttf/*.ttf elif [[ -d fonts/"$variant"/unhinted/otf ]]; then install -m444 -Dt $out_font fonts/"$variant"/unhinted/otf/*.otf else install -m444 -Dt $out_font fonts/"$variant"/unhinted/ttf/*.ttf fi </ins> done '');

inherit longDescription; license = licenses.ofl; platforms = platforms.all; <del> maintainers = with maintainers; [ mathnerd314 emily ]; </del> <ins> maintainers = with maintainers; [ mathnerd314 emily jopejoe1 ]; </ins> }; };

noto-fonts = mkNoto { pname = "noto-fonts"; <del> weights = "{Regular,Bold,Light,Italic,BoldItalic,LightItalic}"; </del> }; noto-fonts-lgc-plus = mkNoto { pname = "noto-fonts-lgc-plus"; <del> weights = "{Regular,Bold,Light,Italic,BoldItalic,LightItalic}"; </del> variants = [ "Noto Sans" "Noto Serif" <del> "Noto Sans Display" "Noto Serif Display" </del> "Noto Sans Mono" "Noto Music" "Noto Sans Symbols"

''; }; <del> noto-fonts-extra = mkNoto { pname = "noto-fonts-extra"; weights = "{Black,Condensed,Extra,Medium,Semi,Thin}*"; }; </del> noto-fonts-cjk-sans = mkNotoCJK { typeface = "Sans"; version = "2.004";

nomad_1_1 = throw "nomad_1_1 has been removed because it's outdated. Use a a newer version instead"; # Added 2022-05-22 nordic-polar = throw "nordic-polar was removed on 2021-05-27, now integrated in nordic"; # Added 2021-05-27 noto-fonts-cjk = noto-fonts-cjk-sans; # Added 2021-12-16 <ins> noto-fonts-extra = noto-fonts; # Added 2023-04-08 </ins> nottetris2 = throw "nottetris2 was removed because it is unmaintained by upstream and broken"; # Added 2022-01-15 now-cli = throw "now-cli has been replaced with nodePackages.vercel"; # Added 2021-08-05 ntdb = throw "ntdb has been removed: abandoned by upstream"; # Added 2022-04-21

noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-emoji <del> noto-fonts-emoji-blob-bin noto-fonts-extra; </del> <ins> noto-fonts-emoji-blob-bin; </ins> nuclear = callPackage ../applications/audio/nuclear { };