diff --git a/.github/workflows/casks.yml b/.github/workflows/casks.yml new file mode 100644 index 0000000000..209065f7c7 --- /dev/null +++ b/.github/workflows/casks.yml @@ -0,0 +1,89 @@ +name: Create Casks PR + +env: + HOMEBREW_REPO: Homebrew/homebrew-cask-fonts + HOMEBREW_FORK: Finii/homebrew-cask-fonts + FORK_USER: Finii + FORK_TOKEN: tvguho_cng_11NQ2SVID0Fs35qI0dkGL2_r0WStECYXKRoaOg8ZkkhjtKKJrzRYEzXkGBolrn2NqJFGFCT5COv8lyixqy + +on: + workflow_dispatch: + +jobs: + create-casks: + name: Create casks + runs-on: ubuntu-latest + steps: + - name: Fetch stuff (no checkout) + uses: Bhacaz/checkout-files@v2 + with: + files: bin/scripts/lib/fonts.json bin/scripts/fetch-archives.sh bin/scripts/generate-casks.sh + branch: ${{ github.head_ref || github.ref_name }} + - name: Fetch release artifacts + run: | + cd bin/scripts + chmod u+x * + ./fetch-archives.sh latest Heavy + - name: Determine release tag + id: releasetag + run: | + TAG=$(ls archives/_Release* | head -n 1 | sed 's/.*_Release_//') + echo "Release has tag ${TAG}" + echo "tag=${TAG}" >> $GITHUB_OUTPUT + - name: Create all casks + run: | + cd bin/scripts + ./generate-casks.sh --setversion ${{ steps.releasetag.outputs.tag }} + - name: Upload casks as artifacts + uses: actions/upload-artifact@v2 + with: + name: casks + path: casks + outputs: + tag: ${{ steps.releasetag.outputs.tag }} + + commit-casks: + name: Create commits + runs-on: ubuntu-latest + needs: create-casks + steps: + - name: Do some preparation + id: notsecret + run: | + PAK=$(echo "${FORK_TOKEN}" | tr 'A-Za-z' 'N-ZA-Mn-za-m') + echo "pak=${PAK}" >> $GITHUB_OUTPUT + - name: Checkout Homebrew + uses: actions/checkout@v3 + with: + repository: ${{ env.HOMEBREW_FORK }} + path: homebrew + ref: nerdfonts + token: ${{ steps.notsecret.outputs.pak }} + - name: Update Homebrew fork + run: | + cd homebrew + git remote add upstream https://github.com/${{ env.HOMEBREW_REPO }}.git + git fetch upstream master + git reset --hard upstream/master + git push --force origin HEAD:nerdfonts + - name: Retrieve new casks + uses: actions/download-artifact@v2 + with: + name: casks + path: casks + - name: Prepare changes + run: | + cp casks/* homebrew/Casks + - name: Commit changes + uses: EndBug/add-and-commit@v9 + with: + cwd: homebrew + fetch: false + add: Casks + message: "[ci] Update Nerd Font casks to ${{ needs.create-casks.outputs.tag }}" + committer_name: GitHub Actions + committer_email: 41898282+github-actions[bot]@users.noreply.github.com + - name: Create PR + run: | + echo "Well, this would automatically create a PR, but this is disabled for now:" + echo gh pr create -p ${{ env.HOMEBREW_REPO }} -B master -H nerdfonts -R ${{ env.HOMEBREW_FORK }} -d -f diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4f25726c52..b958e6f13f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -196,17 +196,6 @@ jobs: cd -- "$GITHUB_WORKSPACE/bin/scripts" ./archive-fonts.sh "${{ matrix.font }}" - - name: Generate cask - # The casks are not used at the moment, but probably Ryan - # wanted to push them out somewhere - id: cask_generate - if: false - run: | - cd -- "$GITHUB_WORKSPACE/bin/scripts" - gen=$(./generate-casks.sh "${{ matrix.font }}") - echo $gen - echo path=$(echo "$gen" | grep '^## Created' | sed -E 's/.*: +//') >> $GITHUB_OUTPUT - - name: Upload zip file archive for release uses: softprops/action-gh-release@v0.1.14 if: needs.setup-fonts-matrix.outputs.rel_upload == 'true' @@ -226,17 +215,6 @@ jobs: patched-fonts/${{ matrix.font }} LICENSE - - name: Upload casks as artifacts - if: false - uses: actions/upload-artifact@v2 - with: - name: casks - # adding multiple paths (i.e. LICENSE) is a workaround to get a least common ancestor - # of the root directory for artifact path purposes - path: | - ${{ steps.cask_generate.outputs.path }} - LICENSE - release-font-patcher: name: Archive font patcher and add to release needs: [ setup-fonts-matrix, build ] diff --git a/bin/scripts/README.md b/bin/scripts/README.md index ef6d2433c0..f33e6b0c7c 100644 --- a/bin/scripts/README.md +++ b/bin/scripts/README.md @@ -7,8 +7,9 @@ Note: Usually you need to call the scripts in this directory while actually bein * `data/`: Contains plain text files used to generate the CSS and cheat sheet files * `data/sankey/`: Contains instructions on how to create the sankey glyph table manually [3] * `docker-entrypoint.sh`: This script is packaged into the docker container and is usually used to start patching [2] +* `fetch-archives.sh`: Script to download the release zip archives [6] * `fpfix.py`: Can be used to set isFixedPitch property in a font [x] -* `generate-casks.sh`: Generates cask files for fonts from data in `patched-fonts/` and `archives/`, unused and not recommended by homebrew-fonts +* `generate-casks.sh`: Generates cask files for fonts from data in `archives/` [6] * `generate-css.sh`: Generates the Nerd Fonts CCS, which can be used to access the glyphs on a web page [1] * `generate-fontconfig.sh`: Generates font configuration to enable use of unpatched fonts with Symbols Only Nerd Font [1] * `generate-font-image-previews.sh`: Generates the preview images for `nerdfonts.com` (i.e. gh-pages) [3] @@ -33,4 +34,5 @@ Note: Usually you need to call the scripts in this directory while actually bein [3] To be used manually (sigh) [4] To be used manually [5] Used by CI (github packsvgs workflow) +[6] Used by CI (github casks workflow) [x] Probably not used by anything diff --git a/bin/scripts/fetch-archives.sh b/bin/scripts/fetch-archives.sh new file mode 100755 index 0000000000..02695c124b --- /dev/null +++ b/bin/scripts/fetch-archives.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env bash +# Nerd Fonts Version: 2.3.0-RC +# Script Version: 2.0.0 +# +# Fetches the current release files. +# It fetches the latest release, not release candidate. +# Or fetches the specified release's files. +# +# The second parameter specifies the beginning of the artifact +# name that shall be fetched. If unspecified all artifacts will +# be fetched. +# +# Example runs +# fetch-archives +# fetch-archives v2.2.2 +# fetch-archives v2.2.2 Heavy +# fetch-archives latest HeavyDat + +set -e + +LINE_PREFIX="# [Nerd Fonts] " +scripts_root_dir="$(cd "$(dirname "$0")" && pwd)" +outputdir=$(realpath "${scripts_root_dir}/../../archives") + +if [ $# -ge 1 ]; then + versiontag=$1 +else + versiontag="latest" +fi + +if [ "${versiontag}" != "latest" ]; then + echo "${LINE_PREFIX} Fetching release archives with version tag '${versiontag}'" + releasedata=$(curl -Lf "https://api.github.com/repos/ryanoasis/nerd-fonts/releases") + num=$(jq ".[] | select(.tag_name == \"${versiontag}\") | .assets | length" <<< ${releasedata}) + if [ -z "${num}" ]; then + echo "${LINE_PREFIX} Release tag ${versiontag} unknown" + exit 1 + fi + files=($(jq -r ".[] | select(.tag_name == \"${versiontag}\") | .assets[].name | @sh" <<< ${releasedata})) +else + echo "${LINE_PREFIX} Fetching latest release archives" + releasedata=$(curl -Lf "https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest") + versiontag=$(jq -r ".tag_name" <<< ${releasedata}) + num=$(jq ".assets | length" <<< ${releasedata}) + files=($(jq -r ".assets[].name | @sh" <<< ${releasedata})) +fi + +echo "${LINE_PREFIX} Found ${num} artifacts" + +if [ $# -ge 2 ]; then + pattern=$2 + echo "${LINE_PREFIX} Limiting archive to pattern '${pattern}'" +else + pattern="" + echo "${LINE_PREFIX} No limiting pattern given" +fi +if [ $# -gt 2 ]; then + echo "${LINE_PREFIX} Too many parameters, exiting" + exit 2 +fi + +for assetname in ${files[@]}; do + assetname=${assetname:1:-1} + if [[ ! "${assetname}" =~ ^"${pattern}" ]]; then + continue + fi + echo >&2 "${LINE_PREFIX} Fetching ${versiontag}/${assetname}" + mkdir -p "${outputdir}" + touch "${outputdir}/_Release_${versiontag}" + curl --fail -Lo "${outputdir}/${assetname}" "https://github.com/ryanoasis/nerd-fonts/releases/download/${versiontag}/${assetname}" \ + || echo " => error fetching" +done diff --git a/bin/scripts/generate-casks.sh b/bin/scripts/generate-casks.sh index a7187f2c90..dc42abd794 100755 --- a/bin/scripts/generate-casks.sh +++ b/bin/scripts/generate-casks.sh @@ -1,137 +1,220 @@ #!/usr/bin/env bash # Nerd Fonts Version: 2.3.0-RC -# Script Version: 1.0.1 -# Iterates over all patched fonts directories +# Script Version: 2.2.0 +# +# Iterates over all [*] archived fonts # to generate ruby cask files for homebrew-fonts (https://github.com/caskroom/homebrew-fonts) -# only adds non-Windows versions of the fonts - -#set -x +# * Only adds non-Windows versions of the fonts +# * Needs the zip archives in archives/ (i.e. run `./archive-fonts.sh` first) +# +# Uses the current release version (including drafts) of the repo. +# You can specify a different version with the --setversion parameter. +# A leading 'v' from the version is removed. +# Must be the first parameter. +# +# [1] Accepts one parameter, a pattern which fonts to examine, if not given defaults +# to "*" which is all fonts. +# +# Example runs +# generate-casks.sh Hasklig +# generate-casks.sh --setversion 2.2.0 +# generate-casks.sh Hasklig +# generate-casks.sh --setversion 2.2.0 Hasklig + +# set -x +set -e version="2.3.0-RC" -patched_parent_dir="../../patched-fonts/" homepage="https://github.com/ryanoasis/nerd-fonts" downloadarchive="https://github.com/ryanoasis/nerd-fonts/releases/download/v#{version}/" -sha256sum=":no_check" -appcast="https://github.com/ryanoasis/nerd-fonts/releases.atom" -appcastcheckpoint=$(curl --compressed --location --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36' "https://github.com/ryanoasis/nerd-fonts/releases.atom" | sed 's|[^<]*||g' | shasum --algorithm 256 | head -c 64) LINE_PREFIX="# [Nerd Fonts] " +scripts_root_dir="$(cd "$(dirname "$0")" && pwd)" +archivedir=$(realpath "${scripts_root_dir}/../../archives") + +if [ $# -ge 1 ]; then + if [ "$1" = "--setversion" ]; then + if [ $# -lt 2 ]; then + echo >&2 "$LINE_PREFIX Missing argument for --setversion" + exit 1 + fi + version=$2 + shift; shift + if [ "${version:0:1}" = "v" ]; then + version="${version:1}" + fi + fi +fi -cd $patched_parent_dir || { - echo >&2 "$LINE_PREFIX Could not find patched fonts directory" - exit 1 +cd ${archivedir} || { + echo >&2 "$LINE_PREFIX Could not find archives directory" + exit 1 } function clear_file { - local outputfile=$1 - # clear output file (needed for multiple runs or updates): - true > "$outputfile" 2> /dev/null + local outputfile=$1 + # clear output file (needed for multiple runs or updates): + true > "$outputfile" 2> /dev/null } function write_header { - local outputfile=$1 - local caskname=$2 - - { - printf "cask '%s' do\\n" "$caskname" - printf " version '%s'\\n" "$version" - printf " sha256 '%s'\\n\\n" "$sha256sum" - printf " url \"%s%s.zip\"\\n" "$downloadarchive" "$basename" - printf " appcast '%s',\\n" "$appcast" - printf " checkpoint: '%s'\\n" "$appcastcheckpoint" - } >> "$outputfile" + local outputfile=$1 + local caskname=$2 + + { + printf "cask \"%s\" do\\n" "$caskname" + printf " version \"%s\"\\n" "$version" + printf " sha256 \"%s\"\\n\\n" "$sha256sum" + printf " url \"%s%s.zip\"\\n" "$downloadarchive" "$basename" + } >> "$outputfile" +} + +# Query all Family names of a font individually and return the first +# we found that has "Nerd" in it. We need this because some fonts have +# broken Family names. +function find_nerdish_family { + local fontfile=$1 + local idx=0 + while :; do + local fn=$(fc-query --format="%{family[${idx}]}" "${fontfile}") + if [ -z "$fn" ]; then + return + fi + if [[ "${fn}" == *Nerd* ]]; then + echo "${fn}" + return + fi + idx=$((${idx} + 1)) + done +} + +# Return the longest common starting part of two strings +# This is the stem, the basic base name of the fonts +function find_common_stem { + local first=$1 + local second=$2 + for i in $(seq ${#first} -1 1); do + if [ "${first:0:$i}" == "${second:0:$i}" ]; then + echo "${first:0:$i}" + return + fi + done } function write_body { - local outputfile=$1 - shift; - local fonts=("$@") - - if [ "${fonts[0]}" ]; - then - for i in "${!fonts[@]}" - do - individualfont=$(basename "${fonts[$i]}") - - printf "## Found Font: %s\\n" "${fonts[$i]}" - - if [ "$i" == 0 ]; - then - familyname=$(fc-query --format='%{family}' "${fonts[$i]}") - { - printf " name '%s (%s)'\\n" "$familyname" "$basename" - printf " homepage '%s'" "$homepage" - printf "\\n\\n" - } >> "$outputfile" - fi - - printf " font '%s'\\n" "$individualfont" >> "$outputfile" - - done - else - echo "$LINE_PREFIX Did not find TTF or OTF" - fi + local unpatchedname=$1 + local outputfile=$2 + shift; shift; + local fonts=("$@") + + if [ "${fonts[0]}" ]; then + longest=-1 + # Find longest filename for pretty printing + for i in "${!fonts[@]}"; do + basename=$(basename "${fonts[$i]}") + if [ ${#basename} -gt $longest ]; then + longest=${#basename} + fi + done + # Find familyname of non Mono variant (well, rather shortest because we can contain multiple families) + familyname=$(find_nerdish_family "${fonts[0]}") + for i in "${!fonts[@]}"; do + fn=$(find_nerdish_family "${fonts[$i]}") + familyname=$(find_common_stem "${fn}" "${familyname}") + done + if [ -z "${familyname}" ]; then + echo >&2 "${LINE_PREFIX} Can not determine family name" + exit 2 + fi + # Family names differ in front of "Nerd Font" (stem is short) + if [[ "${familyname}" != *Nerd* ]]; then + familyname="${familyname} Nerd Font families" + fi + familyname="$(tr [:lower:] [:upper:] <<< ${familyname:0:1})${familyname:1}" + # Process font files + for i in "${!fonts[@]}"; do + individualfont=$(basename "${fonts[$i]}") + individualdir=$(dirname "${fonts[$i]}") + + printf " %-${longest}s %s\\n" "${individualfont}" "${individualdir}/" + + if [ "$i" == 0 ]; then + { + printf " name \"%s (%s)\"\\n" "$familyname" "$unpatchedname" + printf " desc \"Developer targeted fonts with a high number of glyphs\"\\n" + printf " homepage \"%s\"" "$homepage" + printf "\\n\\n" + printf " livecheck do\\n" + printf " url :url\\n" + printf " strategy :github_latest\\n" + printf " end\\n\\n" + } >> "$outputfile" + fi + + printf " font \"%s\"\\n" "$individualfont" >> "$outputfile" + + done + else + echo "$LINE_PREFIX Did not find TTF or OTF" + fi } function write_footer { - local outputfile=$1 + local outputfile=$1 - { - printf "end\\n" - } >> "$outputfile" + { + printf "end\\n" + } >> "$outputfile" } -pattern=$1 +pattern="$1.*" if [ "$pattern" = "" ]; then - pattern=".*" + pattern=".*" fi -#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font -#find ./ProFont -maxdepth 2 -type d | # uncomment to test 1 font -find . -maxdepth 1 -mindepth 1 -type d -iregex "\./$pattern" | -while read -r filename -do - - dirname=$(dirname "$filename") - basename=$(basename "$filename") - sha256sum=$(sha256sum "../archives/${basename}.zip" | head -c 64) - searchdir=$filename - - MONOFONTS=() - while IFS= read -d $'\0' -r file ; do - MONOFONTS=("${MONOFONTS[@]}" "$file") - done < <(find "$searchdir" -type f -iwholename '*complete*' \( -iname '*.[o,t]tf' ! -wholename '*Windows*' -iname '*complete mono*' \) -print0) +find . -maxdepth 1 -mindepth 1 -type f -iregex "\./$pattern" -regex ".*\.zip" | sort | +while read -r filename; do - FONTS=() - while IFS= read -d $'\0' -r file ; do - FONTS=("${FONTS[@]}" "$file") - done < <(find "$searchdir" -type f -iwholename '*complete*' \( -iname '*.[o,t]tf' ! -wholename '*Windows*' ! -iname '*complete mono*' \) -print0) + dirname=$(dirname "$filename") + basename=$(basename "$filename" .zip) + if [ ! -f "../archives/${basename}.zip" ]; then + echo "${LINE_PREFIX} No archive for: ${basename}, skipping..." + continue + fi + sha256sum=$(sha256sum "../archives/${basename}.zip" | head -c 64) + searchdir=$filename - outputdir=$PWD/../casks + originalname=$(jq -r ".fonts[] | select(.folderName == "\"${basename}\"") | .unpatchedName" "${scripts_root_dir}/lib/fonts.json" | head -n 1) + caskbasename=$(jq -r ".fonts[] | select(.folderName == "\"${basename}\"") | .caskName" "${scripts_root_dir}/lib/fonts.json" | head -n 1) + if [ -z "$originalname" ]; then + echo "${LINE_PREFIX} Can not find ${basename} in fonts.json, skipping..." + continue + fi - formattedbasename=$(echo "$basename" | tr "[:upper:]" "[:lower:]") + rm -Rf "${basename}" + echo "$LINE_PREFIX Unpacking $basename" + unzip -q "${basename}" -d "${basename}" + searchdir=${basename} - echo "$LINE_PREFIX Generating cask for: $basename" + FONTS=() + while IFS= read -d $'\0' -r file; do + FONTS=("${FONTS[@]}" "$file") + done < <(find "$searchdir" -type f -iwholename '*complete*' \( -iname '*.[o,t]tf' ! -wholename '*Windows Compatible*' \) -print0 | sort -z) - [[ -d "$outputdir" ]] || mkdir -p "$outputdir" + outputdir=$PWD/../casks - caskname="font-$formattedbasename-nerd-font" - caskname_mono="${caskname}-mono" - to="$outputdir/${caskname}.rb" - to_mono="$outputdir/${caskname_mono}.rb" + echo "$LINE_PREFIX Generating cask for: $basename" - clear_file "$to" - write_header "$to" "$caskname" + [[ -d "$outputdir" ]] || mkdir -p "$outputdir" - clear_file "$to_mono" - write_header "$to_mono" "$caskname_mono" + caskname="font-${caskbasename}-nerd-font" + to="$outputdir/${caskname}.rb" - write_body "$to" "${FONTS[@]}" - write_body "$to_mono" "${MONOFONTS[@]}" + clear_file "$to" + write_header "$to" "$caskname" + write_body "$originalname" "$to" "${FONTS[@]}" + write_footer "$to" - write_footer "$to" - write_footer "$to_mono" - - echo "## Created casks: ${outputdir}/${caskname}*.rb" + rm -Rf "${basename}" + echo "## Created casks: $(realpath ${to})" done - diff --git a/bin/scripts/lib/fonts.json b/bin/scripts/lib/fonts.json index 719e2bf310..10a3820dbc 100644 --- a/bin/scripts/lib/fonts.json +++ b/bin/scripts/lib/fonts.json @@ -7,6 +7,7 @@ "folderName": "3270", "imagePreviewFont": "3270 Nerd Font", "linkPreviewFont": "font3270", + "caskName": "3270", "description": "Derived from the x3270 font, a modern format of a font with high nostalgic value" }, { @@ -16,6 +17,7 @@ "folderName": "Agave", "imagePreviewFont": "Agave Nerd Font", "linkPreviewFont": "agave", + "caskName": "agave", "description": "A small, monospace, outline font that is geometrically regular and simple" }, { @@ -25,6 +27,7 @@ "folderName": "AnonymousPro", "imagePreviewFont": "Anonymice Nerd Font", "linkPreviewFont": false, + "caskName": "anonymice", "description": "Inspired by Anonymous 9 on Macintosh, since 2009, distinct `O`, `0`, `I`, `l`, `1`" }, { @@ -34,6 +37,7 @@ "folderName": "Arimo", "imagePreviewFont": "Arimo Nerd Font", "linkPreviewFont": false, + "caskName": "arimo", "description": "Metrically similar to Arial, pan-European WGL character set, sans serif" }, { @@ -43,6 +47,7 @@ "folderName": "AurulentSansMono", "imagePreviewFont": "AurulentSansMono Nerd Font", "linkPreviewFont": "aurulent", + "caskName": "aurulent", "description": "Sans serif, designed by Stephen G. Hartke which also created Verily Serif" }, { @@ -52,6 +57,7 @@ "folderName": "BigBlueTerminal", "imagePreviewFont": "BigBlueTerminal Nerd Font", "linkPreviewFont": false, + "caskName": "bigblue-terminal", "description": "Nostalgic, closely based on IBM's 8x14 EGA/VGA charset" }, { @@ -61,6 +67,7 @@ "folderName": "BitstreamVeraSansMono", "imagePreviewFont": "BitstreamVeraSansMono Nerd Font", "linkPreviewFont": "bitstream-vera", + "caskName": "bitstream-vera-sans-mono", "description": "Dotted zero, compact lowercase characters" }, { @@ -70,6 +77,7 @@ "folderName": "CascadiaCode", "imagePreviewFont": "Caskaydia Cove Nerd Font", "linkPreviewFont": "cascadia-code", + "caskName": "caskaydia-cove", "description": "A fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal" }, { @@ -79,6 +87,7 @@ "folderName": "IBMPlexMono", "imagePreviewFont": "BlexMono Nerd Font", "linkPreviewFont": false, + "caskName": "blex-mono", "description": "It's global, it's versatile and it's distinctly IBM" }, { @@ -88,6 +97,7 @@ "folderName": "CodeNewRoman", "imagePreviewFont": "CodeNewRoman Nerd Font", "linkPreviewFont": "code-new-roman", + "caskName": "code-new-roman", "description": "Tunable, slashed zeros, compact smaller characters" }, { @@ -97,6 +107,7 @@ "folderName": "Cousine", "imagePreviewFont": "Cousine Nerd Font", "linkPreviewFont": "cousine", + "caskName": "cousine", "description": "Similar to Courier New with better readablitiy, dotted zeros" }, { @@ -106,6 +117,7 @@ "folderName": "DaddyTimeMono", "imagePreviewFont": "DaddyTimeMono Nerd Font", "linkPreviewFont": "daddytimemono", + "caskName": "daddy-time-mono", "description": "A monospaced font for programmers and other terminal groupies" }, { @@ -115,6 +127,7 @@ "folderName": "DejaVuSansMono", "imagePreviewFont": "DejaVuSansMono Nerd Font", "linkPreviewFont": "dejavu", + "caskName": "dejavu-sans-mono", "description": "Dotted zero, based on the Bitstream Vera Fonts with a wider range of character" }, { @@ -124,6 +137,7 @@ "folderName": "DroidSansMono", "imagePreviewFont": "DroidSansMono Nerd Font", "linkPreviewFont": "droid-sans", + "caskName": "droid-sans-mono", "description": "Good for small screens or font sizes" }, { @@ -133,6 +147,7 @@ "folderName": "FantasqueSansMono", "imagePreviewFont": "FantasqueSansMono Nerd Font", "linkPreviewFont": "fantasque-sans", + "caskName": "fantasque-sans-mono", "description": "\"Wibbly-wobbly handwriting-like fuzziness\", takes some inspiration from Inconsolata and Monaco" }, { @@ -142,15 +157,17 @@ "folderName": "FiraCode", "imagePreviewFont": "FiraCode Nerd Font", "linkPreviewFont": "firacode", + "caskName": "fira-code", "description": "Programming ligatures, extension of Fira Mono font, enlarged operators" }, { - "unpatchedName": "Fira Mono", + "unpatchedName": "Fira", "RFN": false, "patchedName": "FiraMono", "folderName": "FiraMono", "imagePreviewFont": "FiraMono Nerd Font", "linkPreviewFont": "fira", + "caskName": "fira-mono", "description": "Mozilla typeface, dotted zero" }, { @@ -160,6 +177,7 @@ "folderName": "Go-Mono", "imagePreviewFont": "Go-Mono Nerd Font", "linkPreviewFont": "go-mono", + "caskName": "go-mono", "description": "Created specifically for the Go project, looks particularly clear for use with the Go language" }, { @@ -169,6 +187,7 @@ "folderName": "Gohu", "imagePreviewFont": "Gohu Nerd Font", "linkPreviewFont": false, + "caskName": "gohufont", "description": "Bitmap font, tall capitals and ascenders, small serifs" }, { @@ -178,6 +197,7 @@ "folderName": "Hack", "imagePreviewFont": "Hack Nerd Font", "linkPreviewFont": "hack", + "caskName": "hack", "description": "Dotted zero, short descenders, expands upon work done for Bitstream Vera & DejaVu, legible at common sizes" }, { @@ -187,6 +207,7 @@ "folderName": "Hasklig", "imagePreviewFont": "Hasklug Nerd Font", "linkPreviewFont": "hasklig", + "caskName": "hasklug", "description": "Monospaced ligatures, makes composite glyphs (e.g. ->) more reabable, especially in Haskell" }, { @@ -196,6 +217,7 @@ "folderName": "HeavyData", "imagePreviewFont": "HeavyData Nerd Font", "linkPreviewFont": false, + "caskName": "heavy-data", "description": "Novel and unique design, dotted zero" }, { @@ -205,6 +227,7 @@ "folderName": "Hermit", "imagePreviewFont": "Hurmit Nerd Font", "linkPreviewFont": "hermit", + "caskName": "hurmit", "description": "Symbols stand out from common text" }, { @@ -214,6 +237,7 @@ "folderName": "iA-Writer", "imagePreviewFont": "iM Writing Nerd Font", "linkPreviewFont": "ia-writer-mono", + "caskName": "im-writing", "description": "A heavy modification of IBM's Plex font" }, { @@ -223,6 +247,7 @@ "folderName": "Inconsolata", "imagePreviewFont": "Inconsolata Nerd Font", "linkPreviewFont": "inconsolata", + "caskName": "inconsolata", "description": "Slashed zero, takes inspiration from many different fonts and glyphs, subtle curves in lowercase" }, { @@ -232,6 +257,7 @@ "folderName": "InconsolataGo", "imagePreviewFont": "InconsolataGo Nerd Font", "linkPreviewFont": false, + "caskName": "inconsolata-go", "description": "Inconsolata with straight quotes" }, { @@ -241,6 +267,7 @@ "folderName": "InconsolataLGC", "imagePreviewFont": "InconsolataLGC Nerd Font", "linkPreviewFont": false, + "caskName": "inconsolata-lgc", "description": "Inconsolata with added the Cyrillic alphabet" }, { @@ -250,6 +277,7 @@ "folderName": "Iosevka", "imagePreviewFont": "Iosevka Nerd Font", "linkPreviewFont": "iosevka", + "caskName": "iosevka", "description": "Narrow and horizontally tight characters, slashed zero" }, { @@ -259,6 +287,7 @@ "folderName": "JetBrainsMono", "imagePreviewFont": "JetBrainsMono Nerd Font", "linkPreviewFont": "jetbrainsmono", + "caskName": "jetbrains-mono", "description": "JetBrains officially created font for developers" }, { @@ -268,15 +297,17 @@ "folderName": "Lekton", "imagePreviewFont": "Lekton Nerd Font", "linkPreviewFont": "lekton", + "caskName": "lekton", "description": "Very light and thin characters, sharp m's, `0` and `O` very similar" }, { - "unpatchedName": "Liberation Mono", + "unpatchedName": "Liberation", "RFN": true, "patchedName": "LiterationMono", "folderName": "LiberationMono", "imagePreviewFont": "LiterationMono Nerd Font", "linkPreviewFont": "liberation", + "caskName": "liberation", "description": "`0` and `O` very similar, very short tight descenders" }, { @@ -286,15 +317,17 @@ "folderName": "Lilex", "imagePreviewFont": "Lilex Nerd Font", "linkPreviewFont": "lilex", + "caskName": "lilex", "description": "Modern with ligatures" }, { - "unpatchedName": "Meslo", + "unpatchedName": "Meslo LG", "RFN": false, - "patchedName": "Meslo", + "patchedName": "MesloLG", "folderName": "Meslo", "imagePreviewFont": "Meslo Nerd Font", "linkPreviewFont": "meslo", + "caskName": "meslo-lg", "description": "Slashed zeros, customized version of Apple's Menlo" }, { @@ -304,6 +337,7 @@ "folderName": "Monofur", "imagePreviewFont": "Monofur Nerd Font", "linkPreviewFont": "monofur", + "caskName": "monofur", "description": "Dotted zeros, slightly exaggerated curvy characters, compact characters" }, { @@ -313,6 +347,7 @@ "folderName": "Monoid", "imagePreviewFont": "Monoid Nerd Font", "linkPreviewFont": "monoid", + "caskName": "monoid", "description": "Ligatures, distinguishable glyphs with short ascenders & descenders, large operators & punctuation" }, { @@ -322,6 +357,7 @@ "folderName": "Mononoki", "imagePreviewFont": "Mononoki Nerd Font", "linkPreviewFont": "mononoki", + "caskName": "mononoki", "description": "Keeps in mind differentiation of characters and resolution sizes" }, { @@ -331,6 +367,7 @@ "folderName": "MPlus", "imagePreviewFont": "MPlus Nerd Font", "linkPreviewFont": false, + "caskName": "mplus", "description": "Multiple styles and weights, many glyph sets (e.g. Kana glyphs)" }, { @@ -340,6 +377,7 @@ "folderName": "Noto", "imagePreviewFont": "Noto Nerd Font", "linkPreviewFont": "noto", + "caskName": "noto", "description": "`0` and `O` very similar, characters are either very curvy or straight lined" }, { @@ -349,15 +387,17 @@ "folderName": "ProFont", "imagePreviewFont": "ProFont Nerd Font", "linkPreviewFont": "profont", + "caskName": "profont", "description": "Looks best with anti-aliasing turned off, squared off character corners, vertically tight small `s`" }, { - "unpatchedName": "ProggyClean", + "unpatchedName": "ProggyCleanTT", "RFN": false, "patchedName": "ProggyClean", "folderName": "ProggyClean", "imagePreviewFont": "ProggyClean Nerd Font", "linkPreviewFont": "proggy-clean", + "caskName": "proggy-clean-tt", "description": "Designed particularly for use at small point sizes" }, { @@ -367,6 +407,7 @@ "folderName": "OpenDyslexic", "imagePreviewFont": "OpenDyslexic Nerd Font", "linkPreviewFont": "opendyslexic", + "caskName": "open-dyslexic", "description": "Designed specifically to alleviate reading errors caused by dyslexia" }, { @@ -376,6 +417,7 @@ "folderName": "Overpass", "imagePreviewFont": "Overpass Nerd Font", "linkPreviewFont": "overpass", + "caskName": "overpass", "description": "An open source font family inspired by Highway Gothic" }, { @@ -385,6 +427,7 @@ "folderName": "RobotoMono", "imagePreviewFont": "RobotoMono Nerd Font", "linkPreviewFont": "roboto", + "caskName": "roboto-mono", "description": "Dashed zero, curved and straight character lines" }, { @@ -394,6 +437,7 @@ "folderName": "ShareTechMono", "imagePreviewFont": "ShureTechMono Nerd Font", "linkPreviewFont": "share-tech", + "caskName": "shure-tech-mono", "description": "Dotted zeros, distinguishable 1 and l, curved and straight character lines" }, { @@ -403,6 +447,7 @@ "folderName": "SourceCodePro", "imagePreviewFont": "Sauce Code Pro Nerd Font", "linkPreviewFont": "source-code-pro", + "caskName": "sauce-code-pro", "description": "Monospaced font family for user interface and coding environments" }, { @@ -412,24 +457,27 @@ "folderName": "SpaceMono", "imagePreviewFont": "SpaceMono Nerd Font", "linkPreviewFont": "space", + "caskName": "space-mono", "description": "Squarish character lines, dotted zero, aggressive parethesis" }, { - "unpatchedName": "Symbols Template 1000 EM", + "unpatchedName": "Symbols Only", "RFN": false, "patchedName": "Symbols-1000-em Nerd Font Complete", "folderName": "NerdFontsSymbolsOnly", "imagePreviewFont": "", "linkPreviewFont": false, + "caskName": "symbols-only", "description": "Just the Nerd Font Icons. I.e Symbol font only. 1000 EM size" }, { - "unpatchedName": "Symbols Template 2048 EM", + "unpatchedName": "Symbols Only", "RFN": false, "patchedName": "Symbols-2048-em Nerd Font Complete", "folderName": "NerdFontsSymbolsOnly", "imagePreviewFont": "", "linkPreviewFont": false, + "caskName": "symbols-only", "description": "Just the Nerd Font Icons. I.e Symbol font only. 2048 EM size" }, { @@ -439,6 +487,7 @@ "folderName": "Terminus", "imagePreviewFont": "TerminessTTF Nerd Font", "linkPreviewFont": "terminus", + "caskName": "terminess-ttf", "description": "Squarish characters that are slightly askew" }, { @@ -448,6 +497,7 @@ "folderName": "Tinos", "imagePreviewFont": "Tinos Nerd Font", "linkPreviewFont": false, + "caskName": "tinos", "description": "Some similarities to Times New Roman, designed by Steve Matteson, includes pan-European WGL character set" }, { @@ -457,6 +507,7 @@ "folderName": "Ubuntu", "imagePreviewFont": "Ubuntu Nerd Font", "linkPreviewFont": false, + "caskName": "ubuntu", "description": "Specially created for Ubuntu" }, { @@ -466,6 +517,7 @@ "folderName": "UbuntuMono", "imagePreviewFont": "UbuntuMono Nerd Font", "linkPreviewFont": "ubuntu", + "caskName": "ubuntu-mono", "description": "Dotted zeros, used the `n`, `o`, `H` & `O` Latin characters as a base for design" }, { @@ -475,6 +527,7 @@ "folderName": "VictorMono", "imagePreviewFont": "VictorMono Nerd Font", "linkPreviewFont": "victor-mono", + "caskName": "victor-mono", "description": "Clean, crisp and narrow, with a large x-height and clear punctuation" } ]