From c3933fdc40adb18d2e494bfd06435a054893e2f8 Mon Sep 17 00:00:00 2001 From: NullBite Date: Mon, 5 Feb 2024 10:50:25 +0100 Subject: [PATCH] google-fonts: fix font name format When specifying a list of fonts to install, the google-fonts package would previously only search for fonts with the formats `$font-*.ttf` and `$font[*.ttf`. However, certain fonts in the Google fonts repository do not follow this naming scheme (e.g., Nova Square; ofl/novasquare/NovaSquare.ttf). I have added `$font.ttf` as a format. I have also optimized the build script so it does not make multiple calls to `find`. --- pkgs/data/fonts/google-fonts/default.nix | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/pkgs/data/fonts/google-fonts/default.nix b/pkgs/data/fonts/google-fonts/default.nix index d0f055166805..bb3fc3ab0c1d 100644 --- a/pkgs/data/fonts/google-fonts/default.nix +++ b/pkgs/data/fonts/google-fonts/default.nix @@ -40,12 +40,10 @@ stdenvNoCC.mkDerivation { dontBuild = true; - # The font files are in the fonts directory and use two naming schemes: - # FamilyName-StyleName.ttf and FamilyName[param1,param2,...].ttf - # This installs all fonts if fonts is empty and otherwise only - # the specified fonts by FamilyName. To do this, it invokes - # `find` 2 times for every font, anyone is free to do this - # in a more efficient way. + # The font files are in the fonts directory and use three naming schemes: + # FamilyName-StyleName.ttf, FamilyName[param1,param2,...].ttf, and + # FamilyName.ttf. This installs all fonts if fonts is empty and otherwise + # only the specified fonts by FamilyName. fonts = map (font: builtins.replaceStrings [" "] [""] font) fonts; installPhase = '' adobeBlankDest=$adobeBlank/share/fonts/truetype @@ -56,8 +54,7 @@ stdenvNoCC.mkDerivation { find . -name '*.ttf' -exec install -m 444 -Dt $dest '{}' + '' else '' for font in $fonts; do - find . -name "$font-*.ttf" -exec install -m 444 -Dt $dest '{}' + - find . -name "$font[*.ttf" -exec install -m 444 -Dt $dest '{}' + + find . \( -name "$font-*.ttf" -o -name "$font[*.ttf" -o -name "$font.ttf" \) -exec install -m 444 -Dt $dest '{}' + done '');