remove old nerd font

This commit is contained in:
subframe7536 2023-07-25 09:37:29 +08:00
parent 98ba77f7ab
commit fdea8ba133
148 changed files with 0 additions and 24763 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,4 +0,0 @@
**
!src/glyphs
!font-patcher
!bin/scripts/docker-entrypoint.sh

View file

@ -1,12 +0,0 @@
temp-glyph-source-fonts/*
temp/*
patched-fonts/Input*
unpatched-sample-fonts/Input*
casks/*
archives/*
private.cfg
node_modules
# Only apps should have lockfiles
package-lock.json
# generated *.uuid files
*.uuid

View file

@ -1,10 +0,0 @@
language: bash
# Use container-based infrastructure for quicker build start-up
sudo: false
script:
- bash -c 'shopt -s globstar; shellcheck --exclude SC2034 **/*.sh'
matrix:
fast_finish: true

View file

@ -1,9 +0,0 @@
## Backers
Special thanks to these backers for their support:
[<img src="https://avatars.githubusercontent.com/u/99691?v=4" width="100px;"/><br/><sub><b>Deven Phillips</b></sub>](https://github.com/InfoSec812)
<br/>
[<img src="https://avatars.githubusercontent.com/u/37636?v=4" width="100px;"/><br/><sub><b>Mark Watson</b></sub>](https://github.com/markwatson)
<br/>

View file

@ -1,21 +0,0 @@
# U+0021 exclam glyph ID 580
exclam touch 22,23,24,25 y -0.5 @14
# U+0025 percent glyph ID 762
percent touch 0,1,16 y 0.75 @10,11
percent touch 23,24,25 y 0.25 @10,11
percent touch 17,18,32,46,47,48 y 0.5 @10,11
percent touch 57,58,71 y -0.25 @10,11
percent touch 33,34,35,36 y 0.5 @10,11
percent touch 63,64,65 y 0.75 @10,11
percent touch 23,24,25,63,64,65 y 0.5 @14
percent touch 17,18,32,57,58,71 y -0.5 @14
# U+002B plus glyph ID 765
plus touch 0,1,2,3,6,7,8,9 y 0.5 @10,11
# U+0038 eight glyph ID 556
uni0038 touch 41,42,43 y 0.25 @12,13,14
uni0038 touch 34,35,48 y -0.25 @12,13,14

View file

@ -1,4 +0,0 @@
# U+002B plus glyph ID 751
plus touch 0,1,2,3,6,7,8,9 y 0.5 @10,11

View file

@ -1,21 +0,0 @@
# [ U+002B ] adjust the space in the vertical stroke of bar glyph
# bar touch 4,7 y 0.5 @ 6
# bar touch 4,7 y 0.25 @ 7
# bar touch 4,7 y 1 @ 10,11,12,13,14
# bar touch 0,3 y -0.25 @ 6
# bar touch 0,3 y -0.5 @ 7
# bar touch 0,3 y -1 @ 10,14
# # U+0025 percent glyph 750
percent touch 0,1,21,22,23,39 y 0.5 @10
percent touch 40 y 0.75 @10
percent touch 41,42,43 y 0.5 @10
percent touch 51,52,53,72,73,74 y 0.5 @10
percent touch 40,43 y -0.75 @11
percent touch 41,42 y 0.75 @11
percent touch 0,1,21,22,23,39 y -0.25 @14
percent touch 8,9,10,30,31,32 y 0.25 @14
percent touch 51,52,53,72,73,74 y -0.5 @14
percent touch 40,41,42,43 y -0.25 @14

View file

@ -1,25 +0,0 @@
# U+0023 numbersign glyph ID 582
numbersign touch 0,1,2,3,18,19,20,21,22,23,24,25,26,27,28,31 x 0.25 @ 13
# U+0025 percent glyph 761
percent touch 0,1,21,22,23,39 y 0.5 @10
percent touch 40 y 0.75 @10
percent touch 41,42,43 y 0.5 @10
percent touch 51,52,53,70,71,72 y 0.5 @10
percent touch 40,43 y -0.75 @11
percent touch 41,42 y 0.75 @11
percent touch 0,1,21,22,23,39 y -0.25 @14
percent touch 8,9,10,30,31,32 y 0.25 @14
percent touch 51,52,53,70,71,72 y -0.5 @14
percent touch 40,41,42,43 y -0.25 @14
# U+002B plus glyph ID 764
plus touch 4,5,10,11 y 0.5 @12
plus touch 4,5 y 1.0 @13
# U+0030 zero glyph ID 548
uni0030 touch 35,36,45,46,47,56 y -0.5 @8
uni0030 touch 35,36,56 y -1.0 @12,13,14

View file

@ -1,58 +0,0 @@
#!/usr/bin/env bash
# ------------------------------------------------------------------
#
# autohint.sh
# Copyright 2016 Christopher Simpkins
# MIT license
# Modified by Ryan L McIntyre
# for Nerd Fonts (https://github.com/ryanoasis/nerd-fonts)
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.1
#
# ------------------------------------------------------------------
# DESCRIPTION
# Applies hints to the Hack ttf font builds with ttfautohint
# Executable: ttfautohint (http://www.freetype.org/ttfautohint/doc/ttfautohint.html)
fontfile=$1
echo "[Nerd Fonts] Autohinting Hack '$fontfile'"
command -v ttfautohint >/dev/null 2>&1 || {
echo "[Nerd Fonts] 'ttfautohint' is required (not installed). Aborting." >&2; exit 1;
}
nerdfonts_hack_scripts_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# ttfautohint - Input and output file names must not be identical
cp "$fontfile" "${fontfile}.tmp"
if [[ "$fontfile" == *"Regular"* ]]
then
echo "[Nerd Fonts] Hinting Hack Regular"
ttfautohint -l 6 -r 50 -x 10 -H 181 -D latn -f latn -w G -W -t -X "" -I -m "${nerdfonts_hack_scripts_dir}/Hack-Regular-TA.txt" "${fontfile}.tmp" "$fontfile"
elif [[ "$fontfile" == *"Bold"* ]]
then
echo "[Nerd Fonts] Hinting Hack Bold"
ttfautohint -l 6 -r 50 -x 10 -H 260 -D latn -f latn -w G -W -t -X "" -I -m "${nerdfonts_hack_scripts_dir}/Hack-Bold-TA.txt" "${fontfile}.tmp" "$fontfile"
elif [[ "$fontfile" == *"Italic"* ]]
then
echo "[Nerd Fonts] Hinting Hack Italic"
ttfautohint -l 6 -r 50 -x 10 -H 145 -D latn -f latn -w G -W -t -X "" -I -m "${nerdfonts_hack_scripts_dir}/Hack-Italic-TA.txt" "${fontfile}.tmp" "$fontfile"
elif [[ "$fontfile" == *"BoldItalic"* ]]
then
echo "[Nerd Fonts] Hinting Hack Bold Italic"
ttfautohint -l 6 -r 50 -x 10 -H 265 -D latn -f latn -w G -W -t -X "" -I -m "${nerdfonts_hack_scripts_dir}/Hack-BoldItalic-TA.txt" "${fontfile}.tmp" "$fontfile"
else
echo "[Nerd Fonts] Could not find any Hack fonts to hint..."
fi
# clean-up
rm "${fontfile}.tmp"
echo "[Nerd Fonts] Completed Autohinting Hack '$fontfile'"
exit 0

View file

@ -1,47 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright 2013,2016 The Font Bakery Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# See AUTHORS.txt for the list of Authors and LICENSE.txt for the License.
# Adapted for the Hack typeface build workflow by Chris Simpkins
from __future__ import print_function, unicode_literals
import sys
import os
from fontTools import ttLib
def set_empty_dsig(ttFont):
newDSIG = ttLib.newTable("DSIG")
newDSIG.ulVersion = 1
newDSIG.usFlag = 0
newDSIG.usNumSigs = 0
newDSIG.signatureRecords = []
ttFont.tables["DSIG"] = newDSIG
def main(argv):
for path in argv:
if not os.path.exists(path):
sys.stderr.write("[fix-dsig.py] ERROR: " + path + " is not a valid path to a font file")
sys.exit(1)
else:
font = ttLib.TTFont(path)
set_empty_dsig(font)
font.save(path)
print(path + " - successful DSIG table fix")
if __name__ == '__main__':
main(sys.argv[1:])

View file

@ -1,36 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright 2016 The Fontbakery Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Adapted for the Hack typeface build workflow by Chris Simpkins
import os
import sys
from fontTools.ttLib import TTFont
def main(argv):
for path in argv:
if not os.path.exists(path):
sys.stderr.write("[fix-fstype.py] ERROR: " + path + " is not a valid path to a font file")
sys.exit(1)
else:
font = TTFont(path)
font['OS/2'].fsType = 0
font.save(path)
print(path + " - successful fstype fix")
if __name__ == '__main__':
main(sys.argv[1:])

View file

@ -1,14 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.2.0
fontfile=$1
dir=$(dirname "$0")
"${dir}/fix-dsig.py" "$fontfile"
"${dir}/fix-fstype.py" "$fontfile"
"${dir}/autohint.sh" "$fontfile"
printf "\\n"
printf "[Nerd Fonts] Post Processed Hack '%s'\\n" "$fontfile"

View file

@ -1,40 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
# Archives the font patcher script and the required source files
# used for debugging
# set -x
# LINE_PREFIX="# [Nerd Fonts]"
scripts_root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/"
parent_dir="${PWD}/../../"
outputdir=$scripts_root_dir../../archives
mkdir -p "$outputdir"
# create a mini readme with basic info on Nerd Fonts project
touch "$outputdir/readme.md"
mini_readme="$outputdir/readme.md"
cat "$parent_dir/src/archive-font-patcher-readme.md" >> "$mini_readme"
# clear out the directory zips
find "${outputdir:?}" -name "FontPatcher.zip" -type f -delete
cd -- "$scripts_root_dir/../../" || exit 1
find "src/glyphs" | zip -9 "$outputdir/FontPatcher" -@
find "font-patcher" | zip -9 "$outputdir/FontPatcher" -@
# add mini readme file
zip -9 "$outputdir/FontPatcher" -rj "$mini_readme" -q
rm -f "$mini_readme"
# @TODO check zip status
# zipStatus=$?
# if [ "$zipStatus" != "0" ]
# then
# echo "$LINE_PREFIX error, font-patcher archive not created"
# exit 1
# else
# echo "$LINE_PREFIX font-patcher archive created successfully"
# fi;

View file

@ -1,84 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.1
# Iterates over all patched fonts directories
# to generate ruby cask files for homebrew-fonts (https://github.com/caskroom/homebrew-fonts)
# adds Windows versions of the fonts as well (casks files just won't download them)
# used for debugging
# set -x
# Example run with pattern matching:
# ./archive-fonts heavydata
# Example with same font names for different paths
# ./archive-fonts gohu
LINE_PREFIX="# [Nerd Fonts] "
scripts_root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/"
parent_dir="${PWD}/../../"
echo "dir $scripts_root_dir"
outputdir=$scripts_root_dir../../archives
mkdir -p "$outputdir"
cd "$scripts_root_dir/../../patched-fonts/" || {
echo >&2 "$LINE_PREFIX Could not find patched fonts directory"
exit 1
}
# limit archiving to given pattern (first script param) or entire root folder if no param given:
if [ $# -eq 1 ]
then
pattern=$1
search_pattern="*$1*.zip"
echo "$LINE_PREFIX Limiting archive to pattern '$pattern'"
else
pattern=".*"
search_pattern="*.zip"
echo "$LINE_PREFIX No limiting pattern given, will search entire folder"
fi
# create a mini readme with basic info on Nerd Fonts project
touch "$outputdir/readme.md"
mini_readme="$outputdir/readme.md"
cat "$parent_dir/src/archive-readme.md" >> "$mini_readme"
# clear out the directory zips
find "${outputdir:?}" -name "$search_pattern" -type f -delete
#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font
#find ./ProFont -maxdepth 0 -type d | # uncomment to test 1 font
# find ./IBMPlexMono -maxdepth 0 -type d | # uncomment to test 1 font
# uncomment to test all fonts:
find -- * -maxdepth 0 -iregex "$pattern" -type d |
while read -r filename
do
basename=$(basename "$filename")
searchdir=$filename
[[ -d "$outputdir" ]] || mkdir -p "$outputdir"
# add font files:
# -ic (ignore case not working)
zip -9 "$outputdir/$basename" -rj "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF' -q
zipStatus=$?
if [ "$zipStatus" != "0" ]
then
echo "$LINE_PREFIX Could not create archive with the path junked (-j option) - likely same font names for different paths, zip status: $zipStatus"
echo "$LINE_PREFIX Retrying with full path"
# add font files and license files as full paths:
zip -9 "$outputdir/$basename" -r "$searchdir" -i '*.[o,t]tf' -i '*.[O,T]TF' -i '*license*' -i '*LICENSE*' -q
else
# we can copy the font files without full paths but not necessarily the license files:
# add license files separately:
# zip -9 "$outputdir/$basename" -rj "$searchdir" -i '*license*' -i '*LICENSE*'
# work around to copy duplicate license files (only the last duplicate found)
# so we don't have to copy entire paths and can still use the junk option (-j)
find "$searchdir" -type f -iname "*license*" | awk -F/ '{a[$NF]=$0}END{for(i in a)print a[i]}' | zip -9 -j "$outputdir/$basename" -@
fi;
# add mini readme file
zip -9 "$outputdir/$basename" -rj "$mini_readme" -q
rm -f "$mini_readme"
done
ls -al "$outputdir"

View file

@ -1,21 +0,0 @@
@font-face {
font-family: 'NerdFontsSymbols Nerd Font';
/* @TODO you need to adjust the path to the font: */
src: url("../fonts/NerdFontsSymbols-2048-em Nerd Font Complete.ttf") format("truetype");
font-weight: normal;
font-style: normal;
}
.nf, .nerd-font, .nerd-fonts {
font-family: 'NerdFontsSymbols Nerd Font';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Font Rendering (from devicons, et al) */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

View file

@ -1,24 +0,0 @@
#!/bin/sh
args=""
# check all args for --out or -o
while [ "$#" -gt 0 ]; do
if [ "$1" = "-out" ] || [ "$1" = "--outputdir" ];then
# move past the option
shift
# and the value if there is one
case "$1" in
-*) continue ;;
*) shift $(( $# > 0 ? 1 : 0 )) ;;
esac
continue
fi
args="$args $1"
shift
done
printf "Running with options:\n%s\n" "$args"
# shellcheck disable=SC2086
for f in /in/*.otf /in/*.ttf /in/*.woff /in/*.eot /in/*.ttc; do [ -f "$f" ] && fontforge -script /nerd/font-patcher -out /out $args "$f"; done

View file

@ -1,29 +0,0 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
### DEPENDENCY:
# fontTools Python library
# ==> https://github.com/fonttools/fonttools
# ==> Install: pip install fonttools
### USAGE:
# python fpfix.py [filepath to font]
import sys
from fontTools import ttLib
if len(sys.argv) < 2:
sys.stderr.write("# [Nerd Fonts] [fpfix.py] ERROR: Please enter a path to the font file")
sys.exit(1)
try:
tt = ttLib.TTFont(sys.argv[1])
post = tt["post"].__dict__
post["isFixedPitch"] = 1
tt.save(sys.argv[1])
print("# [Nerd Fonts] [fpfix.py]: '" + sys.argv[1] + "' fixed pitch setting was changed to 1 in the post table")
except Exception as e:
sys.stderr.write("# [Nerd Fonts] [fpfix.py] ERROR: Unable to update the font isFixedPitch setting. " + str(e))
sys.exit(1)

View file

@ -1,131 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
# Iterates over all patched fonts directories
# to generate ruby cask files for homebrew-fonts (https://github.com/caskroom/homebrew-fonts)
# only adds non-Windows versions of the fonts
#set -x
version="2.1.0"
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|<pubDate>[^<]*</pubDate>||g' | shasum --algorithm 256 | head -c 64)
LINE_PREFIX="# [Nerd Fonts] "
cd $patched_parent_dir || {
echo >&2 "$LINE_PREFIX Could not find patched fonts directory"
exit 1
}
function clear_file {
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"
}
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
}
function write_footer {
local outputfile=$1
{
printf "end\\n"
} >> "$outputfile"
}
#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 | # uncomment to test 1 font
while read -r filename
do
dirname=$(dirname "$filename")
basename=$(basename "$filename")
sha256sum=$(sha256sum "../archives/${basename}.zip" | head -c 64)
searchdir=$filename
fontdir=$(basename "$(dirname "$dirname")")
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 '*mono.*' \) -print0)
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*' ! -iwholename '*mono.*' \) -print0)
outputdir=$PWD/../casks/
formattedbasename=$(echo "$basename" | tr "[:upper:]" "[:lower:]")
echo "$LINE_PREFIX Generating cask for: $fontdir"
[[ -d "$outputdir" ]] || mkdir -p "$outputdir"
caskname="font-$formattedbasename-nerd-font"
caskname_mono="${caskname}-mono"
to="$outputdir/${caskname}.rb"
to_mono="$outputdir/${caskname_mono}.rb"
clear_file "$to"
write_header "$to" "$caskname"
clear_file "$to_mono"
write_header "$to_mono" "$caskname_mono"
write_body "$to" "${FONTS[@]}"
write_body "$to_mono" "${MONOFONTS[@]}"
write_footer "$to"
write_footer "$to_mono"
done

View file

@ -1,75 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.1
# Generates CSS file for the font
# shellcheck disable=SC1091
source ./lib/i_all.sh
output_css_file="../../css/nerd-fonts-generated.css"
header_css_file="./css-header.txt"
output_cheat_sheet_file="../../temp/nerd-fonts-generated-cheat-sheet.txt"
LINE_PREFIX="# [Nerd Fonts] "
version="2.1.0"
# clear files
true > "$output_css_file" 2> /dev/null
true > "$output_cheat_sheet_file" 2> /dev/null
# describe how the classes were established
{
printf "/*\\n"
printf " *%s Website: https://www.nerdfonts.com\\n" "$LINE_PREFIX"
printf " *%s Development Website: https://github.com/ryanoasis/nerd-fonts\\n" "$LINE_PREFIX"
printf " *%s Version: %s\\n" "$LINE_PREFIX" "$version"
printf " *%s The following is generated from the build script\\n" "$LINE_PREFIX"
printf " */\\n\\n"
# add top section of CSS
cat $header_css_file
} >> "$output_css_file"
echo;
# shellcheck disable=SC2154
# we know the '$i' is from the sourced file
for var in "${!i@}"; do
# trim 'i_' prefix
glyph_name=${var#*_}
# replace _ with -
glyph_name=${glyph_name/_/-}
glyph_char=${!var}
glyph_code=$(printf "%x" "'$glyph_char'")
#echo "$var=${!var}"
echo "$glyph_name"
echo "$glyph_char"
echo "$glyph_code"
#printf "%x" "'$glyph_char'"
# generate css rules
{
printf ".nf-%s:before {" "$glyph_name"
printf "\\n"
printf " content: \"\\%s\";" "$glyph_code"
printf "\\n"
printf "}"
printf "\\n"
} >> "$output_css_file"
# generate HTML cheat sheet
{
printf "<div class=\"column\">"
printf "\\n"
printf " <div class=\"nf nf-%s center\"></div>" "$glyph_name"
printf "\\n"
printf " <span><div class=\"class-name\">nf-%s</div><div class=\"codepoint\">%s</div></span>" "$glyph_name" "$glyph_code"
printf "\\n"
printf "</div>"
printf "\\n"
} >> "$output_cheat_sheet_file"
done
printf "Generated CSS and Cheat Sheet HTML\\n"

View file

@ -1,30 +0,0 @@
#!/bin/bash
main() {
output_dir="/home/ryan/projects/nerd-fonts-gh-pages/assets/img/previews/"
template_svg="lib/inkscape-template-font-preview.svg"
mkdir -p "$output_dir"
for i in $(jq '.fonts | keys | .[]' lib/fonts.json); do
patchedName=$(jq -r ".fonts[$i].patchedName" lib/fonts.json);
#unpatchedName=$(jq -r ".fonts[$i].unpatchedName" lib/fonts.json);
imagePreviewFont=$(jq -r ".fonts[$i].imagePreviewFont" lib/fonts.json);
generate_preview "$imagePreviewFont" "$patchedName Nerd Font"
done
}
generate_preview() {
font=$1
fontText=$2
echo "generating image preview for font: '$font'"
sed -e "s/000000/ffffff/" -e "s/sans-serif/${font}/" -e "s/Font Name/${fontText}/" <"$template_svg" >"${output_dir}${fontText}.svg"
inkscape -f "${output_dir}${fontText}.svg" --with-gui --verb EditSelectAll --verb ObjectToPath --verb FileVacuum --verb FitCanvasToDrawing --verb FileSave --verb FileQuit &>/dev/null &
svgo "${output_dir}${fontText}.svg"
}
main "$@"; exit

View file

@ -1,86 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
# Iterates over all patched fonts directories
# to generate a fontconfig based on the Nerd Fonts Symbols font
# that contains only the glyphs
#set -x
parent_dir="${PWD}/../../"
unpatched_parent_dir="../../src/unpatched-fonts/"
to="$parent_dir/10-nerd-font-symbols.conf"
symbolfont="Symbols Nerd Font"
LINE_PREFIX="# [Nerd Fonts] "
families=()
cd $unpatched_parent_dir || {
echo >&2 "$LINE_PREFIX Could not find patched fonts directory"
exit 1
}
# clear output file (needed for multiple runs or updates):
true > "$to" 2> /dev/null
# add to the file
{
printf '<?xml version="1.0"?>'
printf '\n<!DOCTYPE fontconfig SYSTEM "fonts.dtd">'
printf '\n<fontconfig>'
} >> "$to"
echo "$LINE_PREFIX Generating fontconfig for: monospace"
# ad hoc add 'monospace' font family
{
printf '\n <alias>'
printf '\n <family>monospace</family>'
printf '\n <prefer><family>%s</family></prefer>' "$symbolfont"
printf '\n </alias>'
} >> "$to"
#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font
find . -maxdepth 1 -type d | # uncomment to get all fonts
while read -r filename
do
searchdir=$filename
FONTS=()
while IFS= read -d $'\0' -r file ; do
FONTS=("${FONTS[@]}" "$file")
# limit to first variation of family (folder)
done < <(find "$searchdir" -type f -iname '*.[o,t]tf' -print0)
#done
for font in "${FONTS[@]}"; do
familyname=$(fc-query --format='%{family}' "${font}")
if [[ ! "${families[*]}" == *"${familyname}"* ]]; then
# family array doesn't contain the font yet
# so let's add it
families+=("$familyname")
echo "adding $familyname";
echo "$LINE_PREFIX Generating fontconfig for: $familyname"
# add to the file
{
printf '\n <alias>'
printf '\n <family>%s</family>' "$familyname"
printf '\n <prefer><family>%s</family></prefer>' "$symbolfont"
printf '\n </alias>'
} >> "$to"
else
echo "no need to add $familyname";
fi
done
done
# add to the file
{
printf "\\n</fontconfig>\\n"
} >> "$to"

View file

@ -1,85 +0,0 @@
#!/usr/bin/env python
# coding=utf8
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
# Example Usage:
# ./generate-glyph-info-from-set.py --font ../../src/glyphs/materialdesignicons-webfont.ttf --start f001 --end f847 --offset 4ff --prefix mdi
# ./generate-glyph-info-from-set.py --font ../../src/glyphs/weathericons-regular-webfont.ttf --start f000 --end f0eb --negoffset d00 --prefix weather --nogaps
from __future__ import absolute_import, print_function, unicode_literals
version = "1.0.0"
projectName = "Nerd Fonts"
projectNameAbbreviation = "NF"
projectNameSingular = projectName[:-1]
import sys
try:
import psMat
except ImportError:
sys.exit(projectName + ": FontForge module is probably not installed. [See: http://designwithfontforge.com/en-US/Installing_Fontforge.html]")
import re
import os
import argparse
from argparse import RawTextHelpFormatter
import errno
import subprocess
try:
#Load the module
import fontforge
except ImportError:
sys.exit(projectName + ": FontForge module could not be loaded. Try installing fontforge python bindings [e.g. on Linux Debian or Ubuntu: `sudo apt install fontforge python-fontforge`]")
parser = argparse.ArgumentParser(description='Nerd Fonts Glyph Info Generator: displays code point and glyph names from given set\n\n* Website: https://www.nerdfonts.com\n* Version: ' + version + '\n* Development Website: https://github.com/ryanoasis/nerd-fonts\n* Changelog: https://github.com/ryanoasis/nerd-fonts/blob/master/changelog.md', formatter_class=RawTextHelpFormatter)
parser.add_argument('-start', '--start', type=str, nargs='?', dest='symbolFontStart', help='The starting unicode hex codepoint')
parser.add_argument('-end', '--end', type=str, nargs='?', dest='symbolFontEnd', help='The ending unicode hex codepoint')
parser.add_argument('-offset', '--offset', type=str, nargs='?', dest='symbolOffset', help='The amount (in hex) to offset the range by for the source font')
parser.add_argument('-negoffset', '--negoffset', type=str, nargs='?', dest='negSymbolOffset', help='The amount (in hex) to negative offset the range by for the source font')
parser.add_argument('-prefix', '--prefix', type=str, nargs='?', dest='prefix', help='The prefix to use for the shell variables and css names')
parser.add_argument('-nogaps', '--nogaps', action='store_true', dest='nogaps', help='Generates the codepoints in a continous codepoints with the given range (no empties/gaps)')
parser.add_argument('-font', '--font', type=str, nargs='?', dest='filepath', help='The file path to the font file to open')
args = parser.parse_args()
print(args.symbolFontStart, args.symbolFontEnd)
symbolFont = fontforge.open(args.filepath)
args.symbolFontStart = int("0x" + args.symbolFontStart, 16)
args.symbolFontEnd = int("0x" + args.symbolFontEnd, 16)
ctr = 0
if args.negSymbolOffset:
args.negSymbolOffset = int("0x" + args.negSymbolOffset, 16)
sign = '-'
offset = args.negSymbolOffset
elif args.symbolOffset:
args.symbolOffset = int("0x" + args.symbolOffset, 16)
sign = ''
offset = args.symbolOffset
signedOffset = int(sign+'0x'+format(offset, 'X'), 16)
hexPosition = args.symbolFontStart + signedOffset
symbolFont.selection.select((str("ranges"),str("unicode")),args.symbolFontStart,args.symbolFontEnd)
for index, sym_glyph in enumerate(symbolFont.selection.byGlyphs):
slot = format(sym_glyph.unicode, 'X')
name = sym_glyph.glyphname
sh_name = "i_" + args.prefix + "_" + name.replace("-", "_")
if args.nogaps:
char = unichr(hexPosition)
else:
char = unichr(int('0x'+slot, 16) + signedOffset)
print("i='" + char + "' " + sh_name + "=$i" + " //" + str(hexPosition))
ctr += 1
hexPosition += 1
print("Done, generated " + str(ctr) + " glyphs")

View file

@ -1,16 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
# Gets all the font folder names to build the matrix for the github actions
# used for debugging
# set -x
main() {
# for testing a small subset (useful to prove out significant changes w/o all font overhead):
# jq '.fonts | .[] | .folderName' lib/fonts-small-subset.json | jq -sc
# add all the fonts to the matrix:
jq '.fonts | .[] | .folderName' lib/fonts.json | jq -sc
}
main; exit

View file

@ -1,313 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.1
# used for debugging
# set -x
# for executing script to rebuild JUST the readmes:
# ./gotta-patch-em-all-font-patcher\!.sh "" info
# to test this script with a single font (pattern):
# ./gotta-patch-em-all-font-patcher\!.sh "iosevka" info
LINE_PREFIX="# [Nerd Fonts] "
# Check for Fontforge
type fontforge >/dev/null 2>&1 || {
echo >&2 "$LINE_PREFIX FontForge must be installed before running this script."
echo >&2 "# Please see installation instructions at"
echo >&2 "# http://designwithfontforge.com/en-US/Installing_Fontforge.html"
exit 1
}
# Get script directory to set source and target dirs relative to it
sd="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
res1=$(date +%s)
parent_dir="${sd}/../../"
# Set source and target directories
source_fonts_dir="${sd}/../../src/unpatched-fonts"
like_pattern=''
complete_variations_per_family=4
font_typefaces_count=0
font_families_count=0
complete_variation_count=0
total_variation_count=0
total_count=0
last_parent_dir=""
unpatched_parent_dir="bin/scripts/../../src/unpatched-fonts"
patched_parent_dir="patched-fonts"
max_parallel_process=64
if [ $# -eq 1 ] || [ "$1" != "" ]
then
like_pattern=$1
echo "$LINE_PREFIX Parameter given, limiting search and patch to pattern '$like_pattern' given"
fi
# simple second param option to allow to regenerate font info without re-patching
if [ $# -eq 2 ]
then
info_only=$2
echo "$LINE_PREFIX 'Info Only' Parameter given, only generating font info (not patching)"
fi
# correct way to output find results into an array (when files have space chars, etc)
# source: https://stackoverflow.com/questions/8213328/bash-script-find-output-to-array
source_fonts=()
while IFS= read -d $'\0' -r file ; do
source_fonts=("${source_fonts[@]}" "$file")
done < <(find "$source_fonts_dir" -iname "$like_pattern*.[o,t]tf" -type f -print0)
# print total number of source fonts found
echo "$LINE_PREFIX Total source fonts found: ${#source_fonts[*]}"
function patch_font {
local f=$1; shift
local i=$1; shift
# take everything before the last slash (/) to start building the full path
local patched_font_dir="${f%/*}/"
# find replace unpatched parent dir with patched parent dir:
local patched_font_dir="${patched_font_dir/$unpatched_parent_dir/$patched_parent_dir}"
[[ -d "$patched_font_dir" ]] || mkdir -p "$patched_font_dir"
config_parent_dir=$( cd "$( dirname "$f" )" && cd ".." && pwd)
config_dir=$( cd "$( dirname "$f" )" && pwd)
# source the font config file if exists:
if [ -f "$config_dir/config.cfg" ]
then
# shellcheck source=/dev/null
source "$config_dir/config.cfg"
elif [ -f "$config_parent_dir/config.cfg" ]
then
# shellcheck source=/dev/null
source "$config_parent_dir/config.cfg"
fi
if [ -f "$config_parent_dir/config.json" ]
then
# load font configuration file and remove ligatures (for mono fonts):
font_config="--removeligatures --configfile $config_parent_dir/config.json"
else
font_config=""
fi
if [ "$post_process" ]
then
post_process="--postprocess=$post_process"
else
post_process=""
fi
# shellcheck disable=SC2154
# we know the '$config_has_powerline' is from the sourced file
if [ "$config_has_powerline" ]
then
powerline=""
combinations=$(printf "./font-patcher ${f##*/} %s\\n" {' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}{' --weather',}{' --material',})
else
powerline="--powerline"
combinations=$(printf "./font-patcher ${f##*/} %s\\n" {' --powerline',}{' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}{' --weather',}{' --material',})
fi
cd "$parent_dir" || {
echo >&2 "# Could not find project parent directory"
exit 1
}
fontforge -quiet -script ./font-patcher "$f" -q $powerline $post_process --complete --no-progressbars --outputdir "${patched_font_dir}complete/" 2>/dev/null
fontforge -quiet -script ./font-patcher "$f" -q -s ${font_config} $powerline $post_process --complete --no-progressbars --outputdir "${patched_font_dir}complete/" 2>/dev/null
fontforge -quiet -script ./font-patcher "$f" -q -w $powerline $post_process --complete --no-progressbars --outputdir "${patched_font_dir}complete/" 2>/dev/null
fontforge -quiet -script ./font-patcher "$f" -q -s ${font_config} -w $powerline $post_process --complete --no-progressbars --outputdir "${patched_font_dir}complete/" 2>/dev/null
# wait for this group of background processes to finish to avoid forking too many processes
# that can add up quickly with the number of combinations
#wait
}
# Generates font information: readmes, combinations, licenses, and variation counts
# $1 = fontdir path
# $2 = font file name (used for metadata)
function generate_info {
local f=$1; shift
local font_file=$1; shift
# take everything before the last slash (/) to start building the full path
local patched_font_dir="${f%/*}/"
# find replace unpatched parent dir with patched parent dir:
local patched_font_dir="${patched_font_dir/$unpatched_parent_dir/$patched_parent_dir}"
echo "$LINE_PREFIX Generating info for '$font_file':"
[[ -d "$patched_font_dir" ]] || mkdir -p "$patched_font_dir"
config_parent_dir=$( cd "$( dirname "$f" )" && cd ".." && pwd)
config_dir=$( cd "$( dirname "$f" )" && pwd)
config_parent_dir_name=$(basename "$config_parent_dir")
is_unpatched_fonts_root=0
if [ "$config_parent_dir_name" == "unpatched-fonts" ]
then
is_unpatched_fonts_root=1
font_typefaces_count=$((font_typefaces_count+1))
fi
# source the font config file if exists:
if [ -f "$config_dir/config.cfg" ]
then
# shellcheck source=/dev/null
source "$config_dir/config.cfg"
elif [ -f "$config_parent_dir/config.cfg" ]
then
# shellcheck source=/dev/null
source "$config_parent_dir/config.cfg"
fi
if [ "$config_has_powerline" ]
then
powerline=""
combinations=$(printf "./font-patcher ${f##*/} %s\\n" {' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}{' --weather',}{' --material',})
else
powerline="--powerline"
combinations=$(printf "./font-patcher ${f##*/} %s\\n" {' --powerline',}{' --use-single-width-glyphs',}{' --windows',}{' --fontawesome',}{' --octicons',}{' --fontlinux',}{' --pomicons',}{' --powerlineextra',}{' --fontawesomeextension',}{' --powersymbols',}{' --weather',}{' --material',})
fi
font_families_count=$((font_families_count+1))
complete_variation_count=$((complete_variation_count+complete_variations_per_family))
combination_count=$(printf "%s" "$combinations" | wc -l)
# generate the readmes:
# if first time with this font then re-build parent dir readme, else skip:
if [[ $config_parent_dir != "$last_parent_dir" ]] && [ $is_unpatched_fonts_root == "0" ];
then
echo "$LINE_PREFIX * Re-generate parent directory readme"
generate_readme "$patched_font_dir.." 0
fi
echo "$LINE_PREFIX * Adding 'Possible Combinations' section"
generate_readme "$patched_font_dir" 1
echo "$LINE_PREFIX * Copying license files"
if [ $is_unpatched_fonts_root == "0" ];
then
# if we are not at the unpatched fonts root, copy all license from config parent dir
copy_license "$config_parent_dir" "$patched_font_dir"
else
# otherwise we nedd to copy files from the config dir itself
copy_license "$config_dir" "$patched_font_dir"
fi
last_parent_dir=$config_parent_dir
total_variation_count=$((total_variation_count+combination_count))
total_count=$((total_count+complete_variations_per_family+combination_count))
}
# Copy any license file to the patched font directory
# $1 = fontdir source path
# $2 = fontdir destination path
function copy_license {
local src=$1
local dest=$2
local license_file=""
while IFS= read -d $'\0' -r license_file ; do
# cp "$license_file" "$dest" # makes archiving multiple harder when we junk the paths for the archive
cp "$license_file" "$dest/complete"
done < <(find "$src" -iregex ".*\(licen[c,s]e\|ofl\).*" -type f -print0)
}
# Re-generate all the readmes
# $1 = fontdir path
function generate_readme {
local patched_font_dir=$1
local generate_combinations=$2
local combinations_filename="$patched_font_dir/readme.md"
local font_info="$patched_font_dir/font-info.md"
# clear output file (needed for multiple runs or updates):
true > "$combinations_filename"
if [ -f "$font_info" ];
then
cat "$patched_font_dir/font-info.md" >> "$combinations_filename"
else
echo "$LINE_PREFIX Could not append font-info.md (file not found). Was standardize script run? It should be executed first"
echo "# looked for: $font_info"
fi
cat "$parent_dir/src/readme-per-directory-variations.md" >> "$combinations_filename"
if [ "$generate_combinations" == 1 ];
then
# add to the file
{
printf "\`\`\`sh"
printf "\\n# %s Possible Combinations:\\n" "$combination_count"
printf "\\n"
printf "%s" "$combinations"
printf "\\n"
printf "\`\`\`"
} >> "$combinations_filename"
fi
}
if [ ! "$info_only" ]
then
# Iterate through source fonts
for i in "${!source_fonts[@]}"
do
patch_font "${source_fonts[$i]}" "$i" 2>/dev/null &
# un-comment to test this script (patch 1 font)
#break
# wait for this set of bg commands to finish: dont do too many at once!
# if we spawn a background process for each set of fonts it will
# end up using too many system resources
# however we want to run a certain number in parallel to decrease
# the amount of time patching all the fonts will take
# for now set a 'wait' for each X set of processes:
if [[ $((i % max_parallel_process)) == 0 ]];
then
echo "$LINE_PREFIX Complete Variation Count after max parallel process is $complete_variation_count"
wait
fi
done
# wait for all bg commands to finish
wait
fi
# update information in separate iteration (to avoid issues with bg processes and the counts):
# Iterate through source fonts
for i in "${!source_fonts[@]}"
do
# only output after last slash (/):
path=${source_fonts[$i]}
font_file=${path##*/}
generate_info "$path" "$font_file" 2>/dev/null
done
font_typefaces_count=$(find "${PWD}/../../${patched_parent_dir}/"* -maxdepth 0 -type d | wc -l)
res2=$(date +%s)
dt=$(echo "$res2 - $res1" | bc)
dd=$(echo "$dt/86400" | bc)
dt2=$(echo "$dt-86400*$dd" | bc)
dh=$(echo "$dt2/3600" | bc)
dt3=$(echo "$dt2-3600*$dh" | bc)
dm=$(echo "$dt3/60" | bc)
ds=$(echo "$dt3-60*$dm" | bc)
printf "$LINE_PREFIX Total runtime: %d:%02d:%02d:%02d\\n" "$dd" "$dh" "$dm" "$ds"
printf "# All fonts patched to sub-directories in \\t\\t\\t'%s'\\n" "$patched_parent_dir"
printf "# The total number of font typefaces patched was \\t\\t'%s'\\n" "$font_typefaces_count"
printf "# The total number of font families patched was \\t\\t'%s'\\n" "$font_families_count"
printf "# The total number of 'complete' patched fonts created was \\t'%s'\\n" "$complete_variation_count"
printf "# The total number of 'variation' patched fonts created was \\t'%s'\\n" "$total_variation_count"
printf "# The total number of patched fonts created was \\t\\t'%s'\\n" "$total_count"

View file

@ -1,37 +0,0 @@
{
"fonts": [
{
"unpatchedName": "Agave",
"patchedName": "Agave",
"folderName": "Agave",
"imagePreviewFont": "Agave Nerd Font",
"linkPreviewFont": "agave",
"description": "A small, monospace, outline font that is geometrically regular and simple"
},
{
"unpatchedName": "Hack",
"patchedName": "Hack",
"folderName": "Hack",
"imagePreviewFont": "Hack Nerd Font",
"linkPreviewFont": "hack",
"description": "dotted zero, short descenders, expands upon work done for Bitstream Vera &amp; DejaVu, legible at common sizes"
},
{
"unpatchedName": "Symbols Template 1000 EM",
"patchedName": "Symbols-1000-em Nerd Font Complete",
"folderName": "NerdFontsSymbolsOnly",
"imagePreviewFont": "Symbols Nerd Font",
"linkPreviewFont": false,
"description": "Just the Nerd Font Icons. I.e Symbol font only. 1000 EM size"
},
{
"unpatchedName": "Symbols Template 2048 EM",
"patchedName": "Symbols-2048-em Nerd Font Complete",
"folderName": "NerdFontsSymbolsOnly",
"imagePreviewFont": "Symbols Nerd Font",
"linkPreviewFont": false,
"description": "Just the Nerd Font Icons. I.e Symbol font only. 2048 EM size"
}
]
}

View file

@ -1,421 +0,0 @@
{
"fonts": [
{
"unpatchedName": "3270",
"patchedName": "3270",
"folderName": "3270",
"imagePreviewFont": "3270 Nerd Font",
"linkPreviewFont": "font3270",
"description": "derived from the x3270 font, a modern format of a font with high nostalgic value"
},
{
"unpatchedName": "Agave",
"patchedName": "Agave",
"folderName": "Agave",
"imagePreviewFont": "Agave Nerd Font",
"linkPreviewFont": "agave",
"description": "A small, monospace, outline font that is geometrically regular and simple"
},
{
"unpatchedName": "AnonymousPro",
"patchedName": "Anonymice",
"folderName": "AnonymousPro",
"imagePreviewFont": "Anonymice Nerd Font",
"linkPreviewFont": false,
"description": "inspired by Anonymous 9 on Macintosh, since 2009, distinct `O`, `0`, `I`, `l`, `1`"
},
{
"unpatchedName": "Arimo",
"patchedName": "Arimo",
"folderName": "Arimo",
"imagePreviewFont": "Arimo Nerd Font",
"linkPreviewFont": false,
"description": "Metrically similar to Arial, pan-European WGL character set, sans serif"
},
{
"unpatchedName": "AurulentSansMono",
"patchedName": "AurulentSansMono",
"folderName": "AurulentSansMono",
"imagePreviewFont": "AurulentSansMono Nerd Font",
"linkPreviewFont": "aurulent",
"description": "Sans serif, designed by Stephen G. Hartke which also created Verily Serif"
},
{
"unpatchedName": "BigBlueTerminal",
"patchedName": "BigBlueTerminal",
"folderName": "BigBlueTerminal",
"imagePreviewFont": "BigBlueTerminal Nerd Font",
"linkPreviewFont": false,
"description": "nostalgic, closely based on IBM's 8x14 EGA/VGA charset"
},
{
"unpatchedName": "BitstreamVeraSansMono",
"patchedName": "BitstreamVeraSansMono",
"folderName": "BitstreamVeraSansMono",
"imagePreviewFont": "BitstreamVeraSansMono Nerd Font",
"linkPreviewFont": "bitstream-vera",
"description": "dotted zero, compact lowercase characters"
},
{
"unpatchedName": "Cascadia Code",
"patchedName": "Caskaydia Cove",
"folderName": "CascadiaCode",
"imagePreviewFont": "Caskaydia Cove Nerd Font",
"linkPreviewFont": "cascadia-code",
"description": "A fun, new monospaced font that includes programming ligatures and is designed to enhance the modern look and feel of the Windows Terminal"
},
{
"unpatchedName": "IBM Plex Mono",
"patchedName": "Blex Mono",
"folderName": "IBMPlexMono",
"imagePreviewFont": "BlexMono Nerd Font",
"linkPreviewFont": false,
"description": "font release is currently missing"
},
{
"unpatchedName": "CodeNewRoman",
"patchedName": "CodeNewRoman",
"folderName": "CodeNewRoman",
"imagePreviewFont": "CodeNewRoman Nerd Font",
"linkPreviewFont": "code-new-roman",
"description": "tunable, slashed zeros, compact smaller characters"
},
{
"unpatchedName": "Cousine",
"patchedName": "Cousine",
"folderName": "Cousine",
"imagePreviewFont": "Cousine Nerd Font",
"linkPreviewFont": "cousine",
"description": "similar to Courier New with better readablitiy, dotted zeros"
},
{
"unpatchedName": "DaddyTimeMono",
"patchedName": "DaddyTimeMono",
"folderName": "DaddyTimeMono",
"imagePreviewFont": "DaddyTimeMono Nerd Font",
"linkPreviewFont": "daddytimemono",
"description": "A monospaced font for programmers and other terminal groupies"
},
{
"unpatchedName": "DejaVuSansMono",
"patchedName": "DejaVuSansMono",
"folderName": "DejaVuSansMono",
"imagePreviewFont": "DejaVuSansMono Nerd Font",
"linkPreviewFont": "dejavu",
"description": "dotted zero, based on the Bitstream Vera Fonts with a wider range of character"
},
{
"unpatchedName": "DroidSansMono",
"patchedName": "DroidSansMono",
"folderName": "DroidSansMono",
"imagePreviewFont": "DroidSansMono Nerd Font",
"linkPreviewFont": "droid-sans",
"description": "good for small screens or font sizes"
},
{
"unpatchedName": "FantasqueSansMono",
"patchedName": "FantasqueSansMono",
"folderName": "FantasqueSansMono",
"imagePreviewFont": "FantasqueSansMono Nerd Font",
"linkPreviewFont": "fantasque-sans",
"description": "\"wibbly-wobbly handwriting-like fuzziness\", takes some inspiration from Inconsolata and Monaco"
},
{
"unpatchedName": "FiraCode",
"patchedName": "FiraCode",
"folderName": "FiraCode",
"imagePreviewFont": "FiraCode Nerd Font",
"linkPreviewFont": "firacode",
"description": "programming ligatures, extension of Fira Mono font, enlarged operators"
},
{
"unpatchedName": "FiraMono",
"patchedName": "FiraMono",
"folderName": "FiraMono",
"imagePreviewFont": "FiraMono Nerd Font",
"linkPreviewFont": "fira",
"description": "Mozilla typeface, dotted zero"
},
{
"unpatchedName": "Go-Mono",
"patchedName": "Go-Mono",
"folderName": "Go-Mono",
"imagePreviewFont": "Go-Mono Nerd Font",
"linkPreviewFont": "go-mono",
"description": "created specifically for the Go project, looks particularly clear for use with the Go language"
},
{
"unpatchedName": "Gohu",
"patchedName": "Gohu",
"folderName": "Gohu",
"imagePreviewFont": "Gohu Nerd Font",
"linkPreviewFont": false,
"description": "bitmap font, tall capitals and ascenders, small serifs"
},
{
"unpatchedName": "Hack",
"patchedName": "Hack",
"folderName": "Hack",
"imagePreviewFont": "Hack Nerd Font",
"linkPreviewFont": "hack",
"description": "dotted zero, short descenders, expands upon work done for Bitstream Vera &amp; DejaVu, legible at common sizes"
},
{
"unpatchedName": "Hasklig",
"patchedName": "Hasklug",
"folderName": "Hasklig",
"imagePreviewFont": "Hasklug Nerd Font",
"linkPreviewFont": "hasklig",
"description": "monospaced ligatures, makes composite glyphs (e.g. ->) more reabable, especially in Haskell"
},
{
"unpatchedName": "HeavyData",
"patchedName": "HeavyData",
"folderName": "HeavyData",
"imagePreviewFont": "HeavyData Nerd Font",
"linkPreviewFont": false,
"description": "Novel and unique design, dotted zero"
},
{
"unpatchedName": "Hermit",
"patchedName": "Hurmit",
"folderName": "Hermit",
"imagePreviewFont": "Hurmit Nerd Font",
"linkPreviewFont": "hermit",
"description": "symbols stand out from common text"
},
{
"unpatchedName": "iA Writer",
"patchedName": "iM Writing",
"folderName": "iA-Writer",
"imagePreviewFont": "iM Writing Nerd Font",
"linkPreviewFont": "ia-writer-mono",
"description": "A heavy modification of IBM's Plex font"
},
{
"unpatchedName": "Inconsolata",
"patchedName": "Inconsolata",
"folderName": "Inconsolata",
"imagePreviewFont": "Inconsolata Nerd Font",
"linkPreviewFont": "inconsolata",
"description": "slashed zero, takes inspiration from many different fonts and glyphs, subtle curves in lowercase"
},
{
"unpatchedName": "InconsolataGo",
"patchedName": "InconsolataGo",
"folderName": "InconsolataGo",
"imagePreviewFont": "InconsolataGo Nerd Font",
"linkPreviewFont": false,
"description": "Inconsolata with straight quotes"
},
{
"unpatchedName": "InconsolataLGC",
"patchedName": "InconsolataLGC",
"folderName": "InconsolataLGC",
"imagePreviewFont": "InconsolataLGC Nerd Font",
"linkPreviewFont": false,
"description": "Inconsolata with added the Cyrillic alphabet"
},
{
"unpatchedName": "Iosevka",
"patchedName": "Iosevka",
"folderName": "Iosevka",
"imagePreviewFont": "Iosevka Nerd Font",
"linkPreviewFont": "iosevka",
"description": "narrow and horizontally tight characters, slashed zero"
},
{
"unpatchedName": "JetBrainsMono",
"patchedName": "JetBrainsMono",
"folderName": "JetBrainsMono",
"imagePreviewFont": "JetBrainsMono Nerd Font",
"linkPreviewFont": "jetbrainsmono",
"description": "JetBrains officially created font for developers"
},
{
"unpatchedName": "Lekton",
"patchedName": "Lekton",
"folderName": "Lekton",
"imagePreviewFont": "Lekton Nerd Font",
"linkPreviewFont": "lekton",
"description": "very light and thin characters, sharp m's, `0` and `O` very similar"
},
{
"unpatchedName": "LiberationMono",
"patchedName": "LiterationMono",
"folderName": "LiberationMono",
"imagePreviewFont": "LiterationMono Nerd Font",
"linkPreviewFont": "liberation",
"description": "`0` and `O` very similar, very short tight descenders"
},
{
"unpatchedName": "Meslo",
"patchedName": "Meslo",
"folderName": "Meslo",
"imagePreviewFont": "Meslo Nerd Font",
"linkPreviewFont": "meslo",
"description": "slashed zeros, customized version of Apple's Menlo"
},
{
"unpatchedName": "Monofur",
"patchedName": "Monofur",
"folderName": "Monofur",
"imagePreviewFont": "Monofur Nerd Font",
"linkPreviewFont": "monofur",
"description": "dotted zeros, slightly exaggerated curvy characters, compact characters"
},
{
"unpatchedName": "Monoid",
"patchedName": "Monoid",
"folderName": "Monoid",
"imagePreviewFont": "Monoid Nerd Font",
"linkPreviewFont": "monoid",
"description": "ligatures, distinguishable glyphs with short ascenders &amp; descenders, large operators &amp; punctuation"
},
{
"unpatchedName": "Mononoki",
"patchedName": "Mononoki",
"folderName": "Mononoki",
"imagePreviewFont": "Mononoki Nerd Font",
"linkPreviewFont": "mononoki",
"description": "keeps in mind differentiation of characters and resolution sizes"
},
{
"unpatchedName": "MPlus",
"patchedName": "MPlus",
"folderName": "MPlus",
"imagePreviewFont": "MPlus Nerd Font",
"linkPreviewFont": false,
"description": "Multiple styles and weights, many glyph sets (e.g. Kana glyphs)"
},
{
"unpatchedName": "Noto",
"patchedName": "Noto",
"folderName": "Noto",
"imagePreviewFont": "Noto Nerd Font",
"linkPreviewFont": "noto",
"description": "`0` and `O` very similar, characters are either very curvy or straight lined"
},
{
"unpatchedName": "ProFont",
"patchedName": "ProFont",
"folderName": "ProFont",
"imagePreviewFont": "ProFont Nerd Font",
"linkPreviewFont": "profont",
"description": "looks best with anti-aliasing turned off, squared off character corners, vertically tight small `s`"
},
{
"unpatchedName": "ProggyClean",
"patchedName": "ProggyClean",
"folderName": "ProggyClean",
"imagePreviewFont": "ProggyClean Nerd Font",
"linkPreviewFont": "proggy-clean",
"description": "Designed particularly for use at small point sizes"
},
{
"unpatchedName": "OpenDyslexic",
"patchedName": "OpenDyslexic",
"folderName": "OpenDyslexic",
"imagePreviewFont": "OpenDyslexic Nerd Font",
"linkPreviewFont": "opendyslexic",
"description": "designed specifically to alleviate reading errors caused by dyslexia"
},
{
"unpatchedName": "Overpass",
"patchedName": "Overpass",
"folderName": "Overpass",
"imagePreviewFont": "Overpass Nerd Font",
"linkPreviewFont": "overpass",
"description": "An open source font family inspired by Highway Gothic"
},
{
"unpatchedName": "RobotoMono",
"patchedName": "RobotoMono",
"folderName": "RobotoMono",
"imagePreviewFont": "RobotoMono Nerd Font",
"linkPreviewFont": "roboto",
"description": "dashed zero, curved and straight character lines"
},
{
"unpatchedName": "ShareTechMono",
"patchedName": "ShureTechMono",
"folderName": "ShareTechMono",
"imagePreviewFont": "ShureTechMono Nerd Font",
"linkPreviewFont": "share-tech",
"description": "dotted zeros, distinguishable 1 and l, curved and straight character lines"
},
{
"unpatchedName": "SourceCodePro",
"patchedName": "SauceCodePro",
"folderName": "SourceCodePro",
"imagePreviewFont": "Sauce Code Pro Nerd Font",
"linkPreviewFont": "source-code-pro",
"description": "Monospaced font family for user interface and coding environments"
},
{
"unpatchedName": "SpaceMono",
"patchedName": "SpaceMono",
"folderName": "SpaceMono",
"imagePreviewFont": "SpaceMono Nerd Font",
"linkPreviewFont": "space",
"description": "Squarish character lines, dotted zero, aggressive parethesis"
},
{
"unpatchedName": "Symbols Template 1000 EM",
"patchedName": "Symbols-1000-em Nerd Font Complete",
"folderName": "NerdFontsSymbolsOnly",
"imagePreviewFont": "Symbols Nerd Font",
"linkPreviewFont": false,
"description": "Just the Nerd Font Icons. I.e Symbol font only. 1000 EM size"
},
{
"unpatchedName": "Symbols Template 2048 EM",
"patchedName": "Symbols-2048-em Nerd Font Complete",
"folderName": "NerdFontsSymbolsOnly",
"imagePreviewFont": "Symbols Nerd Font",
"linkPreviewFont": false,
"description": "Just the Nerd Font Icons. I.e Symbol font only. 2048 EM size"
},
{
"unpatchedName": "Terminus",
"patchedName": "Terminess",
"folderName": "Terminus",
"imagePreviewFont": "TerminessTTF Nerd Font",
"linkPreviewFont": "terminus",
"description": "Squarish characters that are slightly askew"
},
{
"unpatchedName": "Tinos",
"patchedName": "Tinos",
"folderName": "Tinos",
"imagePreviewFont": "Tinos Nerd Font",
"linkPreviewFont": false,
"description": "Some similarities to Times New Roman, designed by Steve Matteson, includes pan-European WGL character set"
},
{
"unpatchedName": "Ubuntu",
"patchedName": "Ubuntu",
"folderName": "Ubuntu",
"imagePreviewFont": "Ubuntu Nerd Font",
"linkPreviewFont": "ubuntu",
"description": "specially created for Ubuntu"
},
{
"unpatchedName": "UbuntuMono",
"patchedName": "UbuntuMono",
"folderName": "UbuntuMono",
"imagePreviewFont": "UbuntuMono Nerd Font",
"linkPreviewFont": "ubuntu",
"description": "dotted zeros, used the `n`, `o`, `H` &amp; `O` Latin characters as a base for design"
},
{
"unpatchedName": "VictorMono",
"patchedName": "VictorMono",
"folderName": "VictorMono",
"imagePreviewFont": "VictorMono Nerd Font",
"linkPreviewFont": "victor-mono",
"description": "clean, crisp and narrow, with a large x-height and clear punctuation"
}
]
}

View file

@ -1,9 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version 1.1.0
for i in $(dirname "${BASH_SOURCE[0]:-$0}")/i_{dev,fae,fa,iec,linux,oct,ple,pom,seti,material,weather}.sh; do
# shellcheck source=/dev/null
test -f "$i" -a -r "$i" && source "$i"
done
unset i

View file

@ -1,203 +0,0 @@
#!/usr/bin/env bash
# Devicons (198 icons, 7 do not have an established name)
# Codepoints: Nerd moved E600-E6C5 → E700-E7C5
test -n "$__i_dev_loaded" && return || __i_dev_loaded=1
i='' i_dev_bing_small=$i
i='' i_dev_css_tricks=$i
i='' i_dev_git=$i
i='' i_dev_bitbucket=$i
i='' i_dev_mysql=$i
i='' i_dev_streamline=$i
i='' i_dev_database=$i
i='' i_dev_dropbox=$i
i='' i_dev_github_alt=$i
i='' i_dev_github_badge=$i
i='' i_dev_github=$i
i='' i_dev_wordpress=$i
i='' i_dev_visualstudio=$i
i='' i_dev_jekyll_small=$i
i='' i_dev_android=$i
i='' i_dev_windows=$i
i='' i_dev_stackoverflow=$i
i='' i_dev_apple=$i
i='' i_dev_linux=$i
i='' i_dev_appstore=$i
i='' i_dev_ghost_small=$i
i='' i_dev_yahoo=$i
i='' i_dev_codepen=$i
i='' i_dev_github_full=$i
i='' i_dev_nodejs_small=$i
i='' i_dev_nodejs=$i
i='' i_dev_hackernews=$i
i='' i_dev_ember=$i
i='' i_dev_dojo=$i
i='' i_dev_django=$i
i='' i_dev_npm=$i
i='' i_dev_ghost=$i
i='' i_dev_modernizr=$i
i='' i_dev_unity_small=$i
i='' i_dev_rasberry_pi=$i
i='' i_dev_blackberry=$i
i='' i_dev_go=$i
i='' i_dev_git_branch=$i
i='' i_dev_git_pull_request=$i
i='' i_dev_git_merge=$i
i='' i_dev_git_compare=$i
i='' i_dev_git_commit=$i
i='' i_dev_cssdeck=$i
i='' i_dev_yahoo_small=$i
i='' i_dev_techcrunch=$i
i='' i_dev_smashing_magazine=$i
i='' i_dev_netmagazine=$i
i='' i_dev_codrops=$i
i='' i_dev_phonegap=$i
i='' i_dev_google_drive=$i
i='' i_dev_html5_multimedia=$i
i='' i_dev_html5_device_access=$i
i='' i_dev_html5_connectivity=$i
i='' i_dev_html5_3d_effects=$i
i='' i_dev_html5=$i
i='' i_dev_scala=$i
i='' i_dev_java=$i
i='' i_dev_ruby=$i
i='' i_dev_ubuntu=$i
i='' i_dev_ruby_on_rails=$i
i='' i_dev_python=$i
i='' i_dev_php=$i
i='' i_dev_markdown=$i
i='' i_dev_laravel=$i
i='' i_dev_magento=$i
i='' i_dev_joomla=$i
i='' i_dev_drupal=$i
i='' i_dev_chrome=$i
i='' i_dev_ie=$i
i='' i_dev_firefox=$i
i='' i_dev_opera=$i
i='' i_dev_bootstrap=$i
i='' i_dev_safari=$i
i='' i_dev_css3=$i
i='' i_dev_css3_full=$i
i='' i_dev_sass=$i
i='' i_dev_grunt=$i
i='' i_dev_bower=$i
i='' i_dev_javascript=$i
i='' i_dev_javascript_shield=$i
i='' i_dev_jquery=$i
i='' i_dev_coffeescript=$i
i='' i_dev_backbone=$i
i='' i_dev_angular=$i
i='' i_dev_jquery_ui=$i
i='' i_dev_swift=$i
i='' i_dev_symfony=$i
i='' i_dev_symfony_badge=$i
i='' i_dev_less=$i
i='' i_dev_stylus=$i
i='' i_dev_trello=$i
i='' i_dev_atlassian=$i
i='' i_dev_jira=$i
i='' i_dev_envato=$i
i='' i_dev_snap_svg=$i
i='' i_dev_raphael=$i
i='' i_dev_chart=$i
i='' i_dev_compass=$i
i='' i_dev_onedrive=$i
i='' i_dev_gulp=$i
i='' i_dev_atom=$i
i='' i_dev_cisco=$i
i='' i_dev_nancy=$i
i='' i_dev_jenkins=$i
i='' i_dev_clojure=$i
i='' i_dev_perl=$i
i='' i_dev_clojure_alt=$i
i='' i_dev_celluloid=$i
i='' i_dev_w3c=$i
i='' i_dev_redis=$i
i='' i_dev_postgresql=$i
i='' i_dev_webplatform=$i
i='' i_dev_requirejs=$i
i='' i_dev_opensource=$i
i='' i_dev_typo3=$i
i='' i_dev_uikit=$i
i='' i_dev_doctrine=$i
i='' i_dev_groovy=$i
i='' i_dev_nginx=$i
i='' i_dev_haskell=$i
i='' i_dev_zend=$i
i='' i_dev_gnu=$i
i='' i_dev_yeoman=$i
i='' i_dev_heroku=$i
i='' i_dev_msql_server=$i
i='' i_dev_debian=$i
i='' i_dev_travis=$i
i='' i_dev_dotnet=$i
i='' i_dev_codeigniter=$i
i='' i_dev_javascript_badge=$i
i='' i_dev_yii=$i
i='' i_dev_composer=$i
i='' i_dev_krakenjs_badge=$i
i='' i_dev_krakenjs=$i
i='' i_dev_mozilla=$i
i='' i_dev_firebase=$i
i='' i_dev_sizzlejs=$i
i='' i_dev_creativecommons=$i
i='' i_dev_creativecommons_badge=$i
i='' i_dev_mitlicence=$i
i='' i_dev_senchatouch=$i
i='' i_dev_bugsense=$i
i='' i_dev_extjs=$i
i='' i_dev_mootools_badge=$i
i='' i_dev_mootools=$i
i='' i_dev_ruby_rough=$i
i='' i_dev_komodo=$i
i='' i_dev_coda=$i
i='' i_dev_bintray=$i
i='' i_dev_terminal=$i
i='' i_dev_code=$i
i='' i_dev_responsive=$i
i='' i_dev_dart=$i
i='' i_dev_aptana=$i
i='' i_dev_mailchimp=$i
i='' i_dev_netbeans=$i
i='' i_dev_dreamweaver=$i
i='' i_dev_brackets=$i
i='' i_dev_eclipse=$i
i='' i_dev_cloud9=$i
i='' i_dev_scrum=$i
i='' i_dev_prolog=$i
i='' i_dev_terminal_badge=$i
i='' i_dev_code_badge=$i
i='' i_dev_mongodb=$i
i='' i_dev_meteor=$i
i='' i_dev_meteorfull=$i
i='' i_dev_fsharp=$i
i='' i_dev_rust=$i
i='' i_dev_ionic=$i
i='' i_dev_sublime=$i
i='' i_dev_appcelerator=$i
i='' i_dev_asterisk=$i
i='' i_dev_aws=$i
i='' i_dev_digital_ocean=$i
i='' i_dev_dlang=$i
i='' i_dev_docker=$i
i='' i_dev_erlang=$i
i='' i_dev_google_cloud_platform=$i
i='' i_dev_grails=$i
i='' i_dev_illustrator=$i
i='' i_dev_intellij=$i
i='' i_dev_materializecss=$i
i='' i_dev_openshift=$i
i='' i_dev_photoshop=$i
i='' i_dev_rackspace=$i
i='' i_dev_react=$i
i='' i_dev_redhat=$i
i='' i_dev_scriptcs=$i
i=''
i=''
i=''
i=''
i=''
i=''
i=''
i='' i_dev_sqllite=$i
i='' i_dev_vim=$i
unset i

View file

@ -1,791 +0,0 @@
#!/usr/bin/env bash
# Font Awesome (version 4.7.0, 675 icons, 111 aliases)
# Codepoints: F000-F2E0 with holes
test -n "$__i_fa_loaded" && return || __i_fa_loaded=1
i='' i_fa_glass=$i
i='' i_fa_music=$i
i='' i_fa_search=$i
i='' i_fa_envelope_o=$i
i='' i_fa_heart=$i
i='' i_fa_star=$i
i='' i_fa_star_o=$i
i='' i_fa_user=$i
i='' i_fa_film=$i
i='' i_fa_th_large=$i
i='' i_fa_th=$i
i='' i_fa_th_list=$i
i='' i_fa_check=$i
i='' i_fa_times=$i
i_fa_close=$i_fa_times
i_fa_remove=$i_fa_times
i='' i_fa_search_plus=$i
i='' i_fa_search_minus=$i
i='' i_fa_power_off=$i
i='' i_fa_signal=$i
i='' i_fa_cog=$i
i_fa_gear=$i_fa_cog
i='' i_fa_trash_o=$i
i='' i_fa_home=$i
i='' i_fa_file_o=$i
i='' i_fa_clock_o=$i
i='' i_fa_road=$i
i='' i_fa_download=$i
i='' i_fa_arrow_circle_o_down=$i
i='' i_fa_arrow_circle_o_up=$i
i='' i_fa_inbox=$i
i='' i_fa_play_circle_o=$i
i='' i_fa_repeat=$i
i_fa_rotate_right=$i_fa_repeat
i='' i_fa_refresh=$i
i='' i_fa_list_alt=$i
i='' i_fa_lock=$i
i='' i_fa_flag=$i
i='' i_fa_headphones=$i
i='' i_fa_volume_off=$i
i='' i_fa_volume_down=$i
i='' i_fa_volume_up=$i
i='' i_fa_qrcode=$i
i='' i_fa_barcode=$i
i='' i_fa_tag=$i
i='' i_fa_tags=$i
i='' i_fa_book=$i
i='' i_fa_bookmark=$i
i='' i_fa_print=$i
i='' i_fa_camera=$i
i='' i_fa_font=$i
i='' i_fa_bold=$i
i='' i_fa_italic=$i
i='' i_fa_text_height=$i
i='' i_fa_text_width=$i
i='' i_fa_align_left=$i
i='' i_fa_align_center=$i
i='' i_fa_align_right=$i
i='' i_fa_align_justify=$i
i='' i_fa_list=$i
i='' i_fa_outdent=$i
i_fa_dedent=$i_fa_outdent
i='' i_fa_indent=$i
i='' i_fa_video_camera=$i
i='' i_fa_picture_o=$i
i_fa_image=$i_fa_picture_o
i_fa_photo=$i_fa_picture_o
i='' i_fa_pencil=$i
i='' i_fa_map_marker=$i
i='' i_fa_adjust=$i
i='' i_fa_tint=$i
i='' i_fa_pencil_square_o=$i
i_fa_edit=$i_fa_pencil_square_o
i='' i_fa_share_square_o=$i
i='' i_fa_check_square_o=$i
i='' i_fa_arrows=$i
i='' i_fa_step_backward=$i
i='' i_fa_fast_backward=$i
i='' i_fa_backward=$i
i='' i_fa_play=$i
i='' i_fa_pause=$i
i='' i_fa_stop=$i
i='' i_fa_forward=$i
i='' i_fa_fast_forward=$i
i='' i_fa_step_forward=$i
i='' i_fa_eject=$i
i='' i_fa_chevron_left=$i
i='' i_fa_chevron_right=$i
i='' i_fa_plus_circle=$i
i='' i_fa_minus_circle=$i
i='' i_fa_times_circle=$i
i='' i_fa_check_circle=$i
i='' i_fa_question_circle=$i
i='' i_fa_info_circle=$i
i='' i_fa_crosshairs=$i
i='' i_fa_times_circle_o=$i
i='' i_fa_check_circle_o=$i
i='' i_fa_ban=$i
i='' i_fa_arrow_left=$i
i='' i_fa_arrow_right=$i
i='' i_fa_arrow_up=$i
i='' i_fa_arrow_down=$i
i='' i_fa_share=$i
i_fa_mail_forward=$i_fa_share
i='' i_fa_expand=$i
i='' i_fa_compress=$i
i='' i_fa_plus=$i
i='' i_fa_minus=$i
i='' i_fa_asterisk=$i
i='' i_fa_exclamation_circle=$i
i='' i_fa_gift=$i
i='' i_fa_leaf=$i
i='' i_fa_fire=$i
i='' i_fa_eye=$i
i='' i_fa_eye_slash=$i
i='' i_fa_exclamation_triangle=$i
i_fa_warning=$i_fa_exclamation_triangle
i='' i_fa_plane=$i
i='' i_fa_calendar=$i
i='' i_fa_random=$i
i='' i_fa_comment=$i
i='' i_fa_magnet=$i
i='' i_fa_chevron_up=$i
i='' i_fa_chevron_down=$i
i='' i_fa_retweet=$i
i='' i_fa_shopping_cart=$i
i='' i_fa_folder=$i
i='' i_fa_folder_open=$i
i='' i_fa_arrows_v=$i
i='' i_fa_arrows_h=$i
i='' i_fa_bar_chart=$i
i_fa_bar_chart_o=$i_fa_bar_chart
i='' i_fa_twitter_square=$i
i='' i_fa_facebook_square=$i
i='' i_fa_camera_retro=$i
i='' i_fa_key=$i
i='' i_fa_cogs=$i
i_fa_gears=$i_fa_cogs
i='' i_fa_comments=$i
i='' i_fa_thumbs_o_up=$i
i='' i_fa_thumbs_o_down=$i
i='' i_fa_star_half=$i
i='' i_fa_heart_o=$i
i='' i_fa_sign_out=$i
i='' i_fa_linkedin_square=$i
i='' i_fa_thumb_tack=$i
i='' i_fa_external_link=$i
i='' i_fa_sign_in=$i
i='' i_fa_trophy=$i
i='' i_fa_github_square=$i
i='' i_fa_upload=$i
i='' i_fa_lemon_o=$i
i='' i_fa_phone=$i
i='' i_fa_square_o=$i
i='' i_fa_bookmark_o=$i
i='' i_fa_phone_square=$i
i='' i_fa_twitter=$i
i='' i_fa_facebook=$i
i_fa_facebook_f=$i_fa_facebook
i='' i_fa_github=$i
i='' i_fa_unlock=$i
i='' i_fa_credit_card=$i
i='' i_fa_rss=$i
i_fa_feed=$i_fa_rss
i='' i_fa_hdd_o=$i
i='' i_fa_bullhorn=$i
i='' i_fa_bell_o=$i
i='' i_fa_certificate=$i
i='' i_fa_hand_o_right=$i
i='' i_fa_hand_o_left=$i
i='' i_fa_hand_o_up=$i
i='' i_fa_hand_o_down=$i
i='' i_fa_arrow_circle_left=$i
i='' i_fa_arrow_circle_right=$i
i='' i_fa_arrow_circle_up=$i
i='' i_fa_arrow_circle_down=$i
i='' i_fa_globe=$i
i='' i_fa_wrench=$i
i='' i_fa_tasks=$i
i='' i_fa_filter=$i
i='' i_fa_briefcase=$i
i='' i_fa_arrows_alt=$i
i='' i_fa_users=$i
i_fa_group=$i_fa_users
i='' i_fa_link=$i
i_fa_chain=$i_fa_link
i='' i_fa_cloud=$i
i='' i_fa_flask=$i
i='' i_fa_scissors=$i
i_fa_cut=$i_fa_scissors
i='' i_fa_files_o=$i
i_fa_copy=$i_fa_files_o
i='' i_fa_paperclip=$i
i='' i_fa_floppy_o=$i
i_fa_save=$i_fa_floppy_o
i='' i_fa_square=$i
i='' i_fa_bars=$i
i_fa_navicon=$i_fa_bars
i_fa_reorder=$i_fa_bars
i='' i_fa_list_ul=$i
i='' i_fa_list_ol=$i
i='' i_fa_strikethrough=$i
i='' i_fa_underline=$i
i='' i_fa_table=$i
i='' i_fa_magic=$i
i='' i_fa_truck=$i
i='' i_fa_pinterest=$i
i='' i_fa_pinterest_square=$i
i='' i_fa_google_plus_square=$i
i='' i_fa_google_plus=$i
i='' i_fa_money=$i
i='' i_fa_caret_down=$i
i='' i_fa_caret_up=$i
i='' i_fa_caret_left=$i
i='' i_fa_caret_right=$i
i='' i_fa_columns=$i
i='' i_fa_sort=$i
i_fa_unsorted=$i_fa_sort
i='' i_fa_sort_desc=$i
i_fa_sort_down=$i_fa_sort_desc
i='' i_fa_sort_asc=$i
i_fa_sort_up=$i_fa_sort_asc
i='' i_fa_envelope=$i
i='' i_fa_linkedin=$i
i='' i_fa_undo=$i
i_fa_rotate_left=$i_fa_undo
i='' i_fa_gavel=$i
i_fa_legal=$i_fa_gavel
i='' i_fa_tachometer=$i
i_fa_dashboard=$i_fa_tachometer
i='' i_fa_comment_o=$i
i='' i_fa_comments_o=$i
i='' i_fa_bolt=$i
i_fa_flash=$i_fa_bolt
i='' i_fa_sitemap=$i
i='' i_fa_umbrella=$i
i='' i_fa_clipboard=$i
i_fa_paste=$i_fa_clipboard
i='' i_fa_lightbulb_o=$i
i='' i_fa_exchange=$i
i='' i_fa_cloud_download=$i
i='' i_fa_cloud_upload=$i
i='' i_fa_user_md=$i
i='' i_fa_stethoscope=$i
i='' i_fa_suitcase=$i
i='' i_fa_bell=$i
i='' i_fa_coffee=$i
i='' i_fa_cutlery=$i
i='' i_fa_file_text_o=$i
i='' i_fa_building_o=$i
i='' i_fa_hospital_o=$i
i='' i_fa_ambulance=$i
i='' i_fa_medkit=$i
i='' i_fa_fighter_jet=$i
i='' i_fa_beer=$i
i='' i_fa_h_square=$i
i='' i_fa_plus_square=$i
i='' i_fa_angle_double_left=$i
i='' i_fa_angle_double_right=$i
i='' i_fa_angle_double_up=$i
i='' i_fa_angle_double_down=$i
i='' i_fa_angle_left=$i
i='' i_fa_angle_right=$i
i='' i_fa_angle_up=$i
i='' i_fa_angle_down=$i
i='' i_fa_desktop=$i
i='' i_fa_laptop=$i
i='' i_fa_tablet=$i
i='' i_fa_mobile=$i
i_fa_mobile_phone=$i_fa_mobile
i='' i_fa_circle_o=$i
i='' i_fa_quote_left=$i
i='' i_fa_quote_right=$i
i='' i_fa_spinner=$i
i='' i_fa_circle=$i
i='' i_fa_reply=$i
i_fa_mail_reply=$i_fa_reply
i='' i_fa_github_alt=$i
i='' i_fa_folder_o=$i
i='' i_fa_folder_open_o=$i
i='' i_fa_smile_o=$i
i='' i_fa_frown_o=$i
i='' i_fa_meh_o=$i
i='' i_fa_gamepad=$i
i='' i_fa_keyboard_o=$i
i='' i_fa_flag_o=$i
i='' i_fa_flag_checkered=$i
i='' i_fa_terminal=$i
i='' i_fa_code=$i
i='' i_fa_reply_all=$i
i_fa_mail_reply_all=$i_fa_reply_all
i='' i_fa_star_half_o=$i
i_fa_star_half_empty=$i_fa_star_half_o
i_fa_star_half_full=$i_fa_star_half_o
i='' i_fa_location_arrow=$i
i='' i_fa_crop=$i
i='' i_fa_code_fork=$i
i='' i_fa_chain_broken=$i
i_fa_unlink=$i_fa_chain_broken
i='' i_fa_question=$i
i='' i_fa_info=$i
i='' i_fa_exclamation=$i
i='' i_fa_superscript=$i
i='' i_fa_subscript=$i
i='' i_fa_eraser=$i
i='' i_fa_puzzle_piece=$i
i='' i_fa_microphone=$i
i='' i_fa_microphone_slash=$i
i='' i_fa_shield=$i
i='' i_fa_calendar_o=$i
i='' i_fa_fire_extinguisher=$i
i='' i_fa_rocket=$i
i='' i_fa_maxcdn=$i
i='' i_fa_chevron_circle_left=$i
i='' i_fa_chevron_circle_right=$i
i='' i_fa_chevron_circle_up=$i
i='' i_fa_chevron_circle_down=$i
i='' i_fa_html5=$i
i='' i_fa_css3=$i
i='' i_fa_anchor=$i
i='' i_fa_unlock_alt=$i
i='' i_fa_bullseye=$i
i='' i_fa_ellipsis_h=$i
i='' i_fa_ellipsis_v=$i
i='' i_fa_rss_square=$i
i='' i_fa_play_circle=$i
i='' i_fa_ticket=$i
i='' i_fa_minus_square=$i
i='' i_fa_minus_square_o=$i
i='' i_fa_level_up=$i
i='' i_fa_level_down=$i
i='' i_fa_check_square=$i
i='' i_fa_pencil_square=$i
i='' i_fa_external_link_square=$i
i='' i_fa_share_square=$i
i='' i_fa_compass=$i
i='' i_fa_caret_square_o_down=$i
i_fa_toggle_down=$i_fa_caret_square_o_down
i='' i_fa_caret_square_o_up=$i
i_fa_toggle_up=$i_fa_caret_square_o_up
i='' i_fa_caret_square_o_right=$i
i_fa_toggle_right=$i_fa_caret_square_o_right
i='' i_fa_eur=$i
i_fa_euro=$i_fa_eur
i='' i_fa_gbp=$i
i='' i_fa_usd=$i
i_fa_dollar=$i_fa_usd
i='' i_fa_inr=$i
i_fa_rupee=$i_fa_inr
i='' i_fa_jpy=$i
i_fa_cny=$i_fa_jpy
i_fa_rmb=$i_fa_jpy
i_fa_yen=$i_fa_jpy
i='' i_fa_rub=$i
i_fa_rouble=$i_fa_rub
i_fa_ruble=$i_fa_rub
i='' i_fa_krw=$i
i_fa_won=$i_fa_krw
i='' i_fa_btc=$i
i_fa_bitcoin=$i_fa_btc
i='' i_fa_file=$i
i='' i_fa_file_text=$i
i='' i_fa_sort_alpha_asc=$i
i='' i_fa_sort_alpha_desc=$i
i='' i_fa_sort_amount_asc=$i
i='' i_fa_sort_amount_desc=$i
i='' i_fa_sort_numeric_asc=$i
i='' i_fa_sort_numeric_desc=$i
i='' i_fa_thumbs_up=$i
i='' i_fa_thumbs_down=$i
i='' i_fa_youtube_square=$i
i='' i_fa_youtube=$i
i='' i_fa_xing=$i
i='' i_fa_xing_square=$i
i='' i_fa_youtube_play=$i
i='' i_fa_dropbox=$i
i='' i_fa_stack_overflow=$i
i='' i_fa_instagram=$i
i='' i_fa_flickr=$i
i='' i_fa_adn=$i
i='' i_fa_bitbucket=$i
i='' i_fa_bitbucket_square=$i
i='' i_fa_tumblr=$i
i='' i_fa_tumblr_square=$i
i='' i_fa_long_arrow_down=$i
i='' i_fa_long_arrow_up=$i
i='' i_fa_long_arrow_left=$i
i='' i_fa_long_arrow_right=$i
i='' i_fa_apple=$i
i='' i_fa_windows=$i
i='' i_fa_android=$i
i='' i_fa_linux=$i
i='' i_fa_dribbble=$i
i='' i_fa_skype=$i
i='' i_fa_foursquare=$i
i='' i_fa_trello=$i
i='' i_fa_female=$i
i='' i_fa_male=$i
i='' i_fa_gratipay=$i
i_fa_gittip=$i_fa_gratipay
i='' i_fa_sun_o=$i
i='' i_fa_moon_o=$i
i='' i_fa_archive=$i
i='' i_fa_bug=$i
i='' i_fa_vk=$i
i='' i_fa_weibo=$i
i='' i_fa_renren=$i
i='' i_fa_pagelines=$i
i='' i_fa_stack_exchange=$i
i='' i_fa_arrow_circle_o_right=$i
i='' i_fa_arrow_circle_o_left=$i
i='' i_fa_caret_square_o_left=$i
i_fa_toggle_left=$i_fa_caret_square_o_left
i='' i_fa_dot_circle_o=$i
i='' i_fa_wheelchair=$i
i='' i_fa_vimeo_square=$i
i='' i_fa_try=$i
i_fa_turkish_lira=$i_fa_try
i='' i_fa_plus_square_o=$i
i='' i_fa_space_shuttle=$i
i='' i_fa_slack=$i
i='' i_fa_envelope_square=$i
i='' i_fa_wordpress=$i
i='' i_fa_openid=$i
i='' i_fa_university=$i
i_fa_bank=$i_fa_university
i_fa_institution=$i_fa_university
i='' i_fa_graduation_cap=$i
i_fa_mortar_board=$i_fa_graduation_cap
i='' i_fa_yahoo=$i
i='' i_fa_google=$i
i='' i_fa_reddit=$i
i='' i_fa_reddit_square=$i
i='' i_fa_stumbleupon_circle=$i
i='' i_fa_stumbleupon=$i
i='' i_fa_delicious=$i
i='' i_fa_digg=$i
i='' i_fa_pied_piper_pp=$i
i='' i_fa_pied_piper_alt=$i
i='' i_fa_drupal=$i
i='' i_fa_joomla=$i
i='' i_fa_language=$i
i='' i_fa_fax=$i
i='' i_fa_building=$i
i='' i_fa_child=$i
i='' i_fa_paw=$i
i='' i_fa_spoon=$i
i='' i_fa_cube=$i
i='' i_fa_cubes=$i
i='' i_fa_behance=$i
i='' i_fa_behance_square=$i
i='' i_fa_steam=$i
i='' i_fa_steam_square=$i
i='' i_fa_recycle=$i
i='' i_fa_car=$i
i_fa_automobile=$i_fa_car
i='' i_fa_taxi=$i
i_fa_cab=$i_fa_taxi
i='' i_fa_tree=$i
i='' i_fa_spotify=$i
i='' i_fa_deviantart=$i
i='' i_fa_soundcloud=$i
i='' i_fa_database=$i
i='' i_fa_file_pdf_o=$i
i='' i_fa_file_word_o=$i
i='' i_fa_file_excel_o=$i
i='' i_fa_file_powerpoint_o=$i
i='' i_fa_file_image_o=$i
i_fa_file_photo_o=$i_fa_file_image_o
i_fa_file_picture_o=$i_fa_file_image_o
i='' i_fa_file_archive_o=$i
i_fa_file_zip_o=$i_fa_file_archive_o
i='' i_fa_file_audio_o=$i
i_fa_file_sound_o=$i_fa_file_audio_o
i='' i_fa_file_video_o=$i
i_fa_file_movie_o=$i_fa_file_video_o
i='' i_fa_file_code_o=$i
i='' i_fa_vine=$i
i='' i_fa_codepen=$i
i='' i_fa_jsfiddle=$i
i='' i_fa_life_ring=$i
i_fa_life_bouy=$i_fa_life_ring
i_fa_life_buoy=$i_fa_life_ring
i_fa_life_saver=$i_fa_life_ring
i_fa_support=$i_fa_life_ring
i='' i_fa_circle_o_notch=$i
i='' i_fa_rebel=$i
i_fa_ra=$i_fa_rebel
i_fa_resistance=$i_fa_rebel
i='' i_fa_empire=$i
i_fa_ge=$i_fa_empire
i='' i_fa_git_square=$i
i='' i_fa_git=$i
i='' i_fa_hacker_news=$i
i_fa_y_combinator_square=$i_fa_hacker_news
i_fa_yc_square=$i_fa_hacker_news
i='' i_fa_tencent_weibo=$i
i='' i_fa_qq=$i
i='' i_fa_weixin=$i
i_fa_wechat=$i_fa_weixin
i='' i_fa_paper_plane=$i
i_fa_send=$i_fa_paper_plane
i='' i_fa_paper_plane_o=$i
i_fa_send_o=$i_fa_paper_plane_o
i='' i_fa_history=$i
i='' i_fa_circle_thin=$i
i='' i_fa_header=$i
i='' i_fa_paragraph=$i
i='' i_fa_sliders=$i
i='' i_fa_share_alt=$i
i='' i_fa_share_alt_square=$i
i='' i_fa_bomb=$i
i='' i_fa_futbol_o=$i
i_fa_soccer_ball_o=$i_fa_futbol_o
i='' i_fa_tty=$i
i='' i_fa_binoculars=$i
i='' i_fa_plug=$i
i='' i_fa_slideshare=$i
i='' i_fa_twitch=$i
i='' i_fa_yelp=$i
i='' i_fa_newspaper_o=$i
i='' i_fa_wifi=$i
i='' i_fa_calculator=$i
i='' i_fa_paypal=$i
i='' i_fa_google_wallet=$i
i='' i_fa_cc_visa=$i
i='' i_fa_cc_mastercard=$i
i='' i_fa_cc_discover=$i
i='' i_fa_cc_amex=$i
i='' i_fa_cc_paypal=$i
i='' i_fa_cc_stripe=$i
i='' i_fa_bell_slash=$i
i='' i_fa_bell_slash_o=$i
i='' i_fa_trash=$i
i='' i_fa_copyright=$i
i='' i_fa_at=$i
i='' i_fa_eyedropper=$i
i='' i_fa_paint_brush=$i
i='' i_fa_birthday_cake=$i
i='' i_fa_area_chart=$i
i='' i_fa_pie_chart=$i
i='' i_fa_line_chart=$i
i='' i_fa_lastfm=$i
i='' i_fa_lastfm_square=$i
i='' i_fa_toggle_off=$i
i='' i_fa_toggle_on=$i
i='' i_fa_bicycle=$i
i='' i_fa_bus=$i
i='' i_fa_ioxhost=$i
i='' i_fa_angellist=$i
i='' i_fa_cc=$i
i='' i_fa_ils=$i
i_fa_shekel=$i_fa_ils
i_fa_sheqel=$i_fa_ils
i='' i_fa_meanpath=$i
i='' i_fa_buysellads=$i
i='' i_fa_connectdevelop=$i
i='' i_fa_dashcube=$i
i='' i_fa_forumbee=$i
i='' i_fa_leanpub=$i
i='' i_fa_sellsy=$i
i='' i_fa_shirtsinbulk=$i
i='' i_fa_simplybuilt=$i
i='' i_fa_skyatlas=$i
i='' i_fa_cart_plus=$i
i='' i_fa_cart_arrow_down=$i
i='' i_fa_diamond=$i
i='' i_fa_ship=$i
i='' i_fa_user_secret=$i
i='' i_fa_motorcycle=$i
i='' i_fa_street_view=$i
i='' i_fa_heartbeat=$i
i='' i_fa_venus=$i
i='' i_fa_mars=$i
i='' i_fa_mercury=$i
i='' i_fa_transgender=$i
i_fa_intersex=$i_fa_transgender
i='' i_fa_transgender_alt=$i
i='' i_fa_venus_double=$i
i='' i_fa_mars_double=$i
i='' i_fa_venus_mars=$i
i='' i_fa_mars_stroke=$i
i='' i_fa_mars_stroke_v=$i
i='' i_fa_mars_stroke_h=$i
i='' i_fa_neuter=$i
i='' i_fa_genderless=$i
i='' i_fa_facebook_official=$i
i='' i_fa_pinterest_p=$i
i='' i_fa_whatsapp=$i
i='' i_fa_server=$i
i='' i_fa_user_plus=$i
i='' i_fa_user_times=$i
i='' i_fa_bed=$i
i_fa_hotel=$i_fa_bed
i='' i_fa_viacoin=$i
i='' i_fa_train=$i
i='' i_fa_subway=$i
i='' i_fa_medium=$i
i='' i_fa_y_combinator=$i
i_fa_yc=$i_fa_y_combinator
i='' i_fa_optin_monster=$i
i='' i_fa_opencart=$i
i='' i_fa_expeditedssl=$i
i='' i_fa_battery_full=$i
i_fa_battery=$i_fa_battery_full
i_fa_battery_4=$i_fa_battery_full
i='' i_fa_battery_three_quarters=$i
i_fa_battery_3=$i_fa_battery_three_quarters
i='' i_fa_battery_half=$i
i_fa_battery_2=$i_fa_battery_half
i='' i_fa_battery_quarter=$i
i_fa_battery_1=$i_fa_battery_quarter
i='' i_fa_battery_empty=$i
i_fa_battery_0=$i_fa_battery_empty
i='' i_fa_mouse_pointer=$i
i='' i_fa_i_cursor=$i
i='' i_fa_object_group=$i
i='' i_fa_object_ungroup=$i
i='' i_fa_sticky_note=$i
i='' i_fa_sticky_note_o=$i
i='' i_fa_cc_jcb=$i
i='' i_fa_cc_diners_club=$i
i='' i_fa_clone=$i
i='' i_fa_balance_scale=$i
i='' i_fa_hourglass_o=$i
i='' i_fa_hourglass_start=$i
i_fa_hourglass_1=$i_fa_hourglass_start
i='' i_fa_hourglass_half=$i
i_fa_hourglass_2=$i_fa_hourglass_half
i='' i_fa_hourglass_end=$i
i_fa_hourglass_3=$i_fa_hourglass_end
i='' i_fa_hourglass=$i
i='' i_fa_hand_rock_o=$i
i_fa_hand_grab_o=$i_fa_hand_rock_o
i='' i_fa_hand_paper_o=$i
i_fa_hand_stop_o=$i_fa_hand_paper_o
i='' i_fa_hand_scissors_o=$i
i='' i_fa_hand_lizard_o=$i
i='' i_fa_hand_spock_o=$i
i='' i_fa_hand_pointer_o=$i
i='' i_fa_hand_peace_o=$i
i='' i_fa_trademark=$i
i='' i_fa_registered=$i
i='' i_fa_creative_commons=$i
i='' i_fa_gg=$i
i='' i_fa_gg_circle=$i
i='' i_fa_tripadvisor=$i
i='' i_fa_odnoklassniki=$i
i='' i_fa_odnoklassniki_square=$i
i='' i_fa_get_pocket=$i
i='' i_fa_wikipedia_w=$i
i='' i_fa_safari=$i
i='' i_fa_chrome=$i
i='' i_fa_firefox=$i
i='' i_fa_opera=$i
i='' i_fa_internet_explorer=$i
i='' i_fa_television=$i
i_fa_tv=$i_fa_television
i='' i_fa_contao=$i
i='' i_fa_500px=$i
i='' i_fa_amazon=$i
i='' i_fa_calendar_plus_o=$i
i='' i_fa_calendar_minus_o=$i
i='' i_fa_calendar_times_o=$i
i='' i_fa_calendar_check_o=$i
i='' i_fa_industry=$i
i='' i_fa_map_pin=$i
i='' i_fa_map_signs=$i
i='' i_fa_map_o=$i
i='' i_fa_map=$i
i='' i_fa_commenting=$i
i='' i_fa_commenting_o=$i
i='' i_fa_houzz=$i
i='' i_fa_vimeo=$i
i='' i_fa_black_tie=$i
i='' i_fa_fonticons=$i
i='' i_fa_reddit_alien=$i
i='' i_fa_edge=$i
i='' i_fa_credit_card_alt=$i
i='' i_fa_codiepie=$i
i='' i_fa_modx=$i
i='' i_fa_fort_awesome=$i
i='' i_fa_usb=$i
i='' i_fa_product_hunt=$i
i='' i_fa_mixcloud=$i
i='' i_fa_scribd=$i
i='' i_fa_pause_circle=$i
i='' i_fa_pause_circle_o=$i
i='' i_fa_stop_circle=$i
i='' i_fa_stop_circle_o=$i
i='' i_fa_shopping_bag=$i
i='' i_fa_shopping_basket=$i
i='' i_fa_hashtag=$i
i='' i_fa_bluetooth=$i
i='' i_fa_bluetooth_b=$i
i='' i_fa_percent=$i
i='' i_fa_gitlab=$i
i='' i_fa_wpbeginner=$i
i='' i_fa_wpforms=$i
i='' i_fa_envira=$i
i='' i_fa_universal_access=$i
i='' i_fa_wheelchair_alt=$i
i='' i_fa_question_circle_o=$i
i='' i_fa_blind=$i
i='' i_fa_audio_description=$i
i='' i_fa_volume_control_phone=$i
i='' i_fa_braille=$i
i='' i_fa_assistive_listening_systems=$i
i='' i_fa_american_sign_language_interpreting=$i
i_fa_asl_interpreting=$i_fa_american_sign_language_interpreting
i='' i_fa_deaf=$i
i_fa_deafness=$i_fa_deaf
i_fa_hard_of_hearing=$i_fa_deaf
i='' i_fa_glide=$i
i='' i_fa_glide_g=$i
i='' i_fa_sign_language=$i
i_fa_signing=$i_fa_sign_language
i='' i_fa_low_vision=$i
i='' i_fa_viadeo=$i
i='' i_fa_viadeo_square=$i
i='' i_fa_snapchat=$i
i='' i_fa_snapchat_ghost=$i
i='' i_fa_snapchat_square=$i
i='' i_fa_pied_piper=$i
i='' i_fa_first_order=$i
i='' i_fa_yoast=$i
i='' i_fa_themeisle=$i
i='' i_fa_google_plus_official=$i
i_fa_google_plus_circle=$i_fa_google_plus_official
i='' i_fa_font_awesome=$i
i_fa_fa=$i_fa_font_awesome
i='' i_fa_handshake_o=$i
i='' i_fa_envelope_open=$i
i='' i_fa_envelope_open_o=$i
i='' i_fa_linode=$i
i='' i_fa_address_book=$i
i='' i_fa_address_book_o=$i
i='' i_fa_address_card=$i
i_fa_vcard=$i_fa_address_card
i='' i_fa_address_card_o=$i
i_fa_vcard_o=$i_fa_address_card_o
i='' i_fa_user_circle=$i
i='' i_fa_user_circle_o=$i
i='' i_fa_user_o=$i
i='' i_fa_id_badge=$i
i='' i_fa_id_card=$i
i_fa_drivers_license=$i_fa_id_card
i='' i_fa_id_card_o=$i
i_fa_drivers_license_o=$i_fa_id_card_o
i='' i_fa_quora=$i
i='' i_fa_free_code_camp=$i
i='' i_fa_telegram=$i
i='' i_fa_thermometer_full=$i
i_fa_thermometer=$i_fa_thermometer_full
i_fa_thermometer_4=$i_fa_thermometer_full
i='' i_fa_thermometer_three_quarters=$i
i_fa_thermometer_3=$i_fa_thermometer_three_quarters
i='' i_fa_thermometer_half=$i
i_fa_thermometer_2=$i_fa_thermometer_half
i='' i_fa_thermometer_quarter=$i
i_fa_thermometer_1=$i_fa_thermometer_quarter
i='' i_fa_thermometer_empty=$i
i_fa_thermometer_0=$i_fa_thermometer_empty
i='' i_fa_shower=$i
i='' i_fa_bath=$i
i_fa_bathtub=$i_fa_bath
i_fa_s15=$i_fa_bath
i='' i_fa_podcast=$i
i='' i_fa_window_maximize=$i
i='' i_fa_window_minimize=$i
i='' i_fa_window_restore=$i
i='' i_fa_window_close=$i
i_fa_times_rectangle=$i_fa_window_close
i='' i_fa_window_close_o=$i
i_fa_times_rectangle_o=$i_fa_window_close_o
i='' i_fa_bandcamp=$i
i='' i_fa_grav=$i
i='' i_fa_etsy=$i
i='' i_fa_imdb=$i
i='' i_fa_ravelry=$i
i='' i_fa_eercast=$i
i='' i_fa_microchip=$i
i='' i_fa_snowflake_o=$i
i='' i_fa_superpowers=$i
i='' i_fa_wpexplorer=$i
i='' i_fa_meetup=$i
unset i

View file

@ -1,175 +0,0 @@
#!/usr/bin/env bash
# Font Awesome Extension (170 icons)
# Codepoints: Nerd Fonts moved E000-E0A9 → E200-E2A9
test -n "$__i_fae_loaded" && return || __i_fae_loaded=1
i='' i_fae_smaller=$i
i='' i_fae_snowing=$i
i='' i_fae_soda=$i
i='' i_fae_sofa=$i
i='' i_fae_soup=$i
i='' i_fae_spermatozoon=$i
i='' i_fae_spin_double=$i
i='' i_fae_stomach=$i
i='' i_fae_storm=$i
i='' i_fae_telescope=$i
i='' i_fae_thermometer=$i
i='' i_fae_thermometer_high=$i
i='' i_fae_thermometer_low=$i
i='' i_fae_thin_close=$i
i='' i_fae_toilet=$i
i='' i_fae_tools=$i
i='' i_fae_tooth=$i
i='' i_fae_uterus=$i
i='' i_fae_w3c=$i
i='' i_fae_walking=$i
i='' i_fae_virus=$i
i='' i_fae_telegram_circle=$i
i='' i_fae_slash=$i
i='' i_fae_telegram=$i
i='' i_fae_shirt=$i
i='' i_fae_tacos=$i
i='' i_fae_sushi=$i
i='' i_fae_triangle_ruler=$i
i='' i_fae_tree=$i
i='' i_fae_sun_cloud=$i
i='' i_fae_ruby_o=$i
i='' i_fae_ruler=$i
i='' i_fae_umbrella=$i
i='' i_fae_medicine=$i
i='' i_fae_microscope=$i
i='' i_fae_milk_bottle=$i
i='' i_fae_minimize=$i
i='' i_fae_molecule=$i
i='' i_fae_moon_cloud=$i
i='' i_fae_mushroom=$i
i='' i_fae_mustache=$i
i='' i_fae_mysql=$i
i='' i_fae_nintendo=$i
i='' i_fae_palette_color=$i
i='' i_fae_pi=$i
i='' i_fae_pizza=$i
i='' i_fae_planet=$i
i='' i_fae_plant=$i
i='' i_fae_playstation=$i
i='' i_fae_poison=$i
i='' i_fae_popcorn=$i
i='' i_fae_popsicle=$i
i='' i_fae_pulse=$i
i='' i_fae_python=$i
i='' i_fae_quora_circle=$i
i='' i_fae_quora_square=$i
i='' i_fae_radioactive=$i
i='' i_fae_raining=$i
i='' i_fae_real_heart=$i
i='' i_fae_refrigerator=$i
i='' i_fae_restore=$i
i='' i_fae_ring=$i
i='' i_fae_ruby=$i
i='' i_fae_fingerprint=$i
i='' i_fae_floppy=$i
i='' i_fae_footprint=$i
i='' i_fae_freecodecamp=$i
i='' i_fae_galaxy=$i
i='' i_fae_galery=$i
i='' i_fae_glass=$i
i='' i_fae_google_drive=$i
i='' i_fae_google_play=$i
i='' i_fae_gps=$i
i='' i_fae_grav=$i
i='' i_fae_guitar=$i
i='' i_fae_gut=$i
i='' i_fae_halter=$i
i='' i_fae_hamburger=$i
i='' i_fae_hat=$i
i='' i_fae_hexagon=$i
i='' i_fae_high_heel=$i
i='' i_fae_hotdog=$i
i='' i_fae_ice_cream=$i
i='' i_fae_id_card=$i
i='' i_fae_imdb=$i
i='' i_fae_infinity=$i
i='' i_fae_java=$i
i='' i_fae_layers=$i
i='' i_fae_lips=$i
i='' i_fae_lipstick=$i
i='' i_fae_liver=$i
i='' i_fae_lung=$i
i='' i_fae_makeup_brushes=$i
i='' i_fae_maximize=$i
i='' i_fae_wallet=$i
i='' i_fae_chess_horse=$i
i='' i_fae_chess_king=$i
i='' i_fae_chess_pawn=$i
i='' i_fae_chess_queen=$i
i='' i_fae_chess_tower=$i
i='' i_fae_cheese=$i
i='' i_fae_chilli=$i
i='' i_fae_chip=$i
i='' i_fae_cicling=$i
i='' i_fae_cloud=$i
i='' i_fae_cockroach=$i
i='' i_fae_coffe_beans=$i
i='' i_fae_coins=$i
i='' i_fae_comb=$i
i='' i_fae_comet=$i
i='' i_fae_crown=$i
i='' i_fae_cup_coffe=$i
i='' i_fae_dice=$i
i='' i_fae_disco=$i
i='' i_fae_dna=$i
i='' i_fae_donut=$i
i='' i_fae_dress=$i
i='' i_fae_drop=$i
i='' i_fae_ello=$i
i='' i_fae_envelope_open=$i
i='' i_fae_envelope_open_o=$i
i='' i_fae_equal=$i
i='' i_fae_equal_bigger=$i
i='' i_fae_feedly=$i
i='' i_fae_file_export=$i
i='' i_fae_file_import=$i
i='' i_fae_wind=$i
i='' i_fae_atom=$i
i='' i_fae_bacteria=$i
i='' i_fae_banana=$i
i='' i_fae_bath=$i
i='' i_fae_bed=$i
i='' i_fae_benzene=$i
i='' i_fae_bigger=$i
i='' i_fae_biohazard=$i
i='' i_fae_blogger_circle=$i
i='' i_fae_blogger_square=$i
i='' i_fae_bones=$i
i='' i_fae_book_open=$i
i='' i_fae_book_open_o=$i
i='' i_fae_brain=$i
i='' i_fae_bread=$i
i='' i_fae_butterfly=$i
i='' i_fae_carot=$i
i='' i_fae_cc_by=$i
i='' i_fae_cc_cc=$i
i='' i_fae_cc_nc=$i
i='' i_fae_cc_nc_eu=$i
i='' i_fae_cc_nc_jp=$i
i='' i_fae_cc_nd=$i
i='' i_fae_cc_remix=$i
i='' i_fae_cc_sa=$i
i='' i_fae_cc_share=$i
i='' i_fae_cc_zero=$i
i='' i_fae_checklist_o=$i
i='' i_fae_cherry=$i
i='' i_fae_chess_bishop=$i
i='' i_fae_xbox=$i
i='' i_fae_apple_fruit=$i
i='' i_fae_chicken_thigh=$i
i='' i_fae_gift_card=$i
i='' i_fae_injection=$i
i='' i_fae_isle=$i
i='' i_fae_lollipop=$i
i='' i_fae_loyalty_card=$i
i='' i_fae_meat=$i
i='' i_fae_mountains=$i
i='' i_fae_orange=$i
i='' i_fae_peach=$i
i='' i_fae_pear=$i
unset i

View file

@ -1,10 +0,0 @@
#!/usr/bin/env bash
# IEC Power Symbols (5 icons)
# Codepoints: 23FB-23FE 2B58
test -n "$__i_iec_loaded" && return || __i_iec_loaded=1
i='⏻' i_iec_power=$i
i='⏼' i_iec_toggle_power=$i
i='' i_iec_power_on=$i
i='⏾' i_iec_sleep_mode=$i
i='⭘' i_iec_power_off=$i
unset i

View file

@ -1,51 +0,0 @@
#!/usr/bin/env bash
# Font Logos (Font Linux) (44 icons)
# Codepoints: Nerd Fonts moved F100-F12D with holes → F300-F32D
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
test -n "$__i_linux_loaded" && return || __i_linux_loaded=1
i='' i_linux_alpine=$i
i='' i_linux_aosc=$i
i='' i_linux_apple=$i
i='' i_linux_archlinux=$i
i='' i_linux_centos=$i
i='' i_linux_coreos=$i
i='' i_linux_debian=$i
i='' i_linux_devuan=$i
i='' i_linux_docker=$i
i='' i_linux_elementary=$i
i='' i_linux_fedora=$i
i='' i_linux_fedora_inverse=$i
i='' i_linux_freebsd=$i
i='' i_linux_gentoo=$i
i='' i_linux_linuxmint=$i
i='' i_linux_linuxmint_inverse=$i
i='' i_linux_mageia=$i
i='' i_linux_mandriva=$i
i='' i_linux_manjaro=$i
i='' i_linux_nixos=$i
i='' i_linux_opensuse=$i
i='' i_linux_raspberry_pi=$i
i='' i_linux_redhat=$i
i='' i_linux_sabayon=$i
i='' i_linux_slackware=$i
i='' i_linux_slackware_inverse=$i
i='' i_linux_tux=$i
i='' i_linux_ubuntu=$i
i='' i_linux_ubuntu_inverse=$i
i='' i_linux_flathub=$i
i='' i_linux_gnu_guix=$i
i='' i_linux_snappy=$i
i='' i_linux_void=$i
i='' i_linux_zorin=$i
i='' i_linux_budgie=$i
i='' i_linux_deepin=$i
i='' i_linux_illumos=$i
i='' i_linux_openbsd=$i
i='' i_linux_solus=$i
i='' i_linux_archlabs=$i
i='' i_linux_ferris=$i
i='' i_linux_pop_os=$i
i='' i_linux_artix=$i
i='' i_linux_kali_linux=$i
unset i

File diff suppressed because it is too large Load diff

View file

@ -1,177 +0,0 @@
#!/usr/bin/env bash
# Octicons (172 icons)
# Codepoints: 2665, 26A1, Nerd Fonts moved F000-F105 with holes → F400-F4A8, F27C → F67C
test -n "$__i_oct_loaded" && return || __i_oct_loaded=1
i='♥' i_oct_heart=$i
i='⚡' i_oct_zap=$i
i='' i_oct_light_bulb=$i
i='' i_oct_repo=$i
i='' i_oct_repo_forked=$i
i='' i_oct_repo_push=$i
i='' i_oct_repo_pull=$i
i='' i_oct_book=$i
i='' i_oct_octoface=$i
i='' i_oct_git_pull_request=$i
i='' i_oct_mark_github=$i
i='' i_oct_cloud_download=$i
i='' i_oct_cloud_upload=$i
i='' i_oct_keyboard=$i
i='' i_oct_gist=$i
i='' i_oct_file_code=$i
i='' i_oct_file_text=$i
i='' i_oct_file_media=$i
i='' i_oct_file_zip=$i
i='' i_oct_file_pdf=$i
i='' i_oct_tag=$i
i='' i_oct_file_directory=$i
i='' i_oct_file_submodule=$i
i='' i_oct_person=$i
i='' i_oct_jersey=$i
i='' i_oct_git_commit=$i
i='' i_oct_git_branch=$i
i='' i_oct_git_merge=$i
i='' i_oct_mirror=$i
i='' i_oct_issue_opened=$i
i='' i_oct_issue_reopened=$i
i='' i_oct_issue_closed=$i
i='' i_oct_star=$i
i='' i_oct_comment=$i
i='' i_oct_question=$i
i='' i_oct_alert=$i
i='' i_oct_search=$i
i='' i_oct_gear=$i
i='' i_oct_radio_tower=$i
i='' i_oct_tools=$i
i='' i_oct_sign_out=$i
i='' i_oct_rocket=$i
i='' i_oct_rss=$i
i='' i_oct_clippy=$i
i='' i_oct_sign_in=$i
i='' i_oct_organization=$i
i='' i_oct_device_mobile=$i
i='' i_oct_unfold=$i
i='' i_oct_check=$i
i='' i_oct_mail=$i
i='' i_oct_mail_read=$i
i='' i_oct_arrow_up=$i
i='' i_oct_arrow_right=$i
i='' i_oct_arrow_down=$i
i='' i_oct_arrow_left=$i
i='' i_oct_pin=$i
i='' i_oct_gift=$i
i='' i_oct_graph=$i
i='' i_oct_triangle_left=$i
i='' i_oct_credit_card=$i
i='' i_oct_clock=$i
i='' i_oct_ruby=$i
i='' i_oct_broadcast=$i
i='' i_oct_key=$i
i='' i_oct_repo_force_push=$i
i='' i_oct_repo_clone=$i
i='' i_oct_diff=$i
i='' i_oct_eye=$i
i='' i_oct_comment_discussion=$i
i='' i_oct_mail_reply=$i
i='' i_oct_primitive_dot=$i
i='' i_oct_primitive_square=$i
i='' i_oct_device_camera=$i
i='' i_oct_device_camera_video=$i
i='' i_oct_pencil=$i
i='' i_oct_info=$i
i='' i_oct_triangle_right=$i
i='' i_oct_triangle_down=$i
i='' i_oct_link=$i
i='' i_oct_plus=$i
i='' i_oct_three_bars=$i
i='' i_oct_code=$i
i='' i_oct_location=$i
i='' i_oct_list_unordered=$i
i='' i_oct_list_ordered=$i
i='' i_oct_quote=$i
i='' i_oct_versions=$i
i='' i_oct_calendar=$i
i='' i_oct_lock=$i
i='' i_oct_diff_added=$i
i='' i_oct_diff_removed=$i
i='' i_oct_diff_modified=$i
i='' i_oct_diff_renamed=$i
i='' i_oct_horizontal_rule=$i
i='' i_oct_arrow_small_right=$i
i='' i_oct_milestone=$i
i='' i_oct_checklist=$i
i='' i_oct_megaphone=$i
i='' i_oct_chevron_right=$i
i='' i_oct_bookmark=$i
i='' i_oct_settings=$i
i='' i_oct_dashboard=$i
i='' i_oct_history=$i
i='' i_oct_link_external=$i
i='' i_oct_mute=$i
i='' i_oct_x=$i
i='' i_oct_circle_slash=$i
i='' i_oct_pulse=$i
i='' i_oct_sync=$i
i='' i_oct_telescope=$i
i='' i_oct_gist_secret=$i
i='' i_oct_home=$i
i='' i_oct_stop=$i
i='' i_oct_bug=$i
i='' i_oct_logo_github=$i
i='' i_oct_file_binary=$i
i='' i_oct_database=$i
i='' i_oct_server=$i
i='' i_oct_diff_ignored=$i
i='' i_oct_ellipsis=$i
i='' i_oct_no_newline=$i
i='' i_oct_hubot=$i
i='' i_oct_arrow_small_up=$i
i='' i_oct_arrow_small_down=$i
i='' i_oct_arrow_small_left=$i
i='' i_oct_chevron_up=$i
i='' i_oct_chevron_down=$i
i='' i_oct_chevron_left=$i
i='' i_oct_triangle_up=$i
i='' i_oct_git_compare=$i
i='' i_oct_logo_gist=$i
i='' i_oct_file_symlink_file=$i
i='' i_oct_file_symlink_directory=$i
i='' i_oct_squirrel=$i
i='' i_oct_globe=$i
i='' i_oct_unmute=$i
i='' i_oct_mention=$i
i='' i_oct_package=$i
i='' i_oct_browser=$i
i='' i_oct_terminal=$i
i='' i_oct_markdown=$i
i='' i_oct_dash=$i
i='' i_oct_fold=$i
i='' i_oct_inbox=$i
i='' i_oct_trashcan=$i
i='' i_oct_paintcan=$i
i='' i_oct_flame=$i
i='' i_oct_briefcase=$i
i='' i_oct_plug=$i
i='' i_oct_circuit_board=$i
i='' i_oct_mortar_board=$i
i='' i_oct_law=$i
i='' i_oct_thumbsup=$i
i='' i_oct_thumbsdown=$i
i='' i_oct_desktop_download=$i
i='' i_oct_beaker=$i
i='' i_oct_bell=$i
i='' i_oct_watch=$i
i='' i_oct_shield=$i
i='' i_oct_bold=$i
i='' i_oct_text_size=$i
i='' i_oct_italic=$i
i='' i_oct_tasklist=$i
i='' i_oct_verified=$i
i='' i_oct_smiley=$i
i='' i_oct_unverified=$i
i='' i_oct_ellipses=$i
i='' i_oct_file=$i
i='' i_oct_grabber=$i
i='' i_oct_plus_small=$i
i='' i_oct_reply=$i
i='' i_oct_device_desktop=$i
unset i

View file

@ -1,46 +0,0 @@
#!/usr/bin/env bash
# Powerline Extra Symbols (37 icons, 3 aliases)
# Codepoints: E0A0-E0A3 E0B0-E0BF E0C0-E0C8 E0CC-E0CF E0D0-E0D2 E0D4
test -n "$__i_ple_loaded" && return || __i_ple_loaded=1
i='' i_pl_branch=$i
i='' i_pl_line_number=$i
i_pl_current_line=$i_pl_line_number
i='' i_pl_hostname=$i
i_pl_readonly=$i_pl_hostname
i='' i_ple_column_number=$i
i_ple_current_column=$i_ple_column_number
i='' i_pl_left_hard_divider=$i
i='' i_pl_left_soft_divider=$i
i='' i_pl_right_hard_divider=$i
i='' i_pl_right_soft_divider=$i
i='' i_ple_right_half_circle_thick=$i
i='' i_ple_right_half_circle_thin=$i
i='' i_ple_left_half_circle_thick=$i
i='' i_ple_left_half_circle_thin=$i
i='' i_ple_lower_left_triangle=$i
i='' i_ple_backslash_separator=$i
i='' i_ple_lower_right_triangle=$i
i='' i_ple_forwardslash_separator=$i
i='' i_ple_upper_left_triangle=$i
i='' i_ple_forwardslash_separator_redundant=$i
i='' i_ple_upper_right_triangle=$i
i='' i_ple_backslash_separator_redundant=$i
i='' i_ple_flame_thick=$i
i='' i_ple_flame_thin=$i
i='' i_ple_flame_thick_mirrored=$i
i='' i_ple_flame_thin_mirrored=$i
i='' i_ple_pixelated_squares_small=$i
i='' i_ple_pixelated_squares_small_mirrored=$i
i='' i_ple_pixelated_squares_big=$i
i='' i_ple_pixelated_squares_big_mirrored=$i
i='' i_ple_ice_waveform=$i
i='' i_ple_ice_waveform_mirrored=$i
i='' i_ple_honeycomb=$i
i='' i_ple_honeycomb_outline=$i
i='' i_ple_lego_separator=$i
i='' i_ple_lego_separator_thin=$i
i='' i_ple_lego_block_facing=$i
i='' i_ple_lego_block_sideways=$i
i='' i_ple_trapezoid_top_bottom=$i
i='' i_ple_trapezoid_top_bottom_mirrored=$i
unset i

View file

@ -1,16 +0,0 @@
#!/usr/bin/env bash
# Pomicons (11 icons)
# Codepoints: E000-E00A
test -n "$__i_pom_loaded" && return || __i_pom_loaded=1
i='' i_pom_clean_code=$i
i='' i_pom_pomodoro_done=$i
i='' i_pom_pomodoro_estimated=$i
i='' i_pom_pomodoro_ticking=$i
i='' i_pom_pomodoro_squashed=$i
i='' i_pom_short_pause=$i
i='' i_pom_long_pause=$i
i='' i_pom_away=$i
i='' i_pom_pair_programming=$i
i='' i_pom_internal_interruption=$i
i='' i_pom_external_interruption=$i
unset i

View file

@ -1,69 +0,0 @@
#!/usr/bin/env bash
# Seti-UI + Custom (53 icons, 6 aliases)
# Codepoints: E5FA-E62E
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
test -n "$__i_seti_loaded" && return || __i_seti_loaded=1
i='' i_custom_folder_npm=$i
i='' i_custom_folder_git=$i
i_custom_folder_git_branch=$i_custom_folder_git
i='' i_custom_folder_config=$i
i='' i_custom_folder_github=$i
i='' i_custom_folder_open=$i
i='' i_custom_folder=$i
i='' i_seti_stylus=$i
i='' i_seti_project=$i
i='' i_seti_play_arrow=$i
i='' i_seti_sass=$i
i='' i_seti_rails=$i
i='' i_seti_ruby=$i
i='' i_seti_python=$i
i='' i_seti_heroku=$i
i='' i_seti_php=$i
i='' i_seti_markdown=$i
i='' i_seti_license=$i
i='' i_seti_json=$i
i_seti_less=$i_seti_json
i='' i_seti_javascript=$i
i='' i_seti_image=$i
i='' i_seti_html=$i
i='' i_seti_mustache=$i
i='' i_seti_gulp=$i
i='' i_seti_grunt=$i
i='' i_seti_default=$i
i_seti_text=$i_seti_default
i='' i_seti_folder=$i
i='' i_seti_css=$i
i='' i_seti_config=$i
i='' i_seti_npm=$i
i='' i_seti_home=$i
i='' i_seti_ejs=$i
i='' i_seti_xml=$i
i='' i_seti_bower=$i
i='' i_seti_coffee=$i
i_seti_cjsx=$i_seti_coffee
i='' i_seti_twig=$i
i='' i_custom_cpp=$i
i='' i_custom_c=$i
i='' i_seti_haskell=$i
i='' i_seti_lua=$i
i='' i_indent_line=$i
i_indentation_line=$i_indent_line
i_indent_dotted_guide=$i_indent_line
i='' i_seti_karma=$i
i='' i_seti_favicon=$i
i='' i_seti_julia=$i
i='' i_seti_react=$i
i='' i_custom_go=$i
i='' i_seti_go=$i
i='' i_seti_typescript=$i
i='' i_custom_msdos=$i
i='' i_custom_windows=$i
i='' i_custom_vim=$i
i='' i_custom_elm=$i
i='' i_custom_elixir=$i
i='' i_custom_electron=$i
i='' i_custom_crystal=$i
i='' i_custom_purescript=$i
i='' i_custom_puppet=$i
unset i

View file

@ -1,235 +0,0 @@
#!/usr/bin/env bash
# Weather Icons (228 icons)
# Codepoints: F000, F0EB, Nerd Fonts moved E300-E3EB
# Nerd Fonts Version: 2.1.0
# Script Version 1.0.2
test -n "$__i_weather_loaded" && return || __i_weather_loaded=1
i='' i_weather_day_cloudy_gusts=$i
i='' i_weather_day_cloudy_windy=$i
i='' i_weather_day_cloudy=$i
i='' i_weather_day_fog=$i
i='' i_weather_day_hail=$i
i='' i_weather_day_lightning=$i
i='' i_weather_day_rain_mix=$i
i='' i_weather_day_rain_wind=$i
i='' i_weather_day_rain=$i
i='' i_weather_day_showers=$i
i='' i_weather_day_snow=$i
i='' i_weather_day_sprinkle=$i
i='' i_weather_day_sunny_overcast=$i
i='' i_weather_day_sunny=$i
i='' i_weather_day_storm_showers=$i
i='' i_weather_day_thunderstorm=$i
i='' i_weather_cloudy_gusts=$i
i='' i_weather_cloudy_windy=$i
i='' i_weather_cloudy=$i
i='' i_weather_fog=$i
i='' i_weather_hail=$i
i='' i_weather_lightning=$i
i='' i_weather_rain_mix=$i
i='' i_weather_rain_wind=$i
i='' i_weather_rain=$i
i='' i_weather_showers=$i
i='' i_weather_snow=$i
i='' i_weather_sprinkle=$i
i='' i_weather_storm_showers=$i
i='' i_weather_thunderstorm=$i
i='' i_weather_windy=$i
i='' i_weather_night_alt_cloudy_gusts=$i
i='' i_weather_night_alt_cloudy_windy=$i
i='' i_weather_night_alt_hail=$i
i='' i_weather_night_alt_lightning=$i
i='' i_weather_night_alt_rain_mix=$i
i='' i_weather_night_alt_rain_wind=$i
i='' i_weather_night_alt_rain=$i
i='' i_weather_night_alt_rain_mix=$i
i='' i_weather_night_alt_snow=$i
i='' i_weather_night_alt_sprinkle=$i
i='' i_weather_night_alt_storm_showers=$i
i='' i_weather_night_alt_thunderstorm=$i
i='' i_weather_night_clear=$i
i='' i_weather_night_cloudy_gusts=$i
i='' i_weather_night_cloudy_windy=$i
i='' i_weather_night_cloudy=$i
i='' i_weather_night_hail=$i
i='' i_weather_night_lightning=$i
i='' i_weather_night_rain_mix=$i
i='' i_weather_night_rain_wind=$i
i='' i_weather_night_rain=$i
i='' i_weather_night_showers=$i
i='' i_weather_night_snow=$i
i='' i_weather_night_sprinkle=$i
i='' i_weather_night_storm_showers=$i
i='' i_weather_night_thunderstorm=$i
i='' i_weather_celsius=$i
i='' i_weather_cloud_down=$i
i='' i_weather_cloud_refresh=$i
i='' i_weather_cloud_up=$i
i='' i_weather_cloud=$i
i='' i_weather_degrees=$i
i='' i_weather_direction_down_left=$i
i='' i_weather_direction_down=$i
i='' i_weather_fahrenheit=$i
i='' i_weather_horizon_alt=$i
i='' i_weather_horizon=$i
i='' i_weather_direction_left=$i
i='' i_weather_aliens=$i
i='' i_weather_night_fog=$i
i='' i_weather_refresh_alt=$i
i='' i_weather_refresh=$i
i='' i_weather_direction_right=$i
i='' i_weather_raindrops=$i
i='' i_weather_strong_wind=$i
i='' i_weather_sunrise=$i
i='' i_weather_sunset=$i
i='' i_weather_thermometer_exterior=$i
i='' i_weather_thermometer_internal=$i
i='' i_weather_thermometer=$i
i='' i_weather_tornado=$i
i='' i_weather_direction_up_right=$i
i='' i_weather_direction_up=$i
i='' i_weather_wind_west=$i
i='' i_weather_wind_south_west=$i
i='' i_weather_wind_south_east=$i
i='' i_weather_wind_south=$i
i='' i_weather_wind_north_west=$i
i='' i_weather_wind_north_east=$i
i='' i_weather_wind_north=$i
i='' i_weather_wind_east=$i
i='' i_weather_smoke=$i
i='' i_weather_dust=$i
i='' i_weather_snow_wind=$i
i='' i_weather_day_snow_wind=$i
i='' i_weather_night_snow_wind=$i
i='' i_weather_night_alt_snow_wind=$i
i='' i_weather_day_sleet_storm=$i
i='' i_weather_night_sleet_storm=$i
i='' i_weather_night_alt_sleet_storm=$i
i='' i_weather_day_snow_thunderstorm=$i
i='' i_weather_night_snow_thunderstorm=$i
i='' i_weather_night_alt_snow_thunderstorm=$i
i='' i_weather_solar_eclipse=$i
i='' i_weather_lunar_eclipse=$i
i='' i_weather_meteor=$i
i='' i_weather_hot=$i
i='' i_weather_hurricane=$i
i='' i_weather_smog=$i
i='' i_weather_alien=$i
i='' i_weather_snowflake_cold=$i
i='' i_weather_stars=$i
i='' i_weather_raindrop=$i
i='' i_weather_barometer=$i
i='' i_weather_humidity=$i
i='' i_weather_na=$i
i='' i_weather_flood=$i
i='' i_weather_day_cloudy_high=$i
i='' i_weather_night_alt_cloudy_high=$i
i='' i_weather_night_cloudy_high=$i
i='' i_weather_night_alt_partly_cloudy=$i
i='' i_weather_sandstorm=$i
i='' i_weather_night_partly_cloudy=$i
i='' i_weather_umbrella=$i
i='' i_weather_day_windy=$i
i='' i_weather_night_alt_cloudy=$i
i='' i_weather_direction_up_left=$i
i='' i_weather_direction_down_right=$i
i='' i_weather_time_12=$i
i='' i_weather_time_1=$i
i='' i_weather_time_2=$i
i='' i_weather_time_3=$i
i='' i_weather_time_4=$i
i='' i_weather_time_5=$i
i='' i_weather_time_6=$i
i='' i_weather_time_7=$i
i='' i_weather_time_8=$i
i='' i_weather_time_9=$i
i='' i_weather_time_10=$i
i='' i_weather_time_11=$i
i='' i_weather_moon_new=$i
i='' i_weather_moon_waxing_crescent_1=$i
i='' i_weather_moon_waxing_crescent_2=$i
i='' i_weather_moon_waxing_crescent_3=$i
i='' i_weather_moon_waxing_crescent_4=$i
i='' i_weather_moon_waxing_crescent_5=$i
i='' i_weather_moon_waxing_crescent_6=$i
i='' i_weather_moon_first_quarter=$i
i='' i_weather_moon_waxing_gibbous_1=$i
i='' i_weather_moon_waxing_gibbous_2=$i
i='' i_weather_moon_waxing_gibbous_3=$i
i='' i_weather_moon_waxing_gibbous_4=$i
i='' i_weather_moon_waxing_gibbous_5=$i
i='' i_weather_moon_waxing_gibbous_6=$i
i='' i_weather_moon_full=$i
i='' i_weather_moon_waning_gibbous_1=$i
i='' i_weather_moon_waning_gibbous_2=$i
i='' i_weather_moon_waning_gibbous_3=$i
i='' i_weather_moon_waning_gibbous_4=$i
i='' i_weather_moon_waning_gibbous_5=$i
i='' i_weather_moon_waning_gibbous_6=$i
i='' i_weather_moon_third_quarter=$i
i='' i_weather_moon_waning_crescent_1=$i
i='' i_weather_moon_waning_crescent_2=$i
i='' i_weather_moon_waning_crescent_3=$i
i='' i_weather_moon_waning_crescent_4=$i
i='' i_weather_moon_waning_crescent_5=$i
i='' i_weather_moon_waning_crescent_6=$i
i='' i_weather_wind_direction=$i
i='' i_weather_day_sleet=$i
i='' i_weather_night_sleet=$i
i='' i_weather_night_alt_sleet=$i
i='' i_weather_sleet=$i
i='' i_weather_day_haze=$i
i='' i_weather_wind_beaufort_0=$i
i='' i_weather_wind_beaufort_1=$i
i='' i_weather_wind_beaufort_2=$i
i='' i_weather_wind_beaufort_3=$i
i='' i_weather_wind_beaufort_4=$i
i='' i_weather_wind_beaufort_5=$i
i='' i_weather_wind_beaufort_6=$i
i='' i_weather_wind_beaufort_7=$i
i='' i_weather_wind_beaufort_8=$i
i='' i_weather_wind_beaufort_9=$i
i='' i_weather_wind_beaufort_10=$i
i='' i_weather_wind_beaufort_11=$i
i='' i_weather_wind_beaufort_12=$i
i='' i_weather_day_light_wind=$i
i='' i_weather_tsunami=$i
i='' i_weather_earthquake=$i
i='' i_weather_fire=$i
i='' i_weather_volcano=$i
i='' i_weather_moonrise=$i
i='' i_weather_moonset=$i
i='' i_weather_train=$i
i='' i_weather_small_craft_advisory=$i
i='' i_weather_gale_warning=$i
i='' i_weather_storm_warning=$i
i='' i_weather_hurricane_warning=$i
i='' i_weather_moon_alt_waxing_crescent_1=$i
i='' i_weather_moon_alt_waxing_crescent_2=$i
i='' i_weather_moon_alt_waxing_crescent_3=$i
i='' i_weather_moon_alt_waxing_crescent_4=$i
i='' i_weather_moon_alt_waxing_crescent_5=$i
i='' i_weather_moon_alt_waxing_crescent_6=$i
i='' i_weather_moon_alt_first_quarter=$i
i='' i_weather_moon_alt_waxing_gibbous_1=$i
i='' i_weather_moon_alt_waxing_gibbous_2=$i
i='' i_weather_moon_alt_waxing_gibbous_3=$i
i='' i_weather_moon_alt_waxing_gibbous_4=$i
i='' i_weather_moon_alt_waxing_gibbous_5=$i
i='' i_weather_moon_alt_waxing_gibbous_6=$i
i='' i_weather_moon_alt_full=$i
i='' i_weather_moon_alt_waning_gibbous_1=$i
i='' i_weather_moon_alt_waning_gibbous_2=$i
i='' i_weather_moon_alt_waning_gibbous_3=$i
i='' i_weather_moon_alt_waning_gibbous_4=$i
i='' i_weather_moon_alt_waning_gibbous_5=$i
i='' i_weather_moon_alt_waning_gibbous_6=$i
i='' i_weather_moon_alt_third_quarter=$i
i='' i_weather_moon_alt_waning_crescent_1=$i
i='' i_weather_moon_alt_waning_crescent_2=$i
i='' i_weather_moon_alt_waning_crescent_3=$i
i='' i_weather_moon_alt_waning_crescent_4=$i
i='' i_weather_moon_alt_waning_crescent_5=$i
i='' i_weather_moon_alt_waning_crescent_6=$i
i='' i_weather_moon_alt_new=$i

View file

@ -1,89 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 744.09448819 1052.3622047"
id="svg2"
version="1.1"
inkscape:version="0.91 r13725"
sodipodi:docname="inkscape-template-font-preview.svg">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="9.9999957"
inkscape:cy="462.85714"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1861"
inkscape:window-height="1056"
inkscape:window-x="59"
inkscape:window-y="24"
inkscape:window-maximized="1" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;text-decoration: underline;text-decoration-line: underline;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="62.857143"
y="100.93363"
id="text4136"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4138"
x="62.857143"
y="100.93363">Font Name</tspan></text>
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
x="65.419403"
y="140.93362"
id="text4140"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan4142"
x="65.419403"
y="140.93362"
style="font-size:17.5px">abcdefghijklmnopqrstuvwxyz</tspan><tspan
sodipodi:role="line"
x="65.419403"
y="162.80862"
id="tspan4144"
style="font-size:17.5px">ABCDEFGHIJKLMNOPQRSTUVWXYZ </tspan><tspan
sodipodi:role="line"
x="65.419403"
y="184.68362"
id="tspan4148"
style="font-size:17.5px">oO08 iIlL1 {} [] g9qCGQ ~-+=&gt;</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -1,57 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
id="svg2"
viewBox="0 0 744.09448819 1052.3622047"
height="297mm"
width="210mm">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1">
<text
id="text4136"
y="100.93363"
x="62.857143"
style="font-style:normal;font-weight:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;text-decoration: underline;text-decoration-line: underline;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
y="100.93363"
x="62.857143"
id="tspan4138">Font Name</tspan></text>
<text
id="text4140"
y="140.93362"
x="65.419403"
style="font-style:normal;font-weight:normal;font-size:27.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
xml:space="preserve"><tspan
style="font-size:17.5px"
y="140.93362"
x="65.419403"
id="tspan4142">abcdefghijklmnopqrstuvwxyz</tspan><tspan
style="font-size:17.5px"
id="tspan4144"
y="162.80862"
x="65.419403">ABCDEFGHIJKLMNOPQRSTUVWXYZ </tspan><tspan
style="font-size:17.5px"
id="tspan4148"
y="184.68362"
x="65.419403">oO08 iIlL1 {} [] g9qCGQ ~-+=&gt;</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2 KiB

View file

@ -1,24 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# calls the necessary scripts in the necessary order to prepare for a release
#set -x
LINE_PREFIX="# [Nerd Fonts] "
if [ ! $# -eq 1 ]
then
echo "$LINE_PREFIX No release version given, must give semver release versionin format: #.#.#, e.g. 1.1.0"
fi
release=$1
./version-bump.sh "$release"
./standardize-and-complete-readmes.sh
./gotta-patch-em-all-font-patcher!.sh
./generate-fontconfig.sh
./generate-casks.sh
./archive-fonts.sh
#./upload-archives.sh # better done as a separate step
exit

View file

@ -1,160 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.1.0
# Iterates over all patched fonts directories
# converts all non markdown readmes to markdown (e.g., txt, rst) using pandoc
# adds information on additional-variations and complete font variations
infofilename="font-info.md"
unpatched_parent_dir="src/unpatched-fonts"
patched_parent_dir="patched-fonts"
LINE_PREFIX="# [Nerd Fonts] "
cd ../../src/unpatched-fonts/ || {
echo >&2 "$LINE_PREFIX Could not find source fonts directory"
exit 1
}
function appendRfnInfo {
local config_rfn=$1; shift
local config_rfn_substitue=$1; shift
local working_dir=$1; shift
local to=$1; shift
if [ "$config_rfn" ] && [ "$config_rfn_substitue" ]
then
# add to the file
{
printf "\\n## Why \`%s\` and not \`%s\`?\\n" "$config_rfn_substitue" "$config_rfn"
cat "$working_dir/../../src/readme-rfn-addendum.md"
} >> "$to"
fi
}
function clearDestination {
local to_dir=$1; shift
local to=$1; shift
[[ -d "$to_dir" ]] || mkdir -p "$to_dir"
# clear output file (needed for multiple runs or updates):
true > "$to" 2> /dev/null
}
if [ $# -eq 1 ]; then
like_pattern="./$1"
# allows one to limit to specific font.
# e.g. with ProFont, DejaVuSansMon, Hasklig, Hack, Gohu, FiraCode, Hermit, etc.
echo "$LINE_PREFIX Parameter given, limiting find command of directories to pattern '$like_pattern' given"
else
like_pattern="."
echo "$LINE_PREFIX No parameter pattern given, generating standardized readmes for all fonts in all font directories"
fi
find "$like_pattern" -type d |
while read -r filename
do
if [[ "$filename" == "." ]];
then
echo "$LINE_PREFIX Skipping directory '.'"
continue
fi
dirname=$(dirname "$filename")
searchdir=$filename
base_directory=$(echo "$filename" | cut -d "/" -f2)
# limit looking for the readme files in the parent dir not the child dirs:
if [[ $dirname != "." ]];
then
searchdir=$dirname
else
# source the font config file if exists:
if [ -f "$searchdir/config.cfg" ]
then
# shellcheck source=/dev/null
source "$searchdir/config.cfg"
else
# reset the variables
unset config_rfn
unset config_rfn_substitue
fi
fi
mapfile -t RST < <(find "$searchdir" -type f -iname 'readme.rst')
mapfile -t TXT < <(find "$searchdir" -type f -iname 'readme.txt')
mapfile -t MD < <(find "$searchdir" -type f -iname 'readme.md')
outputdir=$PWD/../../patched-fonts/$filename/
echo "$LINE_PREFIX Generating readme for: $filename"
[[ -d "$outputdir" ]] || mkdir -p "$outputdir"
if [ "${RST[0]}" ];
then
for i in "${RST[@]}"
do
echo "$LINE_PREFIX Found RST"
from="$PWD/$i"
to_dir="${PWD/$unpatched_parent_dir/$patched_parent_dir}/$filename"
to="${to_dir}/$infofilename"
clearDestination "$to_dir" "$to"
pandoc "$from" --from=rst --to=markdown --output="$to"
appendRfnInfo "$config_rfn" "$config_rfn_substitue" "$PWD" "$to"
cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to"
done
elif [ "${TXT[0]}" ];
then
for i in "${TXT[@]}"
do
echo "$LINE_PREFIX Found TXT"
from="$PWD/$i"
to_dir="${PWD/$unpatched_parent_dir/$patched_parent_dir}/$filename"
to="${to_dir}/$infofilename"
clearDestination "$to_dir" "$to"
cp "$from" "$to"
appendRfnInfo "$config_rfn" "$config_rfn_substitue" "$PWD" "$to"
cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to"
done
elif [ "${MD[0]}" ];
then
for i in "${MD[@]}"
do
echo "$LINE_PREFIX Found MD"
from="$PWD/$i"
to_dir="${PWD/$unpatched_parent_dir/$patched_parent_dir}/$filename"
to="${to_dir}/$infofilename"
clearDestination "$to_dir" "$to"
cp "$from" "$to"
appendRfnInfo "$config_rfn" "$config_rfn_substitue" "$PWD" "$to"
cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to"
done
else
echo "$LINE_PREFIX Did not find any readme files (RST,TXT,MD) generating just title of Font"
to_dir="${PWD/$unpatched_parent_dir/$patched_parent_dir}/$filename"
to="${to_dir}/$infofilename"
clearDestination "$to_dir" "$to"
{
printf "# %s\\n\\n" "$base_directory"
} >> "$to"
appendRfnInfo "$config_rfn" "$config_rfn_substitue" "$PWD" "$to"
cat "$PWD/../../src/readme-per-directory-addendum.md" >> "$to"
fi
done

View file

@ -1,165 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
# Given an array of decimal numbers print all unicode codepoint.
function print-decimal-unicode-range() {
local originalSequence=("$@")
local counter=0
# Use alternating colors to see which symbols extend out of the bounding
# box.
local bgColorBorder='\033[48;5;8m'
local bgColorCode='\033[48;5;246m'
local alternateBgColorCode='\033[48;5;240m'
local bgColorChar='\033[48;5;66m'
local alternateBgColorChar='\033[48;5;60m'
local underline='\033[4m'
local currentColorCode="${bgColorCode}"
local currentColorChar="${bgColorChar}"
local reset_color='\033[0m'
local allChars=""
local allCodes=""
local wrapAt=5
local topLine="${bgColorBorder}╔══════╦══════╦══════╦══════╦══════╗${reset_color}"
local bottomLine="${bgColorBorder}╚══════╩══════╩══════╩══════╩══════╝${reset_color}"
local line="${bgColorBorder}╠══════╬══════╬══════╬══════╬══════╣${reset_color}"
local bar="${bgColorBorder}${reset_color}"
local originalSequenceLength=${#originalSequence[@]}
local leftoverSpaces=$((wrapAt - (originalSequenceLength % wrapAt)))
# add fillers to array to maintain table:
if [[ "$leftoverSpaces" < "$wrapAt" ]]; then
# shellcheck disable=SC2034
# needs rework without 'i' var?
for i in $(seq 1 $leftoverSpaces); do
originalSequence+=(0)
done
fi
local sequenceLength=${#originalSequence[@]}
printf "%b\\n" "$topLine"
for decimalCode in "${originalSequence[@]}"; do
local hexCode
hexCode=$(printf '%x' "${decimalCode}")
local code="${hexCode}"
local char="\\u${hexCode}"
# fill in placeholder cells properly formatted:
if [ "${char}" = "\\u0" ]; then
char=" "
code=" "
fi
allCodes+="${currentColorCode} ${underline}${code}${reset_color}${currentColorCode} ${reset_color}$bar"
allChars+="${currentColorChar} ${char} ${reset_color}$bar"
counter=$((counter + 1))
count=$(( (count + 1) % wrapAt))
if [[ $count -eq 0 ]]; then
if [[ "${currentColorCode}" = "${alternateBgColorCode}" ]]; then
currentColorCode="${bgColorCode}"
currentColorChar="${bgColorChar}"
else
currentColorCode="${alternateBgColorCode}"
currentColorChar="${alternateBgColorChar}"
fi
printf "%b%b%b" "$bar" "$allCodes" "$reset_color"
printf "\\n"
printf "%b%b%b" "$bar" "$allChars" "$reset_color"
printf "\\n"
if [ "$counter" != "$sequenceLength" ]; then
printf "%b\\n" "$line"
fi
allCodes=""
allChars=""
fi
done
printf "%b\\n" "$bottomLine"
}
function print-unicode-ranges() {
echo ''
local arr=("$@")
local len=$#
local combinedRanges=()
for ((j=0; j<len; j+=2)); do
local start="${arr[$j]}"
local end="${arr[(($j+1))]}"
local startDecimal=$((16#$start))
local endDecimal=$((16#$end))
mapfile -t combinedRanges < <(seq "$startDecimal" "$endDecimal")
done
print-decimal-unicode-range "${combinedRanges[@]}"
}
function test-fonts() {
echo "Nerd Fonts - Pomicons"
print-unicode-ranges e000 e00d
echo; echo
echo "Nerd Fonts - Powerline"
print-unicode-ranges e0a0 e0a2 e0b0 e0b3
echo; echo
echo "Nerd Fonts - Powerline Extra"
print-unicode-ranges e0a3 e0a3 e0b4 e0c8 e0cc e0d2 e0d4 e0d4
echo; echo
echo "Nerd Fonts - Symbols original"
print-unicode-ranges e5fa e62b
echo; echo
echo "Nerd Fonts - Devicons"
print-unicode-ranges e700 e7c5
echo; echo
echo "Nerd Fonts - Font awesome"
print-unicode-ranges f000 f2e0
echo; echo
echo "Nerd Fonts - Font awesome extension"
print-unicode-ranges e200 e2a9
echo; echo
echo "Nerd Fonts - Octicons"
print-unicode-ranges f400 f4a8 2665 2665 26A1 26A1 f27c f27c
echo; echo
echo "Nerd Fonts - Font Linux"
print-unicode-ranges f300 f313
echo; echo
echo "Nerd Fonts - Font Power Symbols"
print-unicode-ranges 23fb 23fe 2b58 2b58
echo; echo
echo "Nerd Fonts - Material Design Icons"
print-unicode-ranges f500 fd46
echo; echo
echo "Nerd Fonts - Weather Icons"
print-unicode-ranges e300 e3eb
echo; echo
echo "Nerd Fonts - All"
print-unicode-ranges e000 e00d e0a0 e0a2 e0b0 e0b3 e0a3 e0a3 e0b4 e0c8 e0cc e0d2 e0d4 e0d4 e5fa e62b e700 e7c5 f000 f2e0 e200 e2a9 f400 f4a8 2665 2665 26A1 26A1 f27c f27c f300 f313 23fb 23fe 2b58 2b58 f500 fd46 e300 e3eb
echo; echo
}
test-fonts

View file

@ -1,50 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
text1='Testing'
text2='Nerd Fonts'
leftSymbolsCodes=('E0B0' 'E0B4' 'E0B8' 'E0BC' 'E0C0' 'E0C4' 'E0C6' 'E0C8' 'E0CC' 'E0CE' 'E0CF' 'E0CF' 'E0D1' 'E0D2')
rightSymbolsCodes=('E0B2' 'E0B6' 'E0BA' 'E0BE' 'E0C2' 'E0C5' 'E0C7' 'E0C8' 'E0CC' 'E0CE' 'E0CF' 'E0CF' 'E0D1' 'E0D4')
# shellcheck disable=SC2034
# don't check unused vars we might want to use them later on
colorReset='\033[0m'
colorBgWhite='\033[107m'
# shellcheck disable=SC2034
# don't check unused vars we might want to use them later on
colorBgLightBlue='\033[104m' # light blue, bright green is 102
colorBgBlack='\033[40m'
colorBg1='\033[100m'
colorBg2=$colorBgBlack
# shellcheck disable=SC2034
# don't check unused vars we might want to use them later on
colorFgLightBlue='\033[94m'
colorFgLightGray='\033[90m'
# shellcheck disable=SC2034
# don't check unused vars we might want to use them later on
colorFgLightYellow='\033[93m'
colorFgBlack='\033[30m'
colorFg1=$colorFgBlack
colorFg2=$colorFgLightGray
colorBgDefault='\033[49m'
echo -e "$colorReset Nerd Fonts :: Testing Powerline Symbol size and alignment"
for i in "${!leftSymbolsCodes[@]}"; do
symbol="\\u${leftSymbolsCodes[$i]}"
symbol2="\\u${rightSymbolsCodes[$i]}"
code="${leftSymbolsCodes[$i]}"
code2="${rightSymbolsCodes[$i]}"
if [ "$code" = "$code2" ]; then
symbol2="\\u${rightSymbolsCodes[0]}"
code2='None'
fi
echo -e "$colorBg1$colorFg1$text1 $code $colorFg2$colorBg2$symbol $text2 $colorFg1$colorBgDefault$symbol -- $colorFg1$colorBgDefault$symbol2$colorFg2$colorBg2 $text2 $symbol2$colorBg1$colorFg1 $code2 $colorReset$colorBgWhite\\n$colorReset"
done
printf "\\n"

View file

@ -1,20 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.0
clear
echo "Click to start"
# Window geometry
# source: https://www.maketecheasier.com/record-screen-as-animated-gif-ubuntu/
XWININFO=$(xwininfo)
read -r X < <(awk -F: '/Absolute upper-left X/{print $2}' <<< "$XWININFO")
read -r Y < <(awk -F: '/Absolute upper-left Y/{print $2}' <<< "$XWININFO")
read -r W < <(awk -F: '/Width/{print $2}' <<< "$XWININFO")
read -r H < <(awk -F: '/Height/{print $2}' <<< "$XWININFO")
byzanz-record -c --exec=./test-fonts.sh --x="$X" --y="$Y" --width="$W" --height="$H" "rec3.gif"
convert -coalesce "rec3.gif" "results/nerd-fonts.png"
convert -append $"(ls -v results/*.png)" ./test-combined.png

View file

@ -1,54 +0,0 @@
import fileinput
import string
import re
file = open("../../CONTRIBUTORS.md", "r")
contributorContents = file.read()
file.close()
# print(contributorContents)
file = open("/home/ryan/projects/nerd-fonts-gh-pages/_posts/2017-01-05-all-contributors.md", "r")
webContributorContents = file.read()
file.close()
# print(webContributorContents)
# search and replace
starting_text = '<!-- UPDATE START -->'
ending_text = '<!-- UPDATE END -->'
to_replace = webContributorContents[webContributorContents.find(starting_text)+len(starting_text):webContributorContents.rfind(ending_text)]
print('re replace')
print('-------------------------------------------------')
print(to_replace)
# Remove markdown that won't work as-is in the jekyll page:
transformedContributorContents = re.sub('[![All Contributors](.*)\(#contributors\)\n', '', contributorContents)
transformedContributorContents = re.sub('Thanks goes to these wonderful people(.*):\n', '', transformedContributorContents)
transformedContributorContents = string.replace(transformedContributorContents, '## Contributors\n\n', '')
transformedContributorContents = string.replace(transformedContributorContents, 'This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!', '')
# Fix the formatting for the grid table:
transformedContributorContents = string.replace(transformedContributorContents, ' [<img src=', '\n<div markdown="1">\n[<img class="lzy_img" data-src=')
transformedContributorContents = string.replace(transformedContributorContents, '") |', '")\n</div>')
transformedContributorContents = string.replace(transformedContributorContents, '| :---: | :---: | :---: | :---: | :---: | :---: | :---: |', '')
transformedContributorContents = string.replace(transformedContributorContents, '<!-- ALL-CONTRIBUTORS-LIST:END -->', '')
transformedContributorContents = string.replace(transformedContributorContents, '|\n', '') # @TODO fixme
print('transformed contr contents')
print('-------------------------------------------------')
print(transformedContributorContents)
webContributorContents = string.replace(webContributorContents, to_replace, transformedContributorContents)
print('final out')
print('-------------------------------------------------')
print(webContributorContents)
# write the updated all contributors to the website
file = open("/home/ryan/projects/nerd-fonts-gh-pages/_posts/2017-01-05-all-contributors.md", "w")
file.write(webContributorContents)

View file

@ -1,88 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.2.0
# Iterates over all archives and uploads to given release
# uncomment to debug:
#set -x
LINE_PREFIX="# [Nerd Fonts] "
cd ../../archives/ || {
echo >&2 "$LINE_PREFIX Could not find archives directory"
exit 1
}
# We don't need to use a separate access token for accessing Github API when we
# are in a Github action, can use the auto provided `GITHUB_TOKEN`
# see: https://docs.github.com/en/actions/security-guides/automatic-token-authentication
TOKEN=$GITHUB_TOKEN
OWNER="ryanoasis"
REPO="nerd-fonts"
RELEASE_TAG=""
if [ -z "$1" ]
then
# before we used to check for tag param and set release URL to releases/latest
# but to simplify things let's just fail and always require a proper release/tag
echo "$LINE_PREFIX No Tag Release was given"
exit 1
else
echo "$LINE_PREFIX Tag/Release was $1"
RELEASE_TAG="$1"
fi
if [ -z "$2" ]
then
search_pattern="*.zip"
echo "$LINE_PREFIX No limiting pattern given, will search entire folder"
else
pattern=$2
search_pattern="*$2*.zip"
echo "$LINE_PREFIX Limiting upload archive to pattern '$pattern'"
fi
CURL_DATA="\"tag_name\":\"${RELEASE_TAG}\""
if [ "$PRERELEASE" == "true" ]
then
CURL_DATA+=", \"prerelease\": true"
fi
RELEASE_URL="https://api.github.com/repos/${OWNER}/${REPO}/releases/tags/${RELEASE_TAG}"
#if [ "$LAST_RELEASE_ID" = null]
# then
# @TODO add error checking around creating new release if release/tag already exists
echo "$LINE_PREFIX Creating new release/tag of ${RELEASE_TAG}"
curl \
-H "Authorization:token $TOKEN" \
-H "Accept: application/vnd.github.v3+json" \
https://api.github.com/repos/$OWNER/$REPO/releases \
-d "{$CURL_DATA}"
#else
# echo "$LINE_PREFIX A release did exist and the most recent release id was '$RELEASE'"
#fi
LAST_RELEASE_ID=$(curl -# -XGET -H "Authorization:token $TOKEN" -H 'Content-Type: application/json' "$RELEASE_URL" | jq -r '.id')
echo "$LINE_PREFIX The last release id was $LAST_RELEASE_ID"
#find ./Hack -maxdepth 0 -type d | # uncomment to test 1 font
find ./ -name "$search_pattern" | # uncomment to test all font
while read -r filename
do
basename=$(basename "$filename")
printf "$LINE_PREFIX Uploading %s \n" "$basename"
curl \
-# -XPOST \
-H "Authorization:token $TOKEN" \
-H "Content-Type:application/octet-stream" \
--data-binary @"$basename" https://uploads.github.com/repos/"$OWNER"/"$REPO"/releases/"$LAST_RELEASE_ID"/assets?name="$basename"
#exit # uncomment to test only 1 zip
done

View file

@ -1,30 +0,0 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 2.1.0
# Script Version: 1.0.1
# bump version number for release in scripts (bash and python)
# does not do semver format checking
# this obviously is not perfect but works good enough for now (YAGNI)
# todo take some ideas from: https://github.com/fsaintjacques/semver-tool
#set -x
LINE_PREFIX="# [Nerd Fonts] "
if [ ! $# -eq 1 ]
then
echo "$LINE_PREFIX No release version given, must give semver release version in format: #.#.#, e.g. 1.1.0"
fi
release=$1
echo "$LINE_PREFIX Bump version to $release"
sed -i "s|[0-9]\\.[0-9]\\.[0-9]|$release|g" ../../font-patcher
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/**/*.sh
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/**/*.py
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/*.sh
sed -i "s|\\# Nerd Fonts Version: [0-9]\\.[0-9]\\.[0-9]|\\# Nerd Fonts Version: $release|g" ../../bin/scripts/*.py
sed -i "s|\\# version: [0-9]\\.[0-9]\\.[0-9]|\\# version: $release|g" ../../bin/scripts/*.sh
sed -i "s|version=\"[0-9]\\.[0-9]\\.[0-9]\"|version=\"$release\"|g" ../../bin/scripts/*.sh
exit

View file

@ -1,12 +0,0 @@
[[source]]
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"
[packages]
pyyaml = ">=4.2b1"
[dev-packages]
[requires]
python_version = "3.6"

View file

@ -1,48 +0,0 @@
{
"_meta": {
"hash": {
"sha256": "bc726b6661f47090a5efbcd8cd7dee58887046e45e399205657b7f1e2c1bb35e"
},
"pipfile-spec": 6,
"requires": {
"python_version": "3.6"
},
"sources": [
{
"name": "pypi",
"url": "https://pypi.python.org/simple",
"verify_ssl": true
}
]
},
"default": {
"pyyaml": {
"hashes": [
"sha256:02c78d77281d8f8d07a255e57abdbf43b02257f59f50cc6b636937d68efa5dd0",
"sha256:0dc9f2eb2e3c97640928dec63fd8dc1dd91e6b6ed236bd5ac00332b99b5c2ff9",
"sha256:124fd7c7bc1e95b1eafc60825f2daf67c73ce7b33f1194731240d24b0d1bf628",
"sha256:26fcb33776857f4072601502d93e1a619f166c9c00befb52826e7b774efaa9db",
"sha256:31ba07c54ef4a897758563e3a0fcc60077698df10180abe4b8165d9895c00ebf",
"sha256:3c49e39ac034fd64fd576d63bb4db53cda89b362768a67f07749d55f128ac18a",
"sha256:52bf0930903818e600ae6c2901f748bc4869c0c406056f679ab9614e5d21a166",
"sha256:5a3f345acff76cad4aa9cb171ee76c590f37394186325d53d1aa25318b0d4a09",
"sha256:5e7ac4e0e79a53451dc2814f6876c2fa6f71452de1498bbe29c0b54b69a986f4",
"sha256:7242790ab6c20316b8e7bb545be48d7ed36e26bbe279fd56f2c4a12510e60b4b",
"sha256:737bd70e454a284d456aa1fa71a0b429dd527bcbf52c5c33f7c8eee81ac16b89",
"sha256:8635d53223b1f561b081ff4adecb828fd484b8efffe542edcfdff471997f7c39",
"sha256:8b818b6c5a920cbe4203b5a6b14256f0e5244338244560da89b7b0f1313ea4b6",
"sha256:8bf38641b4713d77da19e91f8b5296b832e4db87338d6aeffe422d42f1ca896d",
"sha256:a36a48a51e5471513a5aea920cdad84cbd56d70a5057cca3499a637496ea379c",
"sha256:b2243dd033fd02c01212ad5c601dafb44fbb293065f430b0d3dbf03f3254d615",
"sha256:cc547d3ead3754712223abb7b403f0a184e4c3eae18c9bb7fd15adef1597cc4b",
"sha256:cc552b6434b90d9dbed6a4f13339625dc466fd82597119897e9489c953acbc22",
"sha256:f3790156c606299ff499ec44db422f66f05a7363b39eb9d5b064f17bd7d7c47b",
"sha256:f7a21e3d99aa3095ef0553e7ceba36fb693998fbb1226f1392ce33681047465f",
"sha256:fdc6b2cb4b19e431994f25a9160695cc59a4e861710cc6fc97161c5e845fc579"
],
"index": "pypi",
"version": "==5.4"
}
},
"develop": {}
}

View file

@ -1,28 +0,0 @@
# Chocolatey packages for nerd-fonts
Script to generate chocolatey packages for nerd-fonts.
## Requirements
- [pipenv](https://github.com/pypa/pipenv/)
- [PyYAML](https://pyyaml.org/)
- [chocolatey](https://chocolatey.org/)
## Setup
- Run `pipenv install` to setup the virtual environment.
- Ensure that `choco` binary is in the `PATH`.
## Usage
Run the `generate_packages.py` which reads `fonts.yml` file and generates the chocolatey packages.
### fonts.yml
The `YAML` file describes the fonts to be packaged.
- `version`: The version of nerd-fonts to be downloaded.
- `fonts.name`: The name of the nerd-font as per the `github release assets`.
- `fonts.sha256`: The `SHA256` hash of the zip file.
- `fonts.installed_fonts`: The list of fonts in the zip file.

View file

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id></id>
<version></version>
<packageSourceUrl>https://github.com/ryanoasis/nerd-fonts</packageSourceUrl>
<!-- owners is a poor name for maintainers of the package. It sticks around by this name for compatibility reasons. It basically means you. -->
<owners>ryanoasis</owners>
<!-- ============================== -->
<!-- == SOFTWARE SPECIFIC SECTION == -->
<!-- This section is about the software itself -->
<title></title>
<authors>Ryan L McIntyre</authors>
<!-- projectUrl is required for the community feed -->
<projectUrl>https://nerdfonts.com/</projectUrl>
<iconUrl>https://imgur.com/pEDFEje</iconUrl>
<!-- <copyright>Year Software Vendor</copyright> -->
<!-- If there is a license Url available, it is required for the community feed -->
<licenseUrl>https://raw.githubusercontent.com/ryanoasis/nerd-fonts/master/LICENSE</licenseUrl>
<requireLicenseAcceptance>true</requireLicenseAcceptance>
<projectSourceUrl>https://github.com/ryanoasis/nerd-fonts</projectSourceUrl>
<docsUrl>https://github.com/ryanoasis/nerd-fonts/wiki</docsUrl>
<!--<mailingListUrl></mailingListUrl>-->
<bugTrackerUrl>https://github.com/ryanoasis/nerd-fonts/issues</bugTrackerUrl>
<tags>hasklig hasklug nerd-fonts fonts ligatures coding-fonts</tags>
<summary>
Iconic font aggregator, collection, and patcher. 40+ patched fonts, over 3,600
glyph/icons, includes popular collections such as Font Awesome &amp; fonts such as Hack.
</summary>
<description>
Nerd Fonts takes popular programming fonts and adds a bunch of Glyphs.
There is also a font patcher available if your desired font isn't already patched.
For more high level information see the wiki.
</description>
<releaseNotes>
# New Features
- Added new fonts:
- Noto (all variations) (#213)
- Overpass Mono (fixes #177)
- BigBlue Terminal (fixes #170)
- Dyslexic (fixes #217)
- Iosevka Term variant (no ligatures) (fixes #198)
- FiraCode TTF variant (fixes #244)
- SourceCodePro italics variant (fixes #236)
- Added new glyph sets:
- Material Design Icons
- Weather
- Added new glyphs to core:
- Elm (fixes #172)
- Elixir (fixes #228)
- Electron (fixes #237)
- Added new translations:
- Added Traditional Chinese of readme (partially fixes #118) (PR #222) (@MindyTai)
- Added French readme (partially fixes #118) (PR #251) (@pgrimaud)
- Added ability to remove ligatures via the `--removeligatures` option in font-patcher
- Added `--configfile` option to font-patcher
# Updates / Improvements
- Updated Hack font to latest version (v3.003) (fixes #216) (with help from @chrissimpkins)
- Updated Iosevka to the latest version (v1.14.0) (fixes #229)
- Updated Fantasque Sans Mono to the latest version (v1.7.2) (fixes #240)
- Updated MPlus version from 1.018 to 1.063
- Updated documentation for urxvt wcwidth implementations (fixes #155)
- Updated logos and Sankey diagram
# Breaking Updates / Improvements / Changes
- Updated Font Logos (formerly Font Linux) to latest version (fixes #157)
# Fixes
- Fixed incorrect exitcode returned from installer (fixes #218) (PR #230 @Phuurl)
- Fixed 3270 font not being valid/installable on Windows (fixes #12, #196)
- Fixed weather variables script typo (PR #242 @snown)
- Fixed Monospaced fonts having ligatures by default (fixed Meslo Mono having ligatures)
(fixes #186)
- Fixed Hasklig ExtraLight &amp; Light variants (fixes #231)
</releaseNotes>
</metadata>
<files>
<!-- this section controls what actually gets packaged into the Chocolatey package -->
<file src="tools\**" target="tools" />
<!--Building from Linux? You may need this instead: <file src="tools/**" target="tools" />-->
</files>
</package>

View file

@ -1,111 +0,0 @@
version: 2.0.0
fonts:
- name: FiraCode
sha256: 09894D24BF3D61493DBA052187A9200497135A4B885CB837BCB637AD2E62070F
installed_fonts:
- Fura Code Bold Nerd Font Complete Mono Windows Compatible.otf
- Fura Code Bold Nerd Font Complete Mono Windows Compatible.ttf
- Fura Code Bold Nerd Font Complete Mono.otf
- Fura Code Bold Nerd Font Complete Mono.ttf
- Fura Code Bold Nerd Font Complete Windows Compatible.otf
- Fura Code Bold Nerd Font Complete Windows Compatible.ttf
- Fura Code Bold Nerd Font Complete.otf
- Fura Code Bold Nerd Font Complete.ttf
- Fura Code Light Nerd Font Complete Mono Windows Compatible.otf
- Fura Code Light Nerd Font Complete Mono Windows Compatible.ttf
- Fura Code Light Nerd Font Complete Mono.otf
- Fura Code Light Nerd Font Complete Mono.ttf
- Fura Code Light Nerd Font Complete Windows Compatible.otf
- Fura Code Light Nerd Font Complete Windows Compatible.ttf
- Fura Code Light Nerd Font Complete.otf
- Fura Code Light Nerd Font Complete.ttf
- Fura Code Medium Nerd Font Complete Mono Windows Compatible.otf
- Fura Code Medium Nerd Font Complete Mono Windows Compatible.ttf
- Fura Code Medium Nerd Font Complete Mono.otf
- Fura Code Medium Nerd Font Complete Mono.ttf
- Fura Code Medium Nerd Font Complete Windows Compatible.otf
- Fura Code Medium Nerd Font Complete Windows Compatible.ttf
- Fura Code Medium Nerd Font Complete.otf
- Fura Code Medium Nerd Font Complete.ttf
- Fura Code Regular Nerd Font Complete Mono Windows Compatible.otf
- Fura Code Regular Nerd Font Complete Mono Windows Compatible.ttf
- Fura Code Regular Nerd Font Complete Mono.otf
- Fura Code Regular Nerd Font Complete Mono.ttf
- Fura Code Regular Nerd Font Complete Windows Compatible.otf
- Fura Code Regular Nerd Font Complete Windows Compatible.ttf
- Fura Code Regular Nerd Font Complete.otf
- Fura Code Regular Nerd Font Complete.ttf
- Fura Code Retina Nerd Font Complete Mono Windows Compatible.otf
- Fura Code Retina Nerd Font Complete Mono Windows Compatible.ttf
- Fura Code Retina Nerd Font Complete Mono.otf
- Fura Code Retina Nerd Font Complete Mono.ttf
- Fura Code Retina Nerd Font Complete Windows Compatible.otf
- Fura Code Retina Nerd Font Complete Windows Compatible.ttf
- Fura Code Retina Nerd Font Complete.otf
- Fura Code Retina Nerd Font Complete.ttf
- name: Hasklig
sha256: 1FD1D88F2EC48424654888E4C7AFAD7A423E4229F40B09BE323DBF4A04600DBD
installed_fonts:
- Hasklug Black Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Black Italic Nerd Font Complete Mono.otf
- Hasklug Black Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Black Italic Nerd Font Complete.otf
- Hasklug Black Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Black Nerd Font Complete Mono.otf
- Hasklug Black Nerd Font Complete Windows Compatible.otf
- Hasklug Black Nerd Font Complete.otf
- Hasklug Bold Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Bold Italic Nerd Font Complete Mono.otf
- Hasklug Bold Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Bold Italic Nerd Font Complete.otf
- Hasklug Bold Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Bold Nerd Font Complete Mono.otf
- Hasklug Bold Nerd Font Complete Windows Compatible.otf
- Hasklug Bold Nerd Font Complete.otf
- Hasklug ExtraLight Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug ExtraLight Italic Nerd Font Complete Mono.otf
- Hasklug ExtraLight Italic Nerd Font Complete Windows Compatible.otf
- Hasklug ExtraLight Italic Nerd Font Complete.otf
- Hasklug ExtraLight Nerd Font Complete Mono Windows Compatible.otf
- Hasklug ExtraLight Nerd Font Complete Mono.otf
- Hasklug ExtraLight Nerd Font Complete Windows Compatible.otf
- Hasklug ExtraLight Nerd Font Complete.otf
- Hasklug Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Italic Nerd Font Complete Mono.otf
- Hasklug Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Italic Nerd Font Complete.otf
- Hasklug Light Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Light Italic Nerd Font Complete Mono.otf
- Hasklug Light Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Light Italic Nerd Font Complete.otf
- Hasklug Light Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Light Nerd Font Complete Mono.otf
- Hasklug Light Nerd Font Complete Windows Compatible.otf
- Hasklug Light Nerd Font Complete.otf
- Hasklug Medium Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Medium Italic Nerd Font Complete Mono.otf
- Hasklug Medium Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Medium Italic Nerd Font Complete.otf
- Hasklug Medium Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Medium Nerd Font Complete Mono.otf
- Hasklug Medium Nerd Font Complete Windows Compatible.otf
- Hasklug Medium Nerd Font Complete.otf
- Hasklug Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Nerd Font Complete Mono.otf
- Hasklug Nerd Font Complete Windows Compatible.otf
- Hasklug Nerd Font Complete.otf
- Hasklug Semibold Italic Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Semibold Italic Nerd Font Complete Mono.otf
- Hasklug Semibold Italic Nerd Font Complete Windows Compatible.otf
- Hasklug Semibold Italic Nerd Font Complete.otf
- Hasklug Semibold Nerd Font Complete Mono Windows Compatible.otf
- Hasklug Semibold Nerd Font Complete Mono.otf
- Hasklug Semibold Nerd Font Complete Windows Compatible.otf
- Hasklug Semibold Nerd Font Complete.otf
- name: Inconsolata
sha256: 7EF196CE9FA7B4BC3F9E0290A0DE0FBEFEE123A705BA84A1993D6336A92A5164
installed_fonts:
- Inconsolata Nerd Font Complete Mono Windows Compatible.otf
- Inconsolata Nerd Font Complete Mono.otf
- Inconsolata Nerd Font Complete Windows Compatible.otf
- Inconsolata Nerd Font Complete.otf

View file

@ -1,101 +0,0 @@
from __future__ import print_function
import os
import re
import shutil
import subprocess
import sys
import xml.etree.ElementTree as ET
import yaml
XMLNS = {'nuspec': 'http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd'}
def pwd():
""" Current dir of the script. """
return os.path.realpath(os.path.dirname(sys.argv[0]))
def kebab_case(inp):
""" Convert from `CamelCase` to `kebab-case`. """
s1 = re.sub('(.)([A-Z][a-z]+)', r'\1-\2', inp)
return re.sub('([a-z0-9])([A-Z])', r'\1-\2', s1).lower()
def generate_nuspec(font, version):
""" Write the `.nuspec` file. """
font_id = kebab_case(font) + '-nerd-font'
# Parse the tree
tree = ET.parse('base.nuspec')
root = tree.getroot()
# id
id_ = root[0].find('nuspec:id', namespaces=XMLNS)
id_.text = font_id
# version
ver_ = root[0].find('nuspec:version', namespaces=XMLNS)
ver_.text = version
# title
title_ = root[0].find('nuspec:title', namespaces=XMLNS)
title_.text = font + ' Nerd Font'
font_dir = os.path.join(pwd(), font_id)
if not os.path.exists(font_dir):
os.mkdir(font_dir)
with open(os.path.join(font_dir, font_id + '.nuspec'), 'wb') as f:
f.write(ET.tostring(root, encoding='utf8'))
# Copy tools
tools_src_dir = os.path.join(pwd(), 'tools')
tools_dest_dir = os.path.join(font_dir, 'tools')
if os.path.exists(tools_dest_dir):
shutil.rmtree(tools_dest_dir)
shutil.copytree(tools_src_dir, tools_dest_dir)
def generate_choco_scripts(font, version, sha256_hash, installed_fonts):
""" Generates chocolatey install and uninstall scripts """
# Install script
font_id = kebab_case(font)
tools_dir = os.path.join(pwd(), font_id + '-nerd-font', 'tools')
with open(os.path.join(tools_dir, 'chocolateyinstall.ps1'), 'r+') as f:
script = f.read()
script = script.format(
font=font,
version='v%s' % (version),
hash=sha256_hash)
f.seek(0)
f.write(script)
with open(os.path.join(tools_dir, 'chocolateybeforemodify.ps1'), 'r+') as f:
script = f.read()
script = script.format(fonts=','.join('"%s"' % (x) for x in installed_fonts))
f.seek(0)
f.write(script)
def main():
""" Generate chocolatey `.nuspec` files. """
print('Reading config')
with open('fonts.yml') as f:
config = yaml.load(f)
# generate `.nuspec`
for font in config['fonts']:
print('Generating chocolatey package for', font['name'])
generate_nuspec(font['name'], config['version'])
generate_choco_scripts(font['name'], config['version'], font['sha256'],
font['installed_fonts'])
# create choco `.nupkg` package
for dir_ in os.listdir(pwd()):
if os.path.isdir(dir_) and dir_ != 'tools':
subprocess.call
print('Packaging', dir_)
subprocess.call(['choco', 'pack'], cwd=os.path.join(pwd(), dir_))
print('Done')
if __name__ == '__main__':
main()

View file

@ -1,614 +0,0 @@
#########################################################################################
# MICROSOFT LEGAL STATEMENT FOR SAMPLE SCRIPTS/CODE
#########################################################################################
# This Sample Code is provided for the purpose of illustration only and is not
# intended to be used in a production environment.
#
# THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY
# OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
#
# We grant You a nonexclusive, royalty-free right to use and modify the Sample Code
# and to reproduce and distribute the object code form of the Sample Code, provided
# that You agree:
# (i) to not use Our name, logo, or trademarks to market Your software product
# in which the Sample Code is embedded;
# (ii) to include a valid copyright notice on Your software product in which
# the Sample Code is embedded; and
# (iii) to indemnify, hold harmless, and defend Us and Our suppliers from and
# against any claims or lawsuits, including attorneys fees, that arise
# or result from the use or distribution of the Sample Code.
#########################################################################################
#******************************************************************************
# File: Add-Font.ps1
# Date: 08/28/2013
# Version: 1.0.1
#
# Purpose: PowerShell script to install Windows fonts.
#
# Usage: Add-Font -help | -path "<Font file or folder path>"
#
# Copyright (C) 2010 Microsoft Corporation
#
#
# Revisions:
# ----------
# 1.0.0 09/22/2010 Created script.
# 1.0.1 08/28/2013 Fixed help text. Added quotes around paths in messages.
#
#******************************************************************************
#requires -Version 2.0
#*******************************************************************
# Declare Parameters
#*******************************************************************
param(
[string] $path = "",
[switch] $help = $false
)
#*******************************************************************
# Declare Global Variables and Constants
#*******************************************************************
# Define constants
set-variable CSIDL_FONTS 0x14 -option constant
# Create hashtable containing valid font file extensions and text to append to Registry entry name.
$hashFontFileTypes = @{}
$hashFontFileTypes.Add(".fon", "")
$hashFontFileTypes.Add(".fnt", "")
$hashFontFileTypes.Add(".ttf", " (TrueType)")
$hashFontFileTypes.Add(".ttc", " (TrueType)")
$hashFontFileTypes.Add(".otf", " (OpenType)")
# Type 1 fonts require handling multiple resource files.
# Not supported in this script
#$hashFontFileTypes.Add(".mmm", "")
#$hashFontFileTypes.Add(".pbf", "")
#$hashFontFileTypes.Add(".pfm", "")
# Initialize variables
$invocation = (Get-Variable MyInvocation -Scope 0).Value
$scriptPath = Split-Path $Invocation.MyCommand.Path
$fontRegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
#*******************************************************************
# Load C# code
#*******************************************************************
$fontCSharpCode = @'
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
namespace FontResource
{
public class AddRemoveFonts
{
private static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
private static IntPtr HWND_TOP = new IntPtr(0);
private static IntPtr HWND_BOTTOM = new IntPtr(1);
private static IntPtr HWND_TOPMOST = new IntPtr(-1);
private static IntPtr HWND_NOTOPMOST = new IntPtr(-2);
private static IntPtr HWND_MESSAGE = new IntPtr(-3);
[DllImport("gdi32.dll")]
static extern int AddFontResource(string lpFilename);
[DllImport("gdi32.dll")]
static extern int RemoveFontResource(string lpFileName);
[DllImport("user32.dll",CharSet=CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, WM wMsg, IntPtr wParam, IntPtr lParam);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
private static extern bool PostMessage(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam);
public static int AddFont(string fontFilePath) {
FileInfo fontFile = new FileInfo(fontFilePath);
if (!fontFile.Exists)
{
return 0;
}
try
{
int retVal = AddFontResource(fontFilePath);
//This version of SendMessage is a blocking call until all windows respond.
//long result = SendMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
//Alternatively PostMessage instead of SendMessage to prevent application hang
bool posted = PostMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
return retVal;
}
catch
{
return 0;
}
}
public static int RemoveFont(string fontFileName) {
//FileInfo fontFile = new FileInfo(fontFileName);
//if (!fontFile.Exists)
//{
// return false;
//}
try
{
int retVal = RemoveFontResource(fontFileName);
//This version of SendMessage is a blocking call until all windows respond.
//long result = SendMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
//Alternatively PostMessage instead of SendMessage to prevent application hang
bool posted = PostMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
return retVal;
}
catch
{
return 0;
}
}
public enum WM : uint
{
NULL = 0x0000,
CREATE = 0x0001,
DESTROY = 0x0002,
MOVE = 0x0003,
SIZE = 0x0005,
ACTIVATE = 0x0006,
SETFOCUS = 0x0007,
KILLFOCUS = 0x0008,
ENABLE = 0x000A,
SETREDRAW = 0x000B,
SETTEXT = 0x000C,
GETTEXT = 0x000D,
GETTEXTLENGTH = 0x000E,
PAINT = 0x000F,
CLOSE = 0x0010,
QUERYENDSESSION = 0x0011,
QUERYOPEN = 0x0013,
ENDSESSION = 0x0016,
QUIT = 0x0012,
ERASEBKGND = 0x0014,
SYSCOLORCHANGE = 0x0015,
SHOWWINDOW = 0x0018,
WININICHANGE = 0x001A,
SETTINGCHANGE = WM.WININICHANGE,
DEVMODECHANGE = 0x001B,
ACTIVATEAPP = 0x001C,
FONTCHANGE = 0x001D,
TIMECHANGE = 0x001E,
CANCELMODE = 0x001F,
SETCURSOR = 0x0020,
MOUSEACTIVATE = 0x0021,
CHILDACTIVATE = 0x0022,
QUEUESYNC = 0x0023,
GETMINMAXINFO = 0x0024,
PAINTICON = 0x0026,
ICONERASEBKGND = 0x0027,
NEXTDLGCTL = 0x0028,
SPOOLERSTATUS = 0x002A,
DRAWITEM = 0x002B,
MEASUREITEM = 0x002C,
DELETEITEM = 0x002D,
VKEYTOITEM = 0x002E,
CHARTOITEM = 0x002F,
SETFONT = 0x0030,
GETFONT = 0x0031,
SETHOTKEY = 0x0032,
GETHOTKEY = 0x0033,
QUERYDRAGICON = 0x0037,
COMPAREITEM = 0x0039,
GETOBJECT = 0x003D,
COMPACTING = 0x0041,
COMMNOTIFY = 0x0044,
WINDOWPOSCHANGING = 0x0046,
WINDOWPOSCHANGED = 0x0047,
POWER = 0x0048,
COPYDATA = 0x004A,
CANCELJOURNAL = 0x004B,
NOTIFY = 0x004E,
INPUTLANGCHANGEREQUEST = 0x0050,
INPUTLANGCHANGE = 0x0051,
TCARD = 0x0052,
HELP = 0x0053,
USERCHANGED = 0x0054,
NOTIFYFORMAT = 0x0055,
CONTEXTMENU = 0x007B,
STYLECHANGING = 0x007C,
STYLECHANGED = 0x007D,
DISPLAYCHANGE = 0x007E,
GETICON = 0x007F,
SETICON = 0x0080,
NCCREATE = 0x0081,
NCDESTROY = 0x0082,
NCCALCSIZE = 0x0083,
NCHITTEST = 0x0084,
NCPAINT = 0x0085,
NCACTIVATE = 0x0086,
GETDLGCODE = 0x0087,
SYNCPAINT = 0x0088,
NCMOUSEMOVE = 0x00A0,
NCLBUTTONDOWN = 0x00A1,
NCLBUTTONUP = 0x00A2,
NCLBUTTONDBLCLK = 0x00A3,
NCRBUTTONDOWN = 0x00A4,
NCRBUTTONUP = 0x00A5,
NCRBUTTONDBLCLK = 0x00A6,
NCMBUTTONDOWN = 0x00A7,
NCMBUTTONUP = 0x00A8,
NCMBUTTONDBLCLK = 0x00A9,
NCXBUTTONDOWN = 0x00AB,
NCXBUTTONUP = 0x00AC,
NCXBUTTONDBLCLK = 0x00AD,
INPUT_DEVICE_CHANGE = 0x00FE,
INPUT = 0x00FF,
KEYFIRST = 0x0100,
KEYDOWN = 0x0100,
KEYUP = 0x0101,
CHAR = 0x0102,
DEADCHAR = 0x0103,
SYSKEYDOWN = 0x0104,
SYSKEYUP = 0x0105,
SYSCHAR = 0x0106,
SYSDEADCHAR = 0x0107,
UNICHAR = 0x0109,
KEYLAST = 0x0109,
IME_STARTCOMPOSITION = 0x010D,
IME_ENDCOMPOSITION = 0x010E,
IME_COMPOSITION = 0x010F,
IME_KEYLAST = 0x010F,
INITDIALOG = 0x0110,
COMMAND = 0x0111,
SYSCOMMAND = 0x0112,
TIMER = 0x0113,
HSCROLL = 0x0114,
VSCROLL = 0x0115,
INITMENU = 0x0116,
INITMENUPOPUP = 0x0117,
MENUSELECT = 0x011F,
MENUCHAR = 0x0120,
ENTERIDLE = 0x0121,
MENURBUTTONUP = 0x0122,
MENUDRAG = 0x0123,
MENUGETOBJECT = 0x0124,
UNINITMENUPOPUP = 0x0125,
MENUCOMMAND = 0x0126,
CHANGEUISTATE = 0x0127,
UPDATEUISTATE = 0x0128,
QUERYUISTATE = 0x0129,
CTLCOLORMSGBOX = 0x0132,
CTLCOLOREDIT = 0x0133,
CTLCOLORLISTBOX = 0x0134,
CTLCOLORBTN = 0x0135,
CTLCOLORDLG = 0x0136,
CTLCOLORSCROLLBAR = 0x0137,
CTLCOLORSTATIC = 0x0138,
MOUSEFIRST = 0x0200,
MOUSEMOVE = 0x0200,
LBUTTONDOWN = 0x0201,
LBUTTONUP = 0x0202,
LBUTTONDBLCLK = 0x0203,
RBUTTONDOWN = 0x0204,
RBUTTONUP = 0x0205,
RBUTTONDBLCLK = 0x0206,
MBUTTONDOWN = 0x0207,
MBUTTONUP = 0x0208,
MBUTTONDBLCLK = 0x0209,
MOUSEWHEEL = 0x020A,
XBUTTONDOWN = 0x020B,
XBUTTONUP = 0x020C,
XBUTTONDBLCLK = 0x020D,
MOUSEHWHEEL = 0x020E,
MOUSELAST = 0x020E,
PARENTNOTIFY = 0x0210,
ENTERMENULOOP = 0x0211,
EXITMENULOOP = 0x0212,
NEXTMENU = 0x0213,
SIZING = 0x0214,
CAPTURECHANGED = 0x0215,
MOVING = 0x0216,
POWERBROADCAST = 0x0218,
DEVICECHANGE = 0x0219,
MDICREATE = 0x0220,
MDIDESTROY = 0x0221,
MDIACTIVATE = 0x0222,
MDIRESTORE = 0x0223,
MDINEXT = 0x0224,
MDIMAXIMIZE = 0x0225,
MDITILE = 0x0226,
MDICASCADE = 0x0227,
MDIICONARRANGE = 0x0228,
MDIGETACTIVE = 0x0229,
MDISETMENU = 0x0230,
ENTERSIZEMOVE = 0x0231,
EXITSIZEMOVE = 0x0232,
DROPFILES = 0x0233,
MDIREFRESHMENU = 0x0234,
IME_SETCONTEXT = 0x0281,
IME_NOTIFY = 0x0282,
IME_CONTROL = 0x0283,
IME_COMPOSITIONFULL = 0x0284,
IME_SELECT = 0x0285,
IME_CHAR = 0x0286,
IME_REQUEST = 0x0288,
IME_KEYDOWN = 0x0290,
IME_KEYUP = 0x0291,
MOUSEHOVER = 0x02A1,
MOUSELEAVE = 0x02A3,
NCMOUSEHOVER = 0x02A0,
NCMOUSELEAVE = 0x02A2,
WTSSESSION_CHANGE = 0x02B1,
TABLET_FIRST = 0x02c0,
TABLET_LAST = 0x02df,
CUT = 0x0300,
COPY = 0x0301,
PASTE = 0x0302,
CLEAR = 0x0303,
UNDO = 0x0304,
RENDERFORMAT = 0x0305,
RENDERALLFORMATS = 0x0306,
DESTROYCLIPBOARD = 0x0307,
DRAWCLIPBOARD = 0x0308,
PAINTCLIPBOARD = 0x0309,
VSCROLLCLIPBOARD = 0x030A,
SIZECLIPBOARD = 0x030B,
ASKCBFORMATNAME = 0x030C,
CHANGECBCHAIN = 0x030D,
HSCROLLCLIPBOARD = 0x030E,
QUERYNEWPALETTE = 0x030F,
PALETTEISCHANGING = 0x0310,
PALETTECHANGED = 0x0311,
HOTKEY = 0x0312,
PRINT = 0x0317,
PRINTCLIENT = 0x0318,
APPCOMMAND = 0x0319,
THEMECHANGED = 0x031A,
CLIPBOARDUPDATE = 0x031D,
DWMCOMPOSITIONCHANGED = 0x031E,
DWMNCRENDERINGCHANGED = 0x031F,
DWMCOLORIZATIONCOLORCHANGED = 0x0320,
DWMWINDOWMAXIMIZEDCHANGE = 0x0321,
GETTITLEBARINFOEX = 0x033F,
HANDHELDFIRST = 0x0358,
HANDHELDLAST = 0x035F,
AFXFIRST = 0x0360,
AFXLAST = 0x037F,
PENWINFIRST = 0x0380,
PENWINLAST = 0x038F,
APP = 0x8000,
USER = 0x0400,
CPL_LAUNCH = USER+0x1000,
CPL_LAUNCHED = USER+0x1001,
SYSTIMER = 0x118
}
}
}
'@
Add-Type $fontCSharpCode
#*******************************************************************
# Declare Functions
#*******************************************************************
#*******************************************************************
# Function Get-SpecialFolder()
#
# Purpose: Convert a CSIDL string to a folder parh string
#
# Input: $id CSIDL folder identifier string
#
# Returns: Folder path
#
#*******************************************************************
function Get-SpecialFolder($id)
{
$shell = New-Object COM "Shell.Application"
$folder = $shell.NameSpace($id)
$specialFolder = $folder.Self.Path
$specialFolder
}
#*******************************************************************
# Function Add-SingleFont()
#
# Purpose: Install a font file
#
# Input: $file Font file path
#
# Returns: 0 - success, 1 - failure
#
#*******************************************************************
function Add-SingleFont($filePath)
{
try
{
[string]$filePath = (resolve-path $filePath).path
[string]$fileDir = split-path $filePath
[string]$fileName = split-path $filePath -leaf
[string]$fileExt = (Get-Item $filePath).extension
[string]$fileBaseName = $fileName -replace($fileExt ,"")
$shell = new-object -com shell.application
$myFolder = $shell.Namespace($fileDir)
$fileobj = $myFolder.Items().Item($fileName)
$fontName = $myFolder.GetDetailsOf($fileobj,21)
if ($fontName -eq "") { $fontName = $fileBaseName }
copy-item $filePath -destination $fontsFolderPath
$fontFinalPath = Join-Path $fontsFolderPath $fileName
$retVal = [FontResource.AddRemoveFonts]::AddFont($fontFinalPath)
if ($retVal -eq 0) {
Write-Host "Font `'$($filePath)`'`' installation failed"
Write-Host ""
1
}
else
{
Write-Host "Font `'$($filePath)`' installed successfully"
Write-Host ""
Set-ItemProperty -path "$($fontRegistryPath)" -name "$($fontName)$($hashFontFileTypes.item($fileExt))" -value "$($fileName)" -type STRING
0
}
""
}
catch
{
Write-Host "An error occured installing `'$($filePath)`'"
Write-Host ""
Write-Host "$($error[0].ToString())"
Write-Host ""
$error.clear()
1
}
}
#*******************************************************************
# Function Show-Usage()
#
# Purpose: Shows the correct usage to the user.
#
# Input: None
#
# Output: Help messages are displayed on screen.
#
#*******************************************************************
function Show-Usage()
{
$usage = @'
Add-Font.ps1
This script is used to install Windows fonts.
Usage:
Add-Font.ps1 -help | -path "<Font file or folder path>"
Parameters:
-help
Displays usage information.
-path
May be either the path to a font file to install or the path to a folder
containing font files to install. Valid file types are .fon, .fnt,
.ttf,.ttc, .otf, .mmm, .pbf, and .pfm
Examples:
Add-Font.ps1
Add-Font.ps1 -path "C:\Custom Fonts\MyFont.ttf"
Add-Font.ps1 -path "C:\Custom Fonts"
'@
$usage
}
#*******************************************************************
# Function Process-Arguments()
#
# Purpose: To validate parameters and their values
#
# Input: All parameters
#
# Output: Exit script if parameters are invalid
#
#*******************************************************************
function Process-Arguments()
{
## Write-host 'Processing Arguments'
if ($unnamedArgs.Length -gt 0)
{
write-host "The following arguments are not defined:"
$unnamedArgs
}
if ($help -eq $true)
{
Show-Usage
break
}
if ((Test-Path $path -PathType Leaf) -eq $true)
{
If ($hashFontFileTypes.ContainsKey((Get-Item $path).Extension))
{
$retVal = Add-SingleFont $path
if ($retVal -ne 0)
{
exit 1
}
else
{
exit 0
}
}
else
{
"`'$($path)`' not a valid font file type"
""
exit 1
}
}
elseif ((Test-Path $path -PathType Container) -eq $true)
{
$bErrorOccured = $false
foreach($file in (Get-Childitem $path))
{
if ($hashFontFileTypes.ContainsKey($file.Extension))
{
$retVal = Add-SingleFont (Join-Path $path $file.Name)
if ($retVal -ne 0)
{
$bErrorOccured = $true
}
}
else
{
"`'$(Join-Path $path $file.Name)`' not a valid font file type"
""
}
}
If ($bErrorOccured -eq $true)
{
exit 1
}
else
{
exit 0
}
}
else
{
"`'$($path)`' not found"
""
exit 1
}
}
#*******************************************************************
# Main Script
#*******************************************************************
$fontsFolderPath = Get-SpecialFolder($CSIDL_FONTS)
Process-Arguments

View file

@ -1,618 +0,0 @@
#########################################################################################
# MICROSOFT LEGAL STATEMENT FOR SAMPLE SCRIPTS/CODE
#########################################################################################
# This Sample Code is provided for the purpose of illustration only and is not
# intended to be used in a production environment.
#
# THIS SAMPLE CODE AND ANY RELATED INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY
# OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
#
# We grant You a nonexclusive, royalty-free right to use and modify the Sample Code
# and to reproduce and distribute the object code form of the Sample Code, provided
# that You agree:
# (i) to not use Our name, logo, or trademarks to market Your software product
# in which the Sample Code is embedded;
# (ii) to include a valid copyright notice on Your software product in which
# the Sample Code is embedded; and
# (iii) to indemnify, hold harmless, and defend Us and Our suppliers from and
# against any claims or lawsuits, including attorneys fees, that arise
# or result from the use or distribution of the Sample Code.
#########################################################################################
#******************************************************************************
# File: Remove-Font.ps1
# Date: 08/28/2013
# Version: 1.0.1
#
# Purpose: PowerShell script to uninstall a Windows font.
#
# Usage: Remove-Font -help | -path "<Font file name>"
#
# Copyright (C) 2010 Microsoft Corporation
#
#
# Revisions:
# ----------
# 1.0.0 09/22/2010 Created script.
# 1.0.1 08/28/2013 Now checking if $error[0] is not null before trying to
# echo that value in Remove-SingleFont so as not to
# generate an error when none occurred.
#
#******************************************************************************
#requires -Version 2.0
#*******************************************************************
# Declare Parameters
#*******************************************************************
param(
[string] $file = "",
[switch] $help = $false
)
#*******************************************************************
# Declare Global Variables and Constants
#*******************************************************************
# Define constants
set-variable CSIDL_FONTS 0x14 -option constant
# Create hashtable containing valid font file extensions and text to append to Registry entry name.
$hashFontFileTypes = @{}
$hashFontFileTypes.Add(".fon", "")
$hashFontFileTypes.Add(".fnt", "")
$hashFontFileTypes.Add(".ttf", " (TrueType)")
$hashFontFileTypes.Add(".ttc", " (TrueType)")
$hashFontFileTypes.Add(".otf", " (OpenType)")
# Type 1 fonts require handling multiple resource files.
# Not supported in this script
#$hashFontFileTypes.Add(".mmm", "")
#$hashFontFileTypes.Add(".pbf", "")
#$hashFontFileTypes.Add(".pfm", "")
# Initialize variables
$invocation = (Get-Variable MyInvocation -Scope 0).Value
$scriptPath = Split-Path $Invocation.MyCommand.Path
$fontRegistryPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts"
#*******************************************************************
# Load C# code
#*******************************************************************
$fontCSharpCode = @'
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Runtime.InteropServices;
namespace FontResource
{
public class AddRemoveFonts
{
private static IntPtr HWND_BROADCAST = new IntPtr(0xffff);
private static IntPtr HWND_TOP = new IntPtr(0);
private static IntPtr HWND_BOTTOM = new IntPtr(1);
private static IntPtr HWND_TOPMOST = new IntPtr(-1);
private static IntPtr HWND_NOTOPMOST = new IntPtr(-2);
private static IntPtr HWND_MESSAGE = new IntPtr(-3);
[DllImport("gdi32.dll")]
static extern int AddFontResource(string lpFilename);
[DllImport("gdi32.dll")]
static extern int RemoveFontResource(string lpFileName);
[DllImport("user32.dll",CharSet=CharSet.Auto)]
private static extern int SendMessage(IntPtr hWnd, WM wMsg, IntPtr wParam, IntPtr lParam);
[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("user32.dll", SetLastError = true)]
private static extern bool PostMessage(IntPtr hWnd, WM Msg, IntPtr wParam, IntPtr lParam);
public static int AddFont(string fontFilePath) {
FileInfo fontFile = new FileInfo(fontFilePath);
if (!fontFile.Exists)
{
return 0;
}
try
{
int retVal = AddFontResource(fontFilePath);
//This version of SendMessage is a blocking call until all windows respond.
//long result = SendMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
//Alternatively PostMessage instead of SendMessage to prevent application hang
bool posted = PostMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
return retVal;
}
catch
{
return 0;
}
}
public static int RemoveFont(string fontFileName) {
//FileInfo fontFile = new FileInfo(fontFileName);
//if (!fontFile.Exists)
//{
// return false;
//}
try
{
int retVal = RemoveFontResource(fontFileName);
//This version of SendMessage is a blocking call until all windows respond.
//long result = SendMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
//Alternatively PostMessage instead of SendMessage to prevent application hang
bool posted = PostMessage(HWND_BROADCAST, WM.FONTCHANGE, IntPtr.Zero, IntPtr.Zero);
return retVal;
}
catch
{
return 0;
}
}
public enum WM : uint
{
NULL = 0x0000,
CREATE = 0x0001,
DESTROY = 0x0002,
MOVE = 0x0003,
SIZE = 0x0005,
ACTIVATE = 0x0006,
SETFOCUS = 0x0007,
KILLFOCUS = 0x0008,
ENABLE = 0x000A,
SETREDRAW = 0x000B,
SETTEXT = 0x000C,
GETTEXT = 0x000D,
GETTEXTLENGTH = 0x000E,
PAINT = 0x000F,
CLOSE = 0x0010,
QUERYENDSESSION = 0x0011,
QUERYOPEN = 0x0013,
ENDSESSION = 0x0016,
QUIT = 0x0012,
ERASEBKGND = 0x0014,
SYSCOLORCHANGE = 0x0015,
SHOWWINDOW = 0x0018,
WININICHANGE = 0x001A,
SETTINGCHANGE = WM.WININICHANGE,
DEVMODECHANGE = 0x001B,
ACTIVATEAPP = 0x001C,
FONTCHANGE = 0x001D,
TIMECHANGE = 0x001E,
CANCELMODE = 0x001F,
SETCURSOR = 0x0020,
MOUSEACTIVATE = 0x0021,
CHILDACTIVATE = 0x0022,
QUEUESYNC = 0x0023,
GETMINMAXINFO = 0x0024,
PAINTICON = 0x0026,
ICONERASEBKGND = 0x0027,
NEXTDLGCTL = 0x0028,
SPOOLERSTATUS = 0x002A,
DRAWITEM = 0x002B,
MEASUREITEM = 0x002C,
DELETEITEM = 0x002D,
VKEYTOITEM = 0x002E,
CHARTOITEM = 0x002F,
SETFONT = 0x0030,
GETFONT = 0x0031,
SETHOTKEY = 0x0032,
GETHOTKEY = 0x0033,
QUERYDRAGICON = 0x0037,
COMPAREITEM = 0x0039,
GETOBJECT = 0x003D,
COMPACTING = 0x0041,
COMMNOTIFY = 0x0044,
WINDOWPOSCHANGING = 0x0046,
WINDOWPOSCHANGED = 0x0047,
POWER = 0x0048,
COPYDATA = 0x004A,
CANCELJOURNAL = 0x004B,
NOTIFY = 0x004E,
INPUTLANGCHANGEREQUEST = 0x0050,
INPUTLANGCHANGE = 0x0051,
TCARD = 0x0052,
HELP = 0x0053,
USERCHANGED = 0x0054,
NOTIFYFORMAT = 0x0055,
CONTEXTMENU = 0x007B,
STYLECHANGING = 0x007C,
STYLECHANGED = 0x007D,
DISPLAYCHANGE = 0x007E,
GETICON = 0x007F,
SETICON = 0x0080,
NCCREATE = 0x0081,
NCDESTROY = 0x0082,
NCCALCSIZE = 0x0083,
NCHITTEST = 0x0084,
NCPAINT = 0x0085,
NCACTIVATE = 0x0086,
GETDLGCODE = 0x0087,
SYNCPAINT = 0x0088,
NCMOUSEMOVE = 0x00A0,
NCLBUTTONDOWN = 0x00A1,
NCLBUTTONUP = 0x00A2,
NCLBUTTONDBLCLK = 0x00A3,
NCRBUTTONDOWN = 0x00A4,
NCRBUTTONUP = 0x00A5,
NCRBUTTONDBLCLK = 0x00A6,
NCMBUTTONDOWN = 0x00A7,
NCMBUTTONUP = 0x00A8,
NCMBUTTONDBLCLK = 0x00A9,
NCXBUTTONDOWN = 0x00AB,
NCXBUTTONUP = 0x00AC,
NCXBUTTONDBLCLK = 0x00AD,
INPUT_DEVICE_CHANGE = 0x00FE,
INPUT = 0x00FF,
KEYFIRST = 0x0100,
KEYDOWN = 0x0100,
KEYUP = 0x0101,
CHAR = 0x0102,
DEADCHAR = 0x0103,
SYSKEYDOWN = 0x0104,
SYSKEYUP = 0x0105,
SYSCHAR = 0x0106,
SYSDEADCHAR = 0x0107,
UNICHAR = 0x0109,
KEYLAST = 0x0109,
IME_STARTCOMPOSITION = 0x010D,
IME_ENDCOMPOSITION = 0x010E,
IME_COMPOSITION = 0x010F,
IME_KEYLAST = 0x010F,
INITDIALOG = 0x0110,
COMMAND = 0x0111,
SYSCOMMAND = 0x0112,
TIMER = 0x0113,
HSCROLL = 0x0114,
VSCROLL = 0x0115,
INITMENU = 0x0116,
INITMENUPOPUP = 0x0117,
MENUSELECT = 0x011F,
MENUCHAR = 0x0120,
ENTERIDLE = 0x0121,
MENURBUTTONUP = 0x0122,
MENUDRAG = 0x0123,
MENUGETOBJECT = 0x0124,
UNINITMENUPOPUP = 0x0125,
MENUCOMMAND = 0x0126,
CHANGEUISTATE = 0x0127,
UPDATEUISTATE = 0x0128,
QUERYUISTATE = 0x0129,
CTLCOLORMSGBOX = 0x0132,
CTLCOLOREDIT = 0x0133,
CTLCOLORLISTBOX = 0x0134,
CTLCOLORBTN = 0x0135,
CTLCOLORDLG = 0x0136,
CTLCOLORSCROLLBAR = 0x0137,
CTLCOLORSTATIC = 0x0138,
MOUSEFIRST = 0x0200,
MOUSEMOVE = 0x0200,
LBUTTONDOWN = 0x0201,
LBUTTONUP = 0x0202,
LBUTTONDBLCLK = 0x0203,
RBUTTONDOWN = 0x0204,
RBUTTONUP = 0x0205,
RBUTTONDBLCLK = 0x0206,
MBUTTONDOWN = 0x0207,
MBUTTONUP = 0x0208,
MBUTTONDBLCLK = 0x0209,
MOUSEWHEEL = 0x020A,
XBUTTONDOWN = 0x020B,
XBUTTONUP = 0x020C,
XBUTTONDBLCLK = 0x020D,
MOUSEHWHEEL = 0x020E,
MOUSELAST = 0x020E,
PARENTNOTIFY = 0x0210,
ENTERMENULOOP = 0x0211,
EXITMENULOOP = 0x0212,
NEXTMENU = 0x0213,
SIZING = 0x0214,
CAPTURECHANGED = 0x0215,
MOVING = 0x0216,
POWERBROADCAST = 0x0218,
DEVICECHANGE = 0x0219,
MDICREATE = 0x0220,
MDIDESTROY = 0x0221,
MDIACTIVATE = 0x0222,
MDIRESTORE = 0x0223,
MDINEXT = 0x0224,
MDIMAXIMIZE = 0x0225,
MDITILE = 0x0226,
MDICASCADE = 0x0227,
MDIICONARRANGE = 0x0228,
MDIGETACTIVE = 0x0229,
MDISETMENU = 0x0230,
ENTERSIZEMOVE = 0x0231,
EXITSIZEMOVE = 0x0232,
DROPFILES = 0x0233,
MDIREFRESHMENU = 0x0234,
IME_SETCONTEXT = 0x0281,
IME_NOTIFY = 0x0282,
IME_CONTROL = 0x0283,
IME_COMPOSITIONFULL = 0x0284,
IME_SELECT = 0x0285,
IME_CHAR = 0x0286,
IME_REQUEST = 0x0288,
IME_KEYDOWN = 0x0290,
IME_KEYUP = 0x0291,
MOUSEHOVER = 0x02A1,
MOUSELEAVE = 0x02A3,
NCMOUSEHOVER = 0x02A0,
NCMOUSELEAVE = 0x02A2,
WTSSESSION_CHANGE = 0x02B1,
TABLET_FIRST = 0x02c0,
TABLET_LAST = 0x02df,
CUT = 0x0300,
COPY = 0x0301,
PASTE = 0x0302,
CLEAR = 0x0303,
UNDO = 0x0304,
RENDERFORMAT = 0x0305,
RENDERALLFORMATS = 0x0306,
DESTROYCLIPBOARD = 0x0307,
DRAWCLIPBOARD = 0x0308,
PAINTCLIPBOARD = 0x0309,
VSCROLLCLIPBOARD = 0x030A,
SIZECLIPBOARD = 0x030B,
ASKCBFORMATNAME = 0x030C,
CHANGECBCHAIN = 0x030D,
HSCROLLCLIPBOARD = 0x030E,
QUERYNEWPALETTE = 0x030F,
PALETTEISCHANGING = 0x0310,
PALETTECHANGED = 0x0311,
HOTKEY = 0x0312,
PRINT = 0x0317,
PRINTCLIENT = 0x0318,
APPCOMMAND = 0x0319,
THEMECHANGED = 0x031A,
CLIPBOARDUPDATE = 0x031D,
DWMCOMPOSITIONCHANGED = 0x031E,
DWMNCRENDERINGCHANGED = 0x031F,
DWMCOLORIZATIONCOLORCHANGED = 0x0320,
DWMWINDOWMAXIMIZEDCHANGE = 0x0321,
GETTITLEBARINFOEX = 0x033F,
HANDHELDFIRST = 0x0358,
HANDHELDLAST = 0x035F,
AFXFIRST = 0x0360,
AFXLAST = 0x037F,
PENWINFIRST = 0x0380,
PENWINLAST = 0x038F,
APP = 0x8000,
USER = 0x0400,
CPL_LAUNCH = USER+0x1000,
CPL_LAUNCHED = USER+0x1001,
SYSTIMER = 0x118
}
}
}
'@
Add-Type $fontCSharpCode
#*******************************************************************
# Declare Functions
#*******************************************************************
#*******************************************************************
# Function Get-SpecialFolder()
#
# Purpose: Convert a CSIDL string to a folder parh string
#
# Input: $id CSIDL folder identifier string
#
# Returns: Folder path
#
#*******************************************************************
function Get-SpecialFolder($id)
{
$shell = New-Object COM "Shell.Application"
$folder = $shell.NameSpace($id)
$specialFolder = $folder.Self.Path
$specialFolder
}
#*******************************************************************
# Function Get-RegistryStringNameFromValue()
#
# Purpose: Return the Registry value name
#
# Input: $keyPath Regsitry key drive path
# $valueData Regsitry value sting data
#
# Returns: Registry string value name
#
#*******************************************************************
function Get-RegistryStringNameFromValue([string] $keyPath, [string] $valueData)
{
$pattern = [Regex]::Escape($valueData)
foreach($property in (Get-ItemProperty $keyPath).PsObject.Properties)
{
## Skip the property if it was one PowerShell added
if(($property.Name -eq "PSPath") -or
($property.Name -eq "PSChildName"))
{
continue
}
## Search the text of the property
$propertyText = "$($property.Value)"
if($propertyText -match $pattern)
{
"$($property.Name)"
}
}
}
#*******************************************************************
# Function Remove-SingleFont()
#
# Purpose: Uninstall a font file
#
# Input: $file Font file name
#
# Returns: 0 - success, 1 - failure
#
#*******************************************************************
function Remove-SingleFont($file)
{
try
{
$fontFinalPath = Join-Path $fontsFolderPath $file
$retVal = [FontResource.AddRemoveFonts]::RemoveFont($fontFinalPath)
if ($retVal -eq 0) {
Write-Host "Font `'$($file)`' removal failed"
Write-Host ""
1
}
else
{
$fontRegistryvaluename = (Get-RegistryStringNameFromValue $fontRegistryPath $file)
Write-Host "Font: $($fontRegistryvaluename)"
if ($fontRegistryvaluename -ne "")
{
Remove-ItemProperty -path $fontRegistryPath -name $fontRegistryvaluename
}
Remove-Item $fontFinalPath
if ($error[0] -ne $null)
{
Write-Host "An error occured removing $`'$($file)`'"
Write-Host ""
Write-Host "$($error[0].ToString())"
$error.clear()
}
else
{
Write-Host "Font `'$($file)`' removed successfully"
Write-Host ""
}
0
}
""
}
catch
{
Write-Host "An error occured removing `'$($file)`'"
Write-Host ""
Write-Host "$($error[0].ToString())"
Write-Host ""
$error.clear()
1
}
}
#*******************************************************************
# Function Show-Usage()
#
# Purpose: Shows the correct usage to the user.
#
# Input: None
#
# Output: Help messages are displayed on screen.
#
#*******************************************************************
function Show-Usage()
{
$usage = @'
Remove-Font.ps1
This script is used to uninstall a Windows font.
Usage:
Remove-Font.ps1 -help | -path "<Font file name>"
Parameters:
-help
Displays usage information.
-file
Font file name. Files located in \Windows\Fonts. Valid file
types are .fon, .fnt, .ttf,.ttc, .otf, .mmm, .pbf, and .pfm
Examples:
Remove-Font.ps1
Remove-Font.ps1 -file "MyFont.ttf"
'@
$usage
}
#*******************************************************************
# Function Process-Arguments()
#
# Purpose: To validate parameters and their values
#
# Input: All parameters
#
# Output: Exit script if parameters are invalid
#
#*******************************************************************
function Process-Arguments()
{
## Write-host 'Processing Arguments'
if ($unnamedArgs.Length -gt 0)
{
write-host "The following arguments are not defined:"
$unnamedArgs
}
if ($help -eq $true)
{
Show-Usage
break
}
$fontFilePath = Join-Path $fontsFolderPath $file
if ((Test-Path $fontFilePath -PathType Leaf) -eq $true)
{
If ($hashFontFileTypes.ContainsKey((Get-Item $fontFilePath).Extension))
{
$retVal = Remove-SingleFont $file
if ($retVal -ne 0)
{
exit 1
}
else
{
exit 0
}
}
else
{
"`'$($fontFilePath)`' not a valid font file type"
""
exit 1
}
}
else
{
"`'$($fontFilePath)`' not found"
""
exit 1
}
}
#*******************************************************************
# Main Script
#*******************************************************************
$fontsFolderPath = Get-SpecialFolder($CSIDL_FONTS)
Process-Arguments

View file

@ -1,11 +0,0 @@
# Removing fonts
function Get-CurrentDirectory
{{
$thisName = $MyInvocation.MyCommand.Name
[IO.Path]::GetDirectoryName((Get-Content function:$thisName).File)
}}
$RemoveFont = Join-Path (Get-CurrentDirectory) "Remove-Font.ps1"
foreach ($font in ({fonts})) {{
& "$RemoveFont" "$font"
}}

View file

@ -1,19 +0,0 @@
$tools = Split-Path $MyInvocation.MyCommand.Definition
$package = Join-Path (Split-Path $tools) "fonts"
function Get-CurrentDirectory
{{
$thisName = $MyInvocation.MyCommand.Name
[IO.Path]::GetDirectoryName((Get-Content function:$thisName).File)
}}
Install-ChocolateyZipPackage `
-PackageName "$env:ChocolateyPackageName" `
-Url 'https://github.com/ryanoasis/nerd-fonts/releases/download/{version}/{font}.zip' `
-Checksum '{hash}' `
-ChecksumType 'SHA256' `
-UnzipLocation $package
$AddFont = Join-Path (Get-CurrentDirectory) 'Add-Font.ps1'
& $AddFont -Path "$package"
Remove-Item -Recurse -Force $package

File diff suppressed because it is too large Load diff

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load diff

View file

@ -1,35 +0,0 @@
{
"name": "nerd-fonts",
"version": "2.2.0-RC",
"description": "Iconic font aggregator, collection, & patcher. 3,600+ icons, 50+ patched fonts: Hack, Source Code Pro, more. Glyph collections: Font Awesome, Material Design Icons, Octicons, & more",
"main": "index.js",
"dependencies": {},
"devDependencies": {
"all-contributors-cli": "^4.8.1"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/ryanoasis/nerd-fonts.git"
},
"keywords": [
"fonts",
"patched-fonts",
"powerline",
"shell",
"statusline",
"python",
"iconic-fonts",
"patcher",
"font-awesome",
"octicons"
],
"author": "Ryan L McIntyre",
"license": "SEE LICENSE IN LICENSE file",
"bugs": {
"url": "https://github.com/ryanoasis/nerd-fonts/issues"
},
"homepage": "https://github.com/ryanoasis/nerd-fonts#readme"
}

File diff suppressed because one or more lines are too long

View file

@ -1,633 +0,0 @@
<h1 align="center">
<img src="images/nerd-fonts-logo.png" alt="Nerd Fonts Logo" />
</h1>
[![GitHub release][img-version-badge-with-logo]][repo]&nbsp;[![Gitter][img-gitter-badge]][gitter]&nbsp;[![CodeClimate][img-code-climate-badge]][code-climate]&nbsp;[![Code of Conduct][coc-badge]][coc]&nbsp;[![PRs Welcome][prs-badge]][prs]&nbsp;&nbsp;&nbsp;[![Windows Logo][w-top]](#patched-fonts)&nbsp;&nbsp;&nbsp;[![macOS (OSX) Logo][m-top]](#patched-fonts)&nbsp;&nbsp;&nbsp;[![Linux Logo][l-top]](#patched-fonts)
**Nerd Fonts** 是一个使用大量字体图标来解决程序员在开发过程中缺少合适字体的问题的项目。它可以从流行的字体图标库中将大量外部字体引入待开发的项目中,它支持的字体图标库包括 [Font Awesome ➶][font-awesome], [Devicons ➶][vorillaz-devicons], [Octicons ➶][octicons], and [others](#glyph-sets).
下面的桑基图展示了Nerd Fonts中现有的字形组合
<p align="center">
<img src="https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/custom-sankey-glyphs-combined-diagram.png" alt="@SankeyMATIC Diagram" />
</p>
<sub><i>创建图表的工具为: <a href="http://sankeymatic.com/" title="SankeyMATIC (BETA): A Sankey diagram builder for everyone">@SankeyMATIC</a></i></sub>
## 快速导航
| **[Latest Release ➶][release]** | **[Fonts](#patched-fonts)** | **[Patcher](#font-patcher)** | **[VimDevIcons ➶][vim-devicons]** | **[Font Package <br/>Downloads ➶][release]** |
|:-------------------------------:|:---------------------------:|:----------------------------:|:---------------------------------:|:--------------------------------------------:|
| [![fonts-logo-small][ql-1]][release] | [![fonts-logo-small][ql-2]](#patched-fonts) | [![patcher-logo-small][ql-3]](#font-patcher) | [![vim-devicons-logo-small][ql-4]][vim-devicons] | [![fonts-logo-small][ql-5]][release] |
## 重要提示
* `master` 分支的文件路径 **不稳定!** [验证你的 repository URI references](#unstable-file-paths)
* 除非你想成为[开发贡献者](#contributing),不然最好**不要**克隆这个 repository。
## 目录
[**TL;DR**](#tldr)
[**安装选项**](#font-installation)
* [**1 - 手动**](#option-1-download-and-install-manually)
* [**2 - 下载发布存档**](#option-2-release-archive-download)
* [**3 - 安装脚本**](#option-3-install-script)
* [**4 - Homebrew Fonts (macOS (OS X))**](#option-4-homebrew-fonts)
* [**5 - 克隆 Repo**](#option-5-clone-the-repo)
* [**6 - Ad Hoc Curl 下载**](#option-6-ad-hoc-curl-download)
* [**7 - Arch User Repository (AUR) (Arch Linux)**](#option-7-unofficial-arch-user-repository-aur)
* [**8 - 你自己的字体补丁**](#option-8-patch-your-own-font)
[**特征**](#features)
* [**Glyph/Icon sets**](#glyph-sets)
* [**Patched Fonts**](#patched-fonts)
* [**Combinations**](#combinations)
* [**Font Patcher**](#font-patcher)
[**开发者 / 贡献者**](#font-patcher)
* [**Font Patcher**](#font-patcher)
* [**Gotta Patch 'em All Font Patcher!**](#gotta-patch-em-all)
* [**Other Good Fonts to Patch**](#other-good-fonts-to-patch)
* [**Contributing**](#contributing)
[**项目的目的**](#project-motivation)
**附加信息**
* [**master中不稳定的文件路径**](#unstable-file-paths)
* [**更新日志**](#changelog)
* [**证书**](#license)
## TL;DR
Nerd Fonts 中包含流行的程序字体和字形。
如果你想要的字体没有在现有的字体库中,你可以使用 [font patcher](#font-patcher)来自定义字体。
更多信息请见 [wiki][wiki]。如果你正在寻找Vim插件请见 [VimDevIcons ➶][vim-devicons]。
### 多种字体下载选项
_如果你..._
* `选项 1.` 需要**快速**从[`patched-fonts/` directory](#patched-fonts)下载一个 **独立字体**
* `选项 2.` 需要去下载包含粗体、斜体等等一系列字体的 **字体家族**,请见 [下载档案](#option-2-release-archive-download)
* `选项 3.` 需要**自动安装**或使用**脚本**,请见 [安装脚本](#option-3-install-script)
* `选项 4.` 是**macOS**的使用者,并且想要使用**Homebrew**,请见 [Homebrew Fonts](#option-4-homebrew-fonts)
* `选项 5.` 想要 **完全控制**,请见 [克隆这个 repo](#option-5-clone-the-repo)
* `选项 6.` 想要使用 **`curl` command** 或者使用 **scripts**,请见 [Ad Hoc Curl 下载](#option-6-ad-hoc-curl-download)
* `选项 7.` 是**Arch Linux**的使用者,并且想要使用**AUR packages**,请见 [Unofficial Arch User Repositories](#option-7-unofficial-arch-user-repository-aur)
* `选项 8.` 想要打包你自定义的字体,请见 [字体补丁](#option-8-patch-your-own-font)
## 特征
* [FontForge Python script](#font-patcher) 可以打包任何字体
* 包括建立**Monospaced (fixed-pitch, fixed-width)** _或者_ **double-width (non-monospaced)** 字形
* 更多详情请见 [**Font Patcher**](#font-patcher) 段落
* **`50`** 已经 [打包了字体家族](#patched-fonts)
* Over **`1,571,470`** 独立的 组合/变型 字体 [(更多详情)](#combinations)
* Over **`1,300`** 字形/图标 组合 [(更多详情)](#combinations)
* 当前的字形集包括: [Powerline with Extra Symbols][ryanoasis-powerline-extra-symbols], [Font Awesome][font-awesome], [Devicons][vorillaz-devicons], [Octicons][octicons], [Font Linux][font-linux], [Pomicons][gabrielelana-pomicons]
* 每种字体的**Monospaced (fixed-pitch, fixed-width)** _和_ **double-width (non-monospaced)** 版本
* 这指的是Nerd Font字形本身并不一定需要将字体作为一个整体考虑
* 一个 开发者/贡献者提供了 [bash script](#gotta-patch-em-all) 来为所有字体再打包
## 字形集
:mag: :mag: 你现在可以通过[NerdFonts.com][Cheat Sheet]中的[Cheat Sheet][]对字形进行搜索
### Seti-UI + 自定义
> 基于 [Seti-UI] Icomoon 的额外自定义字形。
![image](images/fontforge-glyph-set-1.png)
### [Devicons][vorillaz-devicons]
> 一个为开发者code jedisninjasHTTPstersevangelists 和 nerds(sic)制作的图标字体。 / ([repo][vorillaz-devicons]) / ([website](https://vorillaz.github.io/devicons/))
![image](images/fontforge-glyph-set-2.png)
### [Font Awesome][font-awesome]
> 字体图标和 CSS 工具包。 / ([repo][font-awesome]) / ([website](http://fontawesome.io/))
![image](images/fontforge-glyph-set-font-awesome-1.png)
![image](images/fontforge-glyph-set-font-awesome-2.png)
![image](images/fontforge-glyph-set-font-awesome-3.png)
![image](images/fontforge-glyph-set-font-awesome-4.png)
### [Font Awesome Extension][font-awesome-extension]
> 简单的 Font Awesome 补充包。 / ([repo][font-awesome-extension]) / ([website](https://andrelzgava.github.io/font-awesome-extension/))
![image](images/fontforge-glyph-set-font-awesome-extension-1.png)
### [Octicons][octicons]
> GitHub's 图标. / ([repo][octicons]) / ([website](https://octicons.github.com))
#### Nerd Font Complete Codepoints:*
![image](images/fontforge-glyph-set-octicons.png)
<sub>* To avoid conflicts between icon sets, these were modified in the 'Complete' fonts. To view the original codepoints see the [Wiki](https://github.com/ryanoasis/nerd-fonts/wiki/Codepoint-Conflicts).</sub>
### [Powerline Extra Symbols][ryanoasis-powerline-extra-symbols]
> 提供额外的 Powerline separator 字体 和 a column number glyph (CN). / ([repo][ryanoasis-powerline-extra-symbols])
![image](https://raw.githubusercontent.com/ryanoasis/powerline-extra-symbols/master/fontforge.png)
### [IEC Power Symbols][website-iecpower]
> 向Unicode中加入新字符 / ([website][website-iecpower])
![image](images/fontforge-glyph-set-font-iec-power-1.png)
![image](images/fontforge-glyph-set-font-iec-power-2.png)
### [Font Linux][font-linux]
> Font-linux 是一个包含LOGO和linux流行布局的图标字体。 / ([repo][font-linux])
![image](images/fontforge-glyph-set-font-linux.png)
### [Pomicons][gabrielelana-pomicons]
> 8 个符号 ["Pomodoro Technique"®](https://cirillocompany.de/pages/pomodoro-technique). / ([repo][gabrielelana-pomicons])
![image](images/fontforge-glyph-set-pomicons.png)
### Shell中的Icon 名称
从[bin/scripts/lib/](bin/scripts/lib/)路径中下载 `.sh` 文件, 推荐的文件位置为 `~/.local/share/fonts/` 或者 `~/bin/`.
- `i_all.sh` - 帮助你加载你下载的所有文件
- `i_dev.sh` - Devicons (198 icons, 8 does not have an established name)
- `i_fa.sh` - Font Awesome (675 icons, 111 aliases)
- `i_fae.sh` - Font Awesome Extension (170 icons)
- `i_iec.sh` - IEC Power Symbols (5 icons)
- `i_linux.sh` - Font Linux (20 icons)
- `i_oct.sh` - Octicons (172 icons)
- `i_ple.sh` - Powerline Extra Symbols (37 icons, 2 aliases, 16 does not have an established name)
- `i_pom.sh` - Pomicons (11 icons)
- `i_seti.sh` - Seti-UI + Custom (50 icons, 2 aliases, 5 does not have an established name)
然后 `source` 所需的文件并且输出 `$i_*` variables 去寻找字体:
```sh
source ~/.local/share/fonts/i_oct.sh
echo $i_oct_heart
# Output:
# ♥
```
**NOTE:** You have to use one of the Nerd Fonts to see correct icons for some icon sets (Devicons, Font Awesome Extension, Font Linux), but other sets should work with their standard fonts too.
## 字体补丁
| Font Name | Font Name and Repository |\*RFN | EM Size | Status |
|:--------------------------------------------------|:----------------------------------|:-----|:--------|:------------------|
| [3270 Nerd Font][p-3270] | [3270][f-3270] | NO | 1000 | ![w2] ![m2] ![l2] |
| [Anonymice Nerd Font][p-anonymous-pro] | [Anonymous Pro][f-a-pro] | NO | 2048 | ![w] ![m2] ![l] |
| [Aurulent Sans Mono Nerd Font][p-aurulent] | | NO | 1000 | ![w] ![m2] ![l] |
| [Bitstream Vera Sans Mono Nerd Font][p-bitstream] | | NO | 2048 | ![w] ![m2] ![l] |
| [Code New Roman Nerd Font][p-code-nr] | | NO | 2048 | ![w] ![m2] ![l] |
| [DejaVu Sans Mono Nerd Font][p-dejavu] | | NO | 2048 | ![w] ![m2] ![l] |
| [Droid Sans Mono Nerd Font][p-droid] | | NO | 2048 | ![w] ![m2] ![l] |
| [Fantasque Sans Nerd Font][p-fantasque] | [Fantasque Sans][f-fant] | NO | 2048 | ![w] ![m2] ![l] |
| [Fura Code Nerd Font][p-fira-code] | [Fira][f-fira-code] | YES | 1000 | ![w] ![m2] ![l] |
| [Fura Mono Nerd Font][p-fira-mono] | [Fira][f-fira-mono] | YES | 1000 | ![w] ![m2] ![l] |
| [Gohu Nerd Font][p-gohu] | [Gohu][f-gohu] | NO | 1000 | ![w2] ![m2] ![l2] |
| [Hasklug Nerd Font][p-hasklig] | [Hasklig][f-hasklig] | YES | 1000 | ![w] ![m2] ![l] |
| [Heavy Data Mono Nerd Font][p-heavy-data] | | NO | 2048 | ![w] ![m2] ![l] |
| [Hermut Nerd Font][p-hermit] | | NO | 1000 | ![w] ![m2] ![l] |
| [Inconsolata Nerd Font][p-inconsolata] | | NO | 1000 | ![w] ![m2] ![l] |
| [Inconsolata Go Nerd Font][p-inconsolata-go] | | NO | 1000 | ![w] ![m2] ![l] |
| [Iosevka Nerd Font][p-iosevka] | [Iosevka][f-iosevka] | YES | 1000 | [#83][s-iosevka] |
| [JetBrains Mono][p-jetbrains-mono] | [JetBrains Mono][f-jetbrains-mono]| NO | 1000 | ![w] ![m2] ![l] |
| [Knack Nerd Font][p-hack] | [Hack][f-hack] | YES | 2048 | ![w] ![m2] ![l] |
| [Lekton Nerd Font][p-lekton] | | NO | 1000 | ![w] ![m2] ![l] |
| [Literation Mono Nerd Font][p-liberation] | [Liberation][f-liberation] | YES | 2048 | ![w] ![m2] ![l] |
| [Meslo Nerd Font][p-meslo] | | NO | 2048 | ![w] ![m2] ![l] |
| [Monofur Nerd Font][p-monofur] | | NO | 2400 | ![w] ![m2] ![l] |
| [Monoid Nerd Font][p-monoid] | | NO | 1536 | ![w] ![m2] ![l] |
| [Mononoki Nerd Font][p-mononoki] | [Mononoki][f-mononoki] | NO | 1024 | ![w] ![m2] ![l] |
| [M+ (MPlus) Nerd Font][p-mplus] | | NO | 1000 | ![w] ![m2] ![l] |
| [ProFont (Windows tweaked) Nerd Font][p-profont] | | NO | 1200 | ![w] ![m2] ![l] |
| [ProFont (x11) Nerd Font][p-profont] | | NO | 1000 | [FAILING] |
| [ProggyClean Nerd Font][p-proggy-clean] | | NO | 2048 | [FAILING] |
| [Roboto Mono][p-roboto] | | NO | 2048 | [FAILING] |
| [Sauce Code Nerd Font][p-source-code-pro] | [Source][f-source] | YES | 1000 | ![w] ![m2] ![l] |
| [Shure Tech Mono Nerd Font][p-share-tech-mono] | [Share Tech Mono][f-share] | YES | 1000 | ![w] ![m2] ![l] |
| [Space Mono Nerd Font][p-space-mono] | [Space Mono][f-space] | NO | 1000 | ![w] ![m2] ![l] |
| [Terminess Nerd Font][p-terminus] | [Terminus Font][f-terminus] | YES | 1000 | ![w] ![m2] ![l] |
| [Ubuntu Nerd Font][p-ubuntu] | | NO | 1000 | ![w] ![m2] ![l] |
| [Ubuntu Mono Nerd Font][p-ubuntu-mono] | | NO | 1000 | ![w] ![m2] ![l] |
<sub>_*RFN = Reserved Font Name_</sub>
## 字体集
- 超过 **`1,485,000`** 独立的 变化/组合(Power Set)字体包:
- **`50个`** 字体合集
- **`719`** 字体家族
- **`2,876`** ‘完全’的 变化/组合字体
- **`'1,485,410'`** _有可能的_ 变化/组合字体
- **`1,488,286`** 总字体数 (2,876 + 1,428,110)
- 每种字体的组合都是任意 [Variations](#variations)的组合
### Variations
- no flags given (defaults to only **Seti-UI + Custom** and **[Devicons][vorillaz-devicons]**)
- **double _(variable/proportional)_** or **single _(fixed/monospaced)_** width glyphs
- [Font Awesome][font-awesome]
- [Font Awesome Extension][font-awesome-extension]
- [GitHub Octicons][octicons]
- [Font Linux][font-linux]
- [Powerline Extra Symbols][ryanoasis-powerline-extra-symbols]
- [IEC Power Symbols][website-iecpower]
- [Pomicons][gabrielelana-pomicons]
- Windows Compatibility
## 字体安装
### `选项1: 手动下载并安装`
> 安装特定 **单独字体** 的**最快**方法。
下载你选中的特定字体 [patched font](#patched-fonts)
### `选项2: 下载发布存档`
> 适用于当你需要**archive**或者完整的**字体家族**(Bold, Italic, etc.)的情况。
你可以以压缩包的形式从[latest release](https://github.com/ryanoasis/nerd-fonts/releases/latest)下载所需的字体
### `选项3: 安装脚本`
> 适用于当你想要 **自动** 安装或者使用 **scripts** 的情况。
_注_: 仅适用于 Linux & macOS (OS X)
_注_: **Requires cloning** the repo as of now
#### 所有字体:
* 安装全部的字体包 (_警告字体的数量众多需要下载的文件体积巨大_)
```sh
./install.sh
```
#### 单独字体:
* 安装你所需的单独字体
```sh
./install.sh <FontName>
./install.sh Hack
./install.sh HeavyData
```
### `选项4: Homebrew 字体`
> 适用于 **macOS系统**的**Homebrew**使用者。
所有字体都可以通过 [Homebrew 字体](https://github.com/caskroom/homebrew-fonts) 从 macOS (OS X)平台上找到
```sh
brew tap caskroom/fonts
brew install --cask font-hack-nerd-font
```
### `选项5: 克隆 Repo`
> 适用于要使用 **完全控制**, **所有** 或者 **多数** 字体的情况或者为Nerd Fonts的开发 **添一份力**的情况。
基于效率考虑,如果你只想使用有限的几种字体,我们**不推荐**克隆这个 repository。
但是如果你想要克隆这个repo请确认你_shallow_克隆了它
```sh
git clone --depth 1
```
### `选项6: Ad Hoc Curl 下载`
> 适用于当你想要使用 **`curl` command** 或者在 **scripts**中使用它的情况。
#### Linux
```sh
mkdir -p ~/.local/share/fonts
cd ~/.local/share/fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf
```
_注:_ deprecated alternative paths: `~/.fonts`
#### macOS (OS X)
```sh
cd ~/Library/Fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf
```
### `选项7: 非官方 Arch User Repository (AUR)`
> 适用于 **Arch Linux** 下使用 **AUR packages**的情况
下列字体可以在Arch Linux通过 [AUR packages](https://aur.archlinux.org/) 下载:
* [Nerd Fonts Complete (double-width)](https://aur.archlinux.org/packages/nerd-fonts-complete/)
* [Nerd Fonts Complete (single-width)](https://aur.archlinux.org/packages/nerd-fonts-complete-mono-glyphs/)
* [Nerd Fonts DejaVu Complete](https://aur.archlinux.org/packages/nerd-fonts-dejavu-complete/)
* [Nerd Fonts Source Code Pro Complete](https://aur.archlinux.org/packages/nerd-fonts-source-code-pro/)
* [Nerd Fonts Git (out of date)](https://aur.archlinux.org/packages/nerd-fonts-git/)
* [Nerd Fonts Fira Code](https://aur.archlinux.org/packages/nerd-fonts-fira-code/)
* [Nerd Fonts Terminus](https://aur.archlinux.org/packages/nerd-fonts-terminus/)
* [Nerd Fonts Liberation Mono](https://aur.archlinux.org/packages/nerd-fonts-liberation-mono/)
* [Nerd Fonts Go Mono](https://aur.archlinux.org/packages/nerd-fonts-go-mono/)
* [Nerd Fonts Anonymous Pro](https://aur.archlinux.org/packages/nerd-fonts-anonymous-pro/)
* [Nerd Fonts Noto](https://aur.archlinux.org/packages/nerd-fonts-noto/)
* [Nerd Fonts Inconsolata](https://aur.archlinux.org/packages/nerd-fonts-inconsolata/)
### `选项8: 打包你的个人字体`
> 适用于 **patching** 你的 **个人字体** 或者深度 **自定义** 字体补丁。
在你的个人字体中使用 Python 命令行脚本去增加新的字形并生成字体包
请见: [Font Patcher](#font-patcher) 的使用方法
* 这个选项适用于当你 __不想__ 使用 [fonts provided](#patched-fonts)的情况
* 你需要复制已经生成好的字体到你系统中正确的字体文件夹中
<h2 align="center" id="font-patcher">
<img src="images/nerd-fonts-patcher-logo.png" alt="Nerd Fonts Patcher">
</h2>
可以通过[VimDevIcons ➶][vim-devicons]打包你选中的字体:
* 需要: Python 2 (or Python 3), python-fontforge package (version 20141231 或者更新版本,请见 [安装说明](http://designwithfontforge.com/en-US/Installing_Fontforge.html))
* OSX上的替代安装方法为: `brew install fontforge`
* 使用:
```
./font-patcher PATH_TO_FONT
```
* 替代方案: 使用script flag通过FontForge binary来执行打包:
```
./fontforge -script font-patcher PATH_TO_FONT
```
```
usage: font-patcher [-h] [-v] [-s] [-l] [-q] [-w] [-c] [--fontawesome]
[--fontawesomeextension] [--fontlinux] [--octicons]
[--powersymbols] [--pomicons] [--powerline]
[--powerlineextra] [--custom [CUSTOM]]
[--postprocess [POSTPROCESS]]
[--progressbars | --no-progressbars] [--careful]
[-ext [EXTENSION]] [-out [OUTPUTDIR]]
font
Nerd Fonts Font Patcher: patches a given font with programming and development related glyphs
* Website: https://www.nerdfonts.com
* Version: 1.2.0
* Development Website: https://github.com/ryanoasis/nerd-fonts
* Changelog: https://github.com/ryanoasis/nerd-fonts/blob/master/changelog.md
positional arguments:
font The path to the font to patch (e.g., Inconsolata.otf)
optional arguments:
-h, --help 显示帮助信息和退出
-v, --version 显示程序版本号和退出
-s, --mono, --use-single-width-glyphs
设置生成的字体是single-width还是double-width (默认是 double-width)
-l, --adjust-line-height
设置是否调整 line heights (一般应该尝试 center powerline separators)
-q, --quiet, --shutup
不生成 verbose output
-w, --windows 将内部字体名称限制在31个字符内 (为了 Windows 兼容性)
-c, --complete 加入所有可用的字体
--fontawesome 加入 Font Awesome Glyphs字体 (http://fontawesome.io/)
--fontawesomeextension
加入 Font Awesome 补充字体 (https://andrelzgava.github.io/font-awesome-extension/)
--fontlinux 加入 Font Linux 字体 (https://github.com/Lukas-W/font-linux)
--octicons 加入 Octicons 字体 (https://octicons.github.com)
--powersymbols 加入 IEC Power Symbols (https://unicodepowersymbol.com/)
--pomicons 加入 Pomicon 字体 (https://github.com/gabrielelana/pomicons)
--powerline 加入 Powerline 字体
--powerlineextra 加入 Powerline 字体 (https://github.com/ryanoasis/powerline-extra-symbols)
--custom [CUSTOM] 指定一个自定义图标字体,所有新字形都会在不缩放的情况下被拷贝。
--postprocess [POSTPROCESS]
指定一个针对后续进程的脚本
--progressbars 显示每个Glyph Set的完成度进度条
--no-progressbars 不显示每个Glyph Set的完成度进度条
--careful 如果发现了已经存在的字形,不要对它进行复写
-ext [EXTENSION], --extension [EXTENSION]
更改字体文件的文件格式去创建新文件 (e.g., ttf, otf)
-out [OUTPUTDIR], --outputdir [OUTPUTDIR]
将修补后的字体文件输出到特定目录
```
#### 例子
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf -s -q
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf --use-single-width-glyphs --quiet
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf -w
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf --windows --quiet
./font-patcher Droid\ Sans\ Mono\ for\ Powerline.otf --windows --pomicons --quiet
./font-patcher Inconsolata.otf --fontawesome
./font-patcher Inconsolata.otf --fontawesome --octicons --pomicons
./font-patcher Inconsolata.otf
<a name="gotta-patch-em-all"></a>
## Gotta Patch 'em All Font Patcher!
* 针对贡献者和开发者使用
* 在未打包的路径中re-patches **所有** 字体:
```
./gotta-patch-em-all-font-patcher\!.sh
```
* 可以选择限制到特定字体名称模式:
```
./gotta-patch-em-all-font-patcher\!.sh Hermit
```
## 贡献
See [contributing.md](contributing.md)
## 不稳定的文件路径
:warning: 警告: 基于后续的新版本发布,文件路径有可能被改变 (特别是 **major** version bumps)
注意 **release** 分支 _不是_ ~~master分支~~因为路径会因为新版本发布而改变
* 举例:
* :white_check_mark: Use: <code>https\://github.com/ryanoasis/nerd-fonts/blob/<b>0.9.0</b>/patched-fonts/Hermit/Medium/complete/Hurmit%20Medium%20Nerd%20Font%20Complete.otf</code>
* :x: Instead of: <code>https\://github.com/ryanoasis/nerd-fonts/blob/<del>master</del>/patched-fonts/Hermit/Medium/complete/Hurmit%20Medium%20Nerd%20Font%20Complete.otf</code>
## 其他的好字体
* 一个包含更多好字体的列表,可惜的是,因为许可问题我们不能提供或分享它们:
* [Input Mono][input-mono] (license restriction)
* Possibly coming with external hosting :)
* [PragmataPro][pragmatapro] (not free)
* [Consolas][consolas] (proprietary)
## 项目目的
See [Wiki: Project Purpose][wiki-project-purpose]
## 更新日志
See [changelog.md](changelog.md)
## 许可
[MIT](LICENSE) © Ryan L McIntyre
<!--
Repo References
-->
[vim-devicons]:https://github.com/ryanoasis/vim-devicons "VimDevIcons Vim Plugin (external link) ➶"
[vorillaz-devicons]:https://vorillaz.github.io/devicons/
[font-awesome]:https://github.com/FortAwesome/Font-Awesome
[font-awesome-extension]:https://github.com/AndreLZGava/font-awesome-extension
[octicons]:https://github.com/primer/octicons
[font-linux]:https://github.com/Lukas-W/font-linux
[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons
[Seti-UI]:https://atom.io/themes/seti-ui
[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols
[wiki]:https://github.com/ryanoasis/nerd-fonts/wiki
[wiki-project-purpose]:https://github.com/ryanoasis/nerd-fonts/wiki/Project-Purpose
[repo]:https://github.com/ryanoasis/nerd-fonts
[gitter]:https://gitter.im/ryanoasis/nerd-fonts
[code-climate]:https://codeclimate.com/github/ryanoasis/nerd-fonts
<!--
Website References
-->
[website-iecpower]:https://unicodepowersymbol.com/
[Cheat Sheet]:https://nerdfonts.com/cheat-sheet
<!--
Link References
-->
[badge-version]:https://badge.fury.io/gh/ryanoasis%2Fnerd-fonts
[badge-gitter]:https://gitter.im/ryanoasis/nerd-fonts?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
[img-version-badge-with-logo]:https://img.shields.io/github/release/ryanoasis/nerd-fonts.svg?style=flat-square&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAAEAAAAAeCAYAAACc7RhZAAAABmJLR0QA%2FwD%2FAP%2BgvaeTAAAACXBIWXMAABJ0AAASdAHeZh94AAAAB3RJTUUH4AsTAw4JCvVTMQAABhNJREFUWMPtmX2MnFUVxs%2BdmZ3dYit0DaQKVfmwLaAxRQhIaqKpaCBSkCbQAkEUY0KFxFAkAomdaDeCCuJHqgQCQvnQjYABJEZJs2AhDS4xCIvgaDutsFmWmTLs7sz7dc%2Fv%2Bgd3zJvJu7O73bF2iTfZ7Mw79557nueee%2B5z7ivy%2F7Zwmqp%2BFRgBGoAFqsAu4HZVvTwMw%2BPelcCbzeb7gSeccw5QoO6macBuYJu1dt3Y2NhhCx68tfYc4E0P7o9RFJ1QLpeLqnop8BfXoQEB8JiqXlar1ZYsKOCjo6OLgJ%2B1Vl1VbyyVSiaDoLOAJzuQ8CKQAG%2Br6jXt482hCD5JktPy%2Bfx2Y8xK51wIXFIoFB6eYczp%2BXx%2BwBizVkTEOTcpIvtEJBaRpv%2BrOeeeE5E%2BEdmTz%2Bd%2FdUgBHxwczAFbgMSvXsNa%2B%2BnZjK1UKr1JkpwJ3AfsAP4KhB0iIxoeHi5IHMerVfU6a%2B0Xp6amjvpfEgDclnKwYa39zHR9a7XaEmvtOuBmYGcnsG3A3wT%2B7JxztVptiajqxtSPU8D3G43GsoMNvlQqGaDh%2FYittZ%2FP6hdF0QrgDmA%2FMAS8nfLf%2Bj3%2FMHCTqm4GbgO2AQNADLwM7AH%2B1Uoi506TPX8eRdEJB5mAt3gn421s%2F71cLhc9iBqwHXgQmAT2AT%2B01p6dlekrlUovMAiMAb9PYfydiIiJomhlsVh8Jcsp5xwi8oiq3trT0%2FNsJwDj4%2BPvWbp06epcLrfKGHO0iBwlIv0iskREFolIr4gURCQnIioiiYg0RGRCRMacc3tFJOece7lQKDzRluDOyOfz20TknyISicg5IvIocPfWrVufLpVKbqbcsn79%2Bq8bYzYYY8702L6Ty%2BW2tPbemFdUj7VFggL%2FAP4O7LLWXpAWJ6p6CfAL4AUffuqFyC7gGR9qs9qbqTnHgSFV%2FbaqfgP4A%2B%2B0Ma8AH5iamjryABPsZGueOI4%2F9p9jELhXRC4IguD4vr6%2Bi4wxtxhjCqlIeFVEHhWRk0TkAyLSZ4w50TkXiMiQc26nX83DjTGrROQUEfmIMSbnnLP%2BKApFpCoi4%2F7%2FlIgcISKrfcTM2Jxzcb1eP7K%2Fv39irgREUbSiWCy%2B6u08n8vlTk2LifM9%2B9%2F1mnsDoBmr81tr7ReAHaq6WVWvBR5p7V3gSVX9chzHH200GssqlUrvbJwLguCDqropndCmiY7n56Eo17bsqOrFWQnmDaAZBMFyT8IVgM1wIgSabc8Goyg6sRvFzgwE%2FGYeti%2FyNl4fHh4uZHX4GhCq6hXpyACCDEde8pFQUdUbu6j7z8qYazIljAbmQcAmb%2BMHc5Wla4DxDMfUOeeiKFrVxXJ3U8r%2B42EYHu%2BJWeefPTRXm5VKpbderx8B%2FMiH%2F1fm7FgQBMuB57LCspVNu6QE7%2FFAx0ZHRxel5j%2FGP39raGgoP0dSb1DVbwEjzjmXJMmpB%2BScFxS3txOQJMmaLhKw1wO9uT1HtebrJI8zwG8EGqp6vbe7N6uinGuYXpi%2BkLDWntsN8FEUrUqR%2BokMcnZ7ENtnc%2BS1VJ%2BXvkNZxM7H2RWt5Kiql3dp%2F1%2FnnfzbNNFxS0vvJ0lyegc732yJLy%2FEnvKfk65Ke%2BBuT8DmeRC5Evj1yMhID7Crk71Go7EMmPBgRuM4%2FnhGwj7D3xkOqOqVwJ9SSfWmrl9QHqjharW62JexMfBCHMcnt4qwycnJ93U4Js9LHYkR8NMkSdbU6%2FXDR0ZGesIw%2FJCqXgbsSAGPgYF57%2F3plBXwy7kKEuA1P7bsV%2FYu%2F%2F3HszyWn5lFTREC98VxfPJ%2FpXwNw%2FBYP9HO2fSP4%2FiktpUZDoLgGFX9Umu%2FVqvVxXNYgPW%2B9m96GV4HnlbVq6y1n5uYmOg%2FGDc4u4Gw2WwePYu%2B96dC8idenHzPV5FRkiSfWogvKm5oXVfv37%2F%2FvTNEwGpVvdpa%2B1mgBLzux6KqGxbknb1PZns8kH3AliRJPhkEwfJqtbo4CILl1tq1vq6%2FtyV0UtugYq09f0G%2FuAjD8NjpZHKHC4%2BHVPXicrlclHdDK5VKxlp7NnAr8Kx%2FEQEw6r%2FfqaobwjD88KHm%2B78BVBigctRUCFcAAAAASUVORK5CYII%3D
[img-gitter-badge]:https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square
[img-code-climate-badge]:https://img.shields.io/codeclimate/github/ryanoasis/nerd-fonts.svg?style=flat-square
[coc-badge]: https://img.shields.io/badge/code%20of-conduct-ff69b4.svg?style=flat-square
[prs-badge]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square&logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACWFBMVEXXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWkrXWko2FeWCAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAI28AACNvATX8B%2FsAAAAHdElNRQfhBQMBMCLAfV85AAAAi0lEQVQ4y2NgIBYszkPmJc5ORZE9DgEJqNxmmPS%2B43AA4h5B5TIwbD5%2BHFnoKCoXYSBMBIW7CF0eAxChoPM4ARXHB4GCZEIKKA8H%2FCoWE1LAwIBfBVp6wQA1DPhVzMJMcyggCVuqxGI%2FLhWY6Z6QPKoK7HmHkDwDwxYC8gwMdSDprXiz6PHjpQxUBgCLDfI7GXNh5gAAAABJRU5ErkJggg%3D%3D
[consolas]:https://www.microsoft.com/typography/fonts/family.aspx?FID=300
[input-mono]:http://input.djr.com/download/
[pragmatapro]:https://www.fsd.it/shop/fonts/pragmatapro/
[release]:https://github.com/ryanoasis/nerd-fonts/releases/latest "Latest Release (external link) ➶"
[coc]:https://github.com/ryanoasis/nerd-fonts/blob/master/code_of_conduct.md "Contributor Covenant Code of Conduct"
[prs]:http://makeapullrequest.com "Make a Pull Request (external link) ➶"
<!--
Font repos
-->
[f-hack]:https://github.com/chrissimpkins/Hack
[f-a-pro]:https://www.marksimonson.com/fonts/view/anonymous-pro
[f-3270]:https://github.com/rbanffy/3270font
[f-source]:https://github.com/adobe-fonts/source-code-pro
[f-liberation]:https://pagure.io/liberation-fonts
[f-terminus]:http://terminus-font.sourceforge.net
[f-fira-mono]:https://github.com/mozilla/Fira
[f-fira-code]:https://github.com/tonsky/FiraCode
[f-monoid]:https://github.com/larsenwork/monoid
[f-iosevka]:https://github.com/be5invis/Iosevka
[f-jetbrains-mono]:https://github.com/JetBrains/JetBrainsMono
[f-fant]:https://github.com/belluzj/fantasque-sans
[f-share]:https://fonts.google.com/specimen/Share+Tech+Mono
[f-space]:https://fonts.google.com/specimen/Space+Mono
[f-gohu]:http://font.gohu.org/
[f-mononoki]:https://madmalik.github.io/mononoki/
[f-hasklig]:https://github.com/i-tu/Hasklig
<!--
Patched Font internal links
-->
[p-3270]:patched-fonts/3270
[p-anonymous-pro]:patched-fonts/AnonymousPro
[p-aurulent]:patched-fonts/AurulentSansMono
[p-bitstream]:patched-fonts/BitstreamVeraSansMono
[p-dejavu]:patched-fonts/DejaVuSansMono
[p-droid]:patched-fonts/DroidSansMono
[p-fantasque]:patched-fonts/FantasqueSansMono
[p-fira-code]:patched-fonts/FiraCode
[p-fira-mono]:patched-fonts/FiraMono
[p-heavy-data]:patched-fonts/HeavyData
[p-hermit]:patched-fonts/Hermit
[p-inconsolata]:patched-fonts/Inconsolata
[p-inconsolata-go]:patched-fonts/InconsolataGo
[p-iosevka]:patched-fonts/Iosevka
[p-jetbrains-mono]:patched-fonts/JetBrainsMono
[p-hack]:patched-fonts/Hack
[p-lekton]:patched-fonts/Lekton
[p-liberation]:patched-fonts/LiberationMono
[p-meslo]:patched-fonts/Meslo
[p-monofur]:patched-fonts/Monofur
[p-monoid]:patched-fonts/Monoid
[p-mplus]:patched-fonts/MPlus
[p-profont]:patched-fonts/ProFont
[p-proggy-clean]:patched-fonts/ProggyClean
[p-roboto]:patched-fonts/RobotoMono
[p-source-code-pro]:patched-fonts/SourceCodePro
[p-terminus]:patched-fonts/Terminus
[p-ubuntu]:patched-fonts/Ubuntu
[p-ubuntu-mono]:patched-fonts/UbuntuMono
[p-share-tech-mono]:patched-fonts/ShareTechMono
[p-space-mono]:patched-fonts/SpaceMono
[p-gohu]:patched-fonts/Gohu
[p-mononoki]:patched-fonts/Mononoki
[p-code-nr]:patched-fonts/CodeNewRoman
[p-hasklig]:patched-fonts/Hasklig
<!--
Quick Link Images
-->
[ql-1]:images/nerd-fonts-character-logo-md.png "Latest Release (external link) ➶"
[ql-2]:images/nerd-fonts-character-logo-md.png "↓ View Patched Fonts List ↓"
[ql-3]:images/nerd-fonts-patcher-logo-md.png "↓ Font Patcher Details ↓"
[ql-4]:https://raw.githubusercontent.com/wiki/ryanoasis/vim-devicons/screenshots/v1.0.0/branding-logo-sm.png "VimDevIcons Vim Plugin (external link) ➶"
[ql-5]:images/nerd-fonts-character-logo-md.png "Font Package Archive (Zip) Downloads (external link) ➶"
<!--
Patched Font Statuses
-->
[w-top]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/windows-pass-sm.png "↓ Windows Compatibility Status ↓"
[l-top]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/linux-pass-sm.png "↓ Linux Compatibility Status ↓"
[m-top]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/mac-pass-sm.png "↓ macOS (OSX) Compatibility Status ↓"
[w]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/windows-pass-sm.png "Windows status is working ☺"
[l]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/linux-pass-sm.png "Linux status is working ☺"
[m]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/mac-pass-sm.png "macOS (OSX) status is working ☺"
[w2]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/windows-unknown-sm.png "Windows status is Unknown/Un-tested"
[l2]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/linux-unknown-sm.png "Linux status is Unknown/Un-tested"
[m2]:https://github.com/ryanoasis/nerd-fonts/wiki/screenshots/v1.0.x/mac-unknown-sm.png "macOS (OSX) status is Unknown/Un-tested"
[s-iosevka]:https://github.com/ryanoasis/nerd-fonts/issues/83

View file

@ -1,15 +0,0 @@
# Nerd Fonts
This is font-patcher python script (and required source files) from a Nerd Fonts release.
## Running
* To execute run: `fontforge --script ./font-patcher --complete <YOUR FONT FILE>`
* For more CLI options and help: `fontforge --script ./font-patcher --help`
## Further info
For more information see:
* https://github.com/ryanoasis/nerd-fonts/
* https://github.com/ryanoasis/nerd-fonts/releases/latest/

View file

@ -1,8 +0,0 @@
# Nerd Fonts
This is an archived font from a Nerd Fonts release.
For more information see:
* https://github.com/ryanoasis/nerd-fonts/
* https://github.com/ryanoasis/nerd-fonts/releases/latest/

View file

@ -1,3 +0,0 @@
[Subtables]
ligatures: [
"Single Substitution lookup 1 subtable" ]

View file

@ -1,59 +0,0 @@
SplineFontDB: 3.0
FontName: Symbols-1000-em
FullName: Symbols-1000-em
FamilyName: Symbols
Weight: Regular
Copyright: Copyright (c) 2016, Ryan McIntyre
Version: 001.000
ItalicAngle: 0
UnderlinePosition: -100
UnderlineWidth: 50
Ascent: 800
Descent: 200
InvalidEm: 0
LayerCount: 2
Layer: 0 0 "Back" 1
Layer: 1 0 "Fore" 0
XUID: [1021 913 -638292798 6571593]
FSType: 0
OS2Version: 0
OS2_WeightWidthSlopeOnly: 0
OS2_UseTypoMetrics: 1
CreationTime: 1480466430
ModificationTime: 1480467813
PfmFamily: 17
TTFWeight: 400
TTFWidth: 5
LineGap: 90
VLineGap: 0
OS2TypoAscent: 0
OS2TypoAOffset: 1
OS2TypoDescent: 0
OS2TypoDOffset: 1
OS2TypoLinegap: 90
OS2WinAscent: 0
OS2WinAOffset: 1
OS2WinDescent: 0
OS2WinDOffset: 1
HheadAscent: 0
HheadAOffset: 1
HheadDescent: 0
HheadDOffset: 1
OS2Vendor: 'PfEd'
MarkAttachClasses: 1
DEI: 91125
LangName: 1033
Encoding: UnicodeFull
UnicodeInterp: none
NameList: AGL For New Fonts
DisplaySize: -72
AntiAlias: 1
FitToEm: 0
WinInfo: 64 8 8
OnlyBitmaps: 1
BeginPrivate: 0
EndPrivate
TeXData: 1 0 0 346030 173015 115343 0 1048576 115343 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144
BeginChars: 1114112 0
EndChars
EndSplineFont

View file

@ -1,59 +0,0 @@
SplineFontDB: 3.0
FontName: Symbols-2048-em
FullName: Symbols-2048-em
FamilyName: Symbols
Weight: Regular
Copyright: Copyright (c) 2016, Ryan McIntyre
Version: 001.000
ItalicAngle: 0
UnderlinePosition: -204
UnderlineWidth: 102
Ascent: 1638
Descent: 410
InvalidEm: 0
LayerCount: 2
Layer: 0 0 "Back" 1
Layer: 1 0 "Fore" 0
XUID: [1021 913 -638292798 6571593]
FSType: 0
OS2Version: 0
OS2_WeightWidthSlopeOnly: 0
OS2_UseTypoMetrics: 1
CreationTime: 1480466430
ModificationTime: 1480467841
PfmFamily: 17
TTFWeight: 400
TTFWidth: 5
LineGap: 184
VLineGap: 0
OS2TypoAscent: 0
OS2TypoAOffset: 1
OS2TypoDescent: 0
OS2TypoDOffset: 1
OS2TypoLinegap: 184
OS2WinAscent: 0
OS2WinAOffset: 1
OS2WinDescent: 0
OS2WinDOffset: 1
HheadAscent: 0
HheadAOffset: 1
HheadDescent: 0
HheadDOffset: 1
OS2Vendor: 'PfEd'
MarkAttachClasses: 1
DEI: 91125
LangName: 1033
Encoding: UnicodeFull
UnicodeInterp: none
NameList: AGL For New Fonts
DisplaySize: -72
AntiAlias: 1
FitToEm: 0
WinInfo: 64 8 8
OnlyBitmaps: 1
BeginPrivate: 0
EndPrivate
TeXData: 1 0 0 346030 173015 115343 0 1048576 115343 783286 444596 497025 792723 393216 433062 380633 303038 157286 324010 404750 52429 2506097 1059062 262144
BeginChars: 1114112 0
EndChars
EndSplineFont

View file

@ -1,395 +0,0 @@
Attribution 4.0 International
=======================================================================
Creative Commons Corporation ("Creative Commons") is not a law firm and
does not provide legal services or legal advice. Distribution of
Creative Commons public licenses does not create a lawyer-client or
other relationship. Creative Commons makes its licenses and related
information available on an "as-is" basis. Creative Commons gives no
warranties regarding its licenses, any material licensed under their
terms and conditions, or any related information. Creative Commons
disclaims all liability for damages resulting from their use to the
fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and
conditions that creators and other rights holders may use to share
original works of authorship and other material subject to copyright
and certain other rights specified in the public license below. The
following considerations are for informational purposes only, are not
exhaustive, and do not form part of our licenses.
Considerations for licensors: Our public licenses are
intended for use by those authorized to give the public
permission to use material in ways otherwise restricted by
copyright and certain other rights. Our licenses are
irrevocable. Licensors should read and understand the terms
and conditions of the license they choose before applying it.
Licensors should also secure all rights necessary before
applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any
material not subject to the license. This includes other CC-
licensed material, or material used under an exception or
limitation to copyright. More considerations for licensors:
wiki.creativecommons.org/Considerations_for_licensors
Considerations for the public: By using one of our public
licenses, a licensor grants the public permission to use the
licensed material under specified terms and conditions. If
the licensor's permission is not necessary for any reason--for
example, because of any applicable exception or limitation to
copyright--then that use is not regulated by the license. Our
licenses grant only permissions under copyright and certain
other rights that a licensor has authority to grant. Use of
the licensed material may still be restricted for other
reasons, including because others have copyright or other
rights in the material. A licensor may make special requests,
such as asking that all changes be marked or described.
Although not required by our licenses, you are encouraged to
respect those requests where reasonable. More_considerations
for the public:
wiki.creativecommons.org/Considerations_for_licensees
=======================================================================
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree
to be bound by the terms and conditions of this Creative Commons
Attribution 4.0 International Public License ("Public License"). To the
extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of
these terms and conditions, and the Licensor grants You such rights in
consideration of benefits the Licensor receives from making the
Licensed Material available under these terms and conditions.
Section 1 -- Definitions.
a. Adapted Material means material subject to Copyright and Similar
Rights that is derived from or based upon the Licensed Material
and in which the Licensed Material is translated, altered,
arranged, transformed, or otherwise modified in a manner requiring
permission under the Copyright and Similar Rights held by the
Licensor. For purposes of this Public License, where the Licensed
Material is a musical work, performance, or sound recording,
Adapted Material is always produced where the Licensed Material is
synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright
and Similar Rights in Your contributions to Adapted Material in
accordance with the terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights
closely related to copyright including, without limitation,
performance, broadcast, sound recording, and Sui Generis Database
Rights, without regard to how the rights are labeled or
categorized. For purposes of this Public License, the rights
specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the
absence of proper authority, may not be circumvented under laws
fulfilling obligations under Article 11 of the WIPO Copyright
Treaty adopted on December 20, 1996, and/or similar international
agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or
any other exception or limitation to Copyright and Similar Rights
that applies to Your use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database,
or other material to which the Licensor applied this Public
License.
g. Licensed Rights means the rights granted to You subject to the
terms and conditions of this Public License, which are limited to
all Copyright and Similar Rights that apply to Your use of the
Licensed Material and that the Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights
under this Public License.
i. Share means to provide material to the public by any means or
process that requires permission under the Licensed Rights, such
as reproduction, public display, public performance, distribution,
dissemination, communication, or importation, and to make material
available to the public including in ways that members of the
public may access the material from a place and at a time
individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright
resulting from Directive 96/9/EC of the European Parliament and of
the Council of 11 March 1996 on the legal protection of databases,
as amended and/or succeeded, as well as other essentially
equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights
under this Public License. Your has a corresponding meaning.
Section 2 -- Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License,
the Licensor hereby grants You a worldwide, royalty-free,
non-sublicensable, non-exclusive, irrevocable license to
exercise the Licensed Rights in the Licensed Material to:
a. reproduce and Share the Licensed Material, in whole or
in part; and
b. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where
Exceptions and Limitations apply to Your use, this Public
License does not apply, and You do not need to comply with
its terms and conditions.
3. Term. The term of this Public License is specified in Section
6(a).
4. Media and formats; technical modifications allowed. The
Licensor authorizes You to exercise the Licensed Rights in
all media and formats whether now known or hereafter created,
and to make technical modifications necessary to do so. The
Licensor waives and/or agrees not to assert any right or
authority to forbid You from making technical modifications
necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective
Technological Measures. For purposes of this Public License,
simply making modifications authorized by this Section 2(a)
(4) never produces Adapted Material.
5. Downstream recipients.
a. Offer from the Licensor -- Licensed Material. Every
recipient of the Licensed Material automatically
receives an offer from the Licensor to exercise the
Licensed Rights under the terms and conditions of this
Public License.
b. No downstream restrictions. You may not offer or impose
any additional or different terms or conditions on, or
apply any Effective Technological Measures to, the
Licensed Material if doing so restricts exercise of the
Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or
may be construed as permission to assert or imply that You
are, or that Your use of the Licensed Material is, connected
with, or sponsored, endorsed, or granted official status by,
the Licensor or others designated to receive attribution as
provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not
licensed under this Public License, nor are publicity,
privacy, and/or other similar personality rights; however, to
the extent possible, the Licensor waives and/or agrees not to
assert any such rights held by the Licensor to the limited
extent necessary to allow You to exercise the Licensed
Rights, but not otherwise.
2. Patent and trademark rights are not licensed under this
Public License.
3. To the extent possible, the Licensor waives any right to
collect royalties from You for the exercise of the Licensed
Rights, whether directly or through a collecting society
under any voluntary or waivable statutory or compulsory
licensing scheme. In all other cases the Licensor expressly
reserves any right to collect such royalties.
Section 3 -- License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the
following conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified
form), You must:
a. retain the following if it is supplied by the Licensor
with the Licensed Material:
i. identification of the creator(s) of the Licensed
Material and any others designated to receive
attribution, in any reasonable manner requested by
the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of
warranties;
v. a URI or hyperlink to the Licensed Material to the
extent reasonably practicable;
b. indicate if You modified the Licensed Material and
retain an indication of any previous modifications; and
c. indicate the Licensed Material is licensed under this
Public License, and include the text of, or the URI or
hyperlink to, this Public License.
2. You may satisfy the conditions in Section 3(a)(1) in any
reasonable manner based on the medium, means, and context in
which You Share the Licensed Material. For example, it may be
reasonable to satisfy the conditions by providing a URI or
hyperlink to a resource that includes the required
information.
3. If requested by the Licensor, You must remove any of the
information required by Section 3(a)(1)(A) to the extent
reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's
License You apply must not prevent recipients of the Adapted
Material from complying with this Public License.
Section 4 -- Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that
apply to Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
to extract, reuse, reproduce, and Share all or a substantial
portion of the contents of the database;
b. if You include all or a substantial portion of the database
contents in a database in which You have Sui Generis Database
Rights, then the database in which You have Sui Generis Database
Rights (but not its individual contents) is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share
all or a substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not
replace Your obligations under this Public License where the Licensed
Rights include other Copyright and Similar Rights.
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
c. The disclaimer of warranties and limitation of liability provided
above shall be interpreted in a manner that, to the extent
possible, most closely approximates an absolute disclaimer and
waiver of all liability.
Section 6 -- Term and Termination.
a. This Public License applies for the term of the Copyright and
Similar Rights licensed here. However, if You fail to comply with
this Public License, then Your rights under this Public License
terminate automatically.
b. Where Your right to use the Licensed Material has terminated under
Section 6(a), it reinstates:
1. automatically as of the date the violation is cured, provided
it is cured within 30 days of Your discovery of the
violation; or
2. upon express reinstatement by the Licensor.
For the avoidance of doubt, this Section 6(b) does not affect any
right the Licensor may have to seek remedies for Your violations
of this Public License.
c. For the avoidance of doubt, the Licensor may also offer the
Licensed Material under separate terms or conditions or stop
distributing the Licensed Material at any time; however, doing so
will not terminate this Public License.
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
License.
Section 7 -- Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different
terms or conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the
Licensed Material not stated herein are separate from and
independent of the terms and conditions of this Public License.
Section 8 -- Interpretation.
a. For the avoidance of doubt, this Public License does not, and
shall not be interpreted to, reduce, limit, restrict, or impose
conditions on any use of the Licensed Material that could lawfully
be made without permission under this Public License.
b. To the extent possible, if any provision of this Public License is
deemed unenforceable, it shall be automatically reformed to the
minimum extent necessary to make it enforceable. If the provision
cannot be reformed, it shall be severed from this Public License
without affecting the enforceability of the remaining terms and
conditions.
c. No term or condition of this Public License will be waived and no
failure to comply consented to unless expressly agreed to by the
Licensor.
d. Nothing in this Public License constitutes or may be interpreted
as a limitation upon, or waiver of, any privileges and immunities
that apply to the Licensor or You, including from the legal
processes of any jurisdiction or authority.
=======================================================================
Creative Commons is not a party to its public
licenses. Notwithstanding, Creative Commons may elect to apply one of
its public licenses to material it publishes and in those instances
will be considered the “Licensor.” The text of the Creative Commons
public licenses is dedicated to the public domain under the CC0 Public
Domain Dedication. Except for the limited purpose of indicating that
material is shared under a Creative Commons public license or as
otherwise permitted by the Creative Commons policies published at
creativecommons.org/policies, Creative Commons does not authorize the
use of the trademark "Creative Commons" or any other trademark or logo
of Creative Commons without its prior written consent including,
without limitation, in connection with any unauthorized modifications
to any of its public licenses or any other arrangements,
understandings, or agreements concerning use of licensed material. For
the avoidance of doubt, this paragraph does not form part of the
public licenses.
Creative Commons may be contacted at creativecommons.org.

View file

@ -1,34 +0,0 @@
Font Awesome Free License
-------------------------
Font Awesome Free is free, open source, and GPL friendly. You can use it for
commercial projects, open source projects, or really almost whatever you want.
Full Font Awesome Free license: https://fontawesome.com/license/free.
# Icons: CC BY 4.0 License (https://creativecommons.org/licenses/by/4.0/)
In the Font Awesome Free download, the CC BY 4.0 license applies to all icons
packaged as SVG and JS file types.
# Fonts: SIL OFL 1.1 License (https://scripts.sil.org/OFL)
In the Font Awesome Free download, the SIL OFL license applies to all icons
packaged as web and desktop font files.
# Code: MIT License (https://opensource.org/licenses/MIT)
In the Font Awesome Free download, the MIT license applies to all non-font and
non-icon files.
# Attribution
Attribution is required by MIT, SIL OFL, and CC BY licenses. Downloaded Font
Awesome Free files already contain embedded comments with sufficient
attribution, so you shouldn't need to do anything additional when using these
files normally.
We've kept attribution comments terse, so we ask that you do not actively work
to remove them from files, especially code. They're a great way for folks to
learn about Font Awesome.
# Brand Icons
All brand icons are trademarks of their respective owners. The use of these
trademarks does not indicate endorsement of the trademark holder by Font
Awesome, nor vice versa. **Please do not use brand logos for any purpose except
to represent the company, product, or service to which they refer.**

View file

@ -1,21 +0,0 @@
Copyright 2013 Kim Silkebækken and other contributors
https://github.com/powerline/powerline
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -1,436 +0,0 @@
OFL FAQ - Frequently Asked Questions about the SIL Open Font License (OFL)
Version 1.1-update6 - December 2020
The OFL FAQ is copyright (c) 2005-2020 SIL International.
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
(See http://scripts.sil.org/OFL for updates)
CONTENTS OF THIS FAQ
1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL
2 USING OFL FONTS FOR WEB PAGES AND ONLINE WEB FONT SERVICES
3 MODIFYING OFL-LICENSED FONTS
4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL
5 CHOOSING RESERVED FONT NAMES
6 ABOUT THE FONTLOG
7 MAKING CONTRIBUTIONS TO OFL PROJECTS
8 ABOUT THE LICENSE ITSELF
9 ABOUT SIL INTERNATIONAL
APPENDIX A - FONTLOG EXAMPLE
1 USING AND DISTRIBUTING FONTS LICENSED UNDER THE OFL
1.1 Can I use the fonts for a book or other print publication, to create logos or other graphics or even to manufacture objects based on their outlines?
Yes. You are very welcome to do so. Authors of fonts released under the OFL allow you to use their font software as such for any kind of design work. No additional license or permission is required, unlike with some other licenses. Some examples of these uses are: logos, posters, business cards, stationery, video titling, signage, t-shirts, personalised fabric, 3D-printed/laser-cut shapes, sculptures, rubber stamps, cookie cutters and lead type.
1.1.1 Does that restrict the license or distribution of that artwork?
No. You remain the author and copyright holder of that newly derived graphic or object. You are simply using an open font in the design process. It is only when you redistribute, bundle or modify the font itself that other conditions of the license have to be respected (see below for more details).
1.1.2 Is any kind of acknowledgement required?
No. Font authors may appreciate being mentioned in your artwork's acknowledgements alongside the name of the font, possibly with a link to their website, but that is not required.
1.2 Can the fonts be included with Free/Libre and Open Source Software collections such as GNU/Linux and BSD distributions and repositories?
Yes! Fonts licensed under the OFL can be freely included alongside other software under FLOSS (Free/Libre and Open Source Software) licenses. Since fonts are typically aggregated with, not merged into, existing software, there is little need to be concerned about incompatibility with existing software licenses. You may also repackage the fonts and the accompanying components in a .rpm or .deb package (or other similar package formats or installers) and include them in distribution CD/DVDs and online repositories. (Also see section 5.9 about rebuilding from source.)
1.3 I want to distribute the fonts with my program. Does this mean my program also has to be Free/Libre and Open Source Software?
No. Only the portions based on the Font Software are required to be released under the OFL. The intent of the license is to allow aggregation or bundling with software under restricted licensing as well.
1.4 Can I sell a software package that includes these fonts?
Yes, you can do this with both the Original Version and a Modified Version of the fonts. Examples of bundling made possible by the OFL would include: word processors, design and publishing applications, training and educational software, games and entertainment software, mobile device applications, etc.
1.5 Can I include the fonts on a CD of freeware or commercial fonts?
Yes, as long some other font or software is also on the disk, so the OFL font is not sold by itself.
1.6 Why won't the OFL let me sell the fonts alone?
The intent is to keep people from making money by simply redistributing the fonts. The only people who ought to profit directly from the fonts should be the original authors, and those authors have kindly given up potential direct income to distribute their fonts under the OFL. Please honour and respect their contribution!
1.7 What about sharing OFL fonts with friends on a CD, DVD or USB stick?
You are very welcome to share open fonts with friends, family and colleagues through removable media. Just remember to include the full font package, including any copyright notices and licensing information as available in OFL.txt. In the case where you sell the font, it has to come bundled with software.
1.8 Can I host the fonts on a web site for others to use?
Yes, as long as you make the full font package available. In most cases it may be best to point users to the main site that distributes the Original Version so they always get the most recent stable and complete version. See also discussion of web fonts in Section 2.
1.9 Can I host the fonts on a server for use over our internal network?
Yes. If the fonts are transferred from the server to the client computer by means that allow them to be used even if the computer is no longer attached to the network, the full package (copyright notices, licensing information, etc.) should be included.
1.10 Does the full OFL license text always need to accompany the font?
The only situation in which an OFL font can be distributed without the text of the OFL (either in a separate file or in font metadata), is when a font is embedded in a document or bundled within a program. In the case of metadata included within a font, it is legally sufficient to include only a link to the text of the OFL on http://scripts.sil.org/OFL, but we strongly recommend against this. Most modern font formats include metadata fields that will accept the full OFL text, and full inclusion increases the likelihood that users will understand and properly apply the license.
1.11 What do you mean by 'embedding'? How does that differ from other means of distribution?
By 'embedding' we mean inclusion of the font in a document or file in a way that makes extraction (and redistribution) difficult or clearly discouraged. In many cases the names of embedded fonts might also not be obvious to those reading the document, the font data format might be altered, and only a subset of the font - only the glyphs required for the text - might be included. Any other means of delivering a font to another person is considered 'distribution', and needs to be accompanied by any copyright notices and licensing information available in OFL.txt.
1.12 So can I embed OFL fonts in my document?
Yes, either in full or a subset. The restrictions regarding font modification and redistribution do not apply, as the font is not intended for use outside the document.
1.13 Does embedding alter the license of the document itself?
No. Referencing or embedding an OFL font in any document does not change the license of the document itself. The requirement for fonts to remain under the OFL does not apply to any document created using the fonts and their derivatives. Similarly, creating any kind of graphic using a font under OFL does not make the resulting artwork subject to the OFL.
1.14 If OFL fonts are extracted from a document in which they are embedded (such as a PDF file), what can be done with them? Is this a risk to author(s)?
The few utilities that can extract fonts embedded in a PDF will typically output limited amounts of outlines - not a complete font. To create a working font from this method is much more difficult and time consuming than finding the source of the original OFL font. So there is little chance that an OFL font would be extracted and redistributed inappropriately through this method. Even so, copyright laws address any misrepresentation of authorship. All Font Software released under the OFL and marked as such by the author(s) is intended to remain under this license regardless of the distribution method, and cannot be redistributed under any other license. We strongly discourage any font extraction - we recommend directly using the font sources instead - but if you extract font outlines from a document, please be considerate: respect the work of the author(s) and the licensing model.
1.15 What about distributing fonts with a document? Within a compressed folder structure? Is it distribution, bundling or embedding?
Certain document formats may allow the inclusion of an unmodified font within their file structure which may consist of a compressed folder containing the various resources forming the document (such as pictures and thumbnails). Including fonts within such a structure is understood as being different from embedding but rather similar to bundling (or mere aggregation) which the license explicitly allows. In this case the font is conveyed unchanged whereas embedding a font usually transforms it from the original format. The OFL does not allow anyone to extract the font from such a structure to then redistribute it under another license. The explicit permission to redistribute and embed does not cancel the requirement for the Font Software to remain under the license chosen by its author(s). Even if the font travels inside the document as one of its assets, it should not lose its authorship information and licensing.
1.16 What about ebooks shipping with open fonts?
The requirements differ depending on whether the fonts are linked, embedded or distributed (bundled or aggregated). Some ebook formats use web technologies to do font linking via @font-face, others are designed for font embedding, some use fonts distributed with the document or reading software, and a few rely solely on the fonts already present on the target system. The license requirements depend on the type of inclusion as discussed in 1.15.
1.17 Can Font Software released under the OFL be subject to URL-based access restrictions methods or DRM (Digital Rights Management) mechanisms?
Yes, but these issues are out-of-scope for the OFL. The license itself neither encourages their use nor prohibits them since such mechanisms are not implemented in the components of the Font Software but through external software. Such restrictions are put in place for many different purposes corresponding to various usage scenarios. One common example is to limit potentially dangerous cross-site scripting attacks. However, in the spirit of libre/open fonts and unrestricted writing systems, we strongly encourage open sharing and reuse of OFL fonts, and the establishment of an environment where such restrictions are unnecessary. Note that whether you wish to use such mechanisms or you prefer not to, you must still abide by the rules set forth by the OFL when using fonts released by their authors under this license. Derivative fonts must be licensed under the OFL, even if they are part of a service for which you charge fees and/or for which access to source code is restricted. You may not sell the fonts on their own - they must be part of a larger software package, bundle or subscription plan. For example, even if the OFL font is distributed in a software package or via an online service using a DRM mechanism, the user would still have the right to extract that font, use, study, modify and redistribute it under the OFL.
1.18 I've come across a font released under the OFL. How can I easily get more information about the Original Version? How can I know where it stands compared to the Original Version or other Modified Versions?
Consult the copyright statement(s) in the license for ways to contact the original authors. Consult the FONTLOG (see section 6 for more details and examples) for information on how the font differs from the Original Version, and get in touch with the various contributors via the information in the acknowledgement section. Please consider using the Original Versions of the fonts whenever possible.
1.19 What do you mean in condition 4 of the OFL's permissions and conditions? Can you provide examples of abusive promotion / endorsement / advertisement vs. normal acknowledgement?
The intent is that the goodwill and reputation of the author(s) should not be used in a way that makes it sound like the original author(s) endorse or approve of a specific Modified Version or software bundle. For example, it would not be right to advertise a word processor by naming the author(s) in a listing of software features, or to promote a Modified Version on a web site by saying "designed by ...". However, it would be appropriate to acknowledge the author(s) if your software package has a list of people who deserve thanks. We realize that this can seem to be a grey area, but the standard used to judge an acknowledgement is that if the acknowledgement benefits the author(s) it is allowed, but if it primarily benefits other parties, or could reflect poorly on the author(s), then it is not.
1.20 I'm writing a small app for mobile platforms, do I need to include the whole package?
If you bundle a font under the OFL with your mobile app you must comply with the terms of the license. At a minimum you must include the copyright statement, the license notice and the license text. A mention of this information in your About box or Changelog, with a link to where the font package is from, is good practice, and the extra space needed to carry these items is very small. You do not, however, need to include the full contents of the font package - only the fonts you use and the copyright and license that apply to them. For example, if you only use the regular weight in your app, you do not need to include the italic and bold versions.
1.21 What about including OFL fonts by default in my firmware or dedicated operating system?
Many such systems are restricted and turned into appliances so that users cannot study or modify them. Using open fonts to increase quality and language coverage is a great idea, but you need to be aware that if there is a way for users to extract fonts you cannot legally prevent them from doing that. The fonts themselves, including any changes you make to them, must be distributed under the OFL even if your firmware has a more restrictive license. If you do transform the fonts and change their formats when you include them in your firmware you must respect any names reserved by the font authors via the RFN mechanism and pick your own font name. Alternatively if you directly add a font under the OFL to the font folder of your firmware without modifying or optimizing it you are simply bundling the font like with any other software collection, and do not need to make any further changes.
1.22 Can I make and publish CMS themes or templates that use OFL fonts? Can I include the fonts themselves in the themes or templates? Can I sell the whole package?
Yes, you are very welcome to integrate open fonts into themes and templates for your preferred CMS and make them more widely available. Remember that you can only sell the fonts and your CMS add-on as part of a software bundle. (See 1.4 for details and examples about selling bundles).
1.23 Can OFL fonts be included in services that deliver fonts to the desktop from remote repositories? Even if they contain both OFL and non-OFL fonts?
Yes. Some foundries have set up services to deliver fonts to subscribers directly to desktops from their online repositories; similarly, plugins are available to preview and use fonts directly in your design tool or publishing suite. These services may mix open and restricted fonts in the same channel, however they should make a clear distinction between them to users. These services should also not hinder users (such as through DRM or obfuscation mechanisms) from extracting and using the OFL fonts in other environments, or continuing to use OFL fonts after subscription terms have ended, as those uses are specifically allowed by the OFL.
1.24 Can services that provide or distribute OFL fonts restrict my use of them?
No. The terms of use of such services cannot replace or restrict the terms of the OFL, as that would be the same as distributing the fonts under a different license, which is not allowed. You are still entitled to use, modify and redistribute them as the original authors have intended outside of the sole control of that particular distribution channel. Note, however, that the fonts provided by these services may differ from the Original Versions.
2 USING OFL FONTS FOR WEBPAGES AND ONLINE WEB FONT SERVICES
NOTE: This section often refers to a separate paper on 'Web Fonts & RFNs'. This is available at http://scripts.sil.org/OFL_web_fonts_and_RFNs
2.1 Can I make webpages using these fonts?
Yes! Go ahead! Using CSS (Cascading Style Sheets) is recommended. Your three best options are:
- referring directly in your stylesheet to open fonts which may be available on the user's system
- providing links to download the full package of the font - either from your own website or from elsewhere - so users can install it themselves
- using @font-face to distribute the font directly to browsers. This is recommended and explicitly allowed by the licensing model because it is distribution. The font file itself is distributed with other components of the webpage. It is not embedded in the webpage but referenced through a web address which will cause the browser to retrieve and use the corresponding font to render the webpage (see 1.11 and 1.15 for details related to embedding fonts into documents). As you take advantage of the @font-face cross-platform standard, be aware that web fonts are often tuned for a web environment and not intended for installation and use outside a browser. The reasons in favour of using web fonts are to allow design of dynamic text elements instead of static graphics, to make it easier for content to be localized and translated, indexed and searched, and all this with cross-platform open standards without depending on restricted extensions or plugins. You should check the CSS cascade (the order in which fonts are being called or delivered to your users) when testing.
2.2 Can I make and use WOFF (Web Open Font Format) versions of OFL fonts?
Yes, but you need to be careful. A change in font format normally is considered modification, and Reserved Font Names (RFNs) cannot be used. Because of the design of the WOFF format, however, it is possible to create a WOFF version that is not considered modification, and so would not require a name change. You are allowed to create, use and distribute a WOFF version of an OFL font without changing the font name, but only if:
- the original font data remains unchanged except for WOFF compression, and
- WOFF-specific metadata is either omitted altogether or present and includes, unaltered, the contents of all equivalent metadata in the original font.
If the original font data or metadata is changed, or the WOFF-specific metadata is incomplete, the font must be considered a Modified Version, the OFL restrictions would apply and the name of the font must be changed: any RFNs cannot be used and copyright notices and licensing information must be included and cannot be deleted or modified. You must come up with a unique name - we recommend one corresponding to your domain or your particular web application. Be aware that only the original author(s) can use RFNs. This is to prevent collisions between a derivative tuned to your audience and the original upstream version and so to reduce confusion.
Please note that most WOFF conversion tools and online services do not meet the two requirements listed above, and so their output must be considered a Modified Version. So be very careful and check to be sure that the tool or service you're using is compressing unchanged data and completely and accurately reflecting the original font metadata.
2.3 What about other web font formats such as EOT/EOTLite/CWT/etc.?
In most cases these formats alter the original font data more than WOFF, and do not completely support appropriate metadata, so their use must be considered modification and RFNs may not be used. However, there may be certain formats or usage scenarios that may allow the use of RFNs. See http://scripts.sil.org/OFL_web_fonts_and_RFNs
2.4 Can I make OFL fonts available through web font online services?
Yes, you are welcome to include OFL fonts in online web font services as long as you properly meet all the conditions of the license. The origin and open status of the font should be clear among the other fonts you are hosting. Authorship, copyright notices and license information must be sufficiently visible to your users or subscribers so they know where the font comes from and the rights granted by the author(s). Make sure the font file contains the needed copyright notice(s) and licensing information in its metadata. Please double-check the accuracy of every field to prevent contradictory information. Other font formats, including EOT/EOTLite/CWT and superior alternatives like WOFF, already provide fields for this information. Remember that if you modify the font within your library or convert it to another format for any reason the OFL restrictions apply and you need to change the names accordingly. Please respect the author's wishes as expressed in the OFL and do not misrepresent original designers and their work. Don't lump quality open fonts together with dubious freeware or public domain fonts. Consider how you can best work with the original designers and foundries, support their efforts and generate goodwill that will benefit your service. (See 1.17 for details related to URL-based access restrictions methods or DRM mechanisms).
2.5 Some web font formats and services provide ways of "optimizing" the font for a particular website or web application; is that allowed?
Yes, it is permitted, but remember that these optimized versions are Modified Versions and so must follow OFL requirements like appropriate renaming. Also you need to bear in mind the other important parameters beyond compression, speed and responsiveness: you need to consider the audience of your particular website or web application, as choosing some optimization parameters may turn out to be less than ideal for them. Subsetting by removing certain glyphs or features may seriously limit functionality of the font in various languages that your users expect. It may also introduce degradation of quality in the rendering or specific bugs on the various target platforms compared to the original font from upstream. In other words, remember that one person's optimized font may be another person's missing feature. Various advanced typographic features (OpenType, Graphite or AAT) are also available through CSS and may provide the desired effects without the need to modify the font.
2.6 Is subsetting a web font considered modification?
Yes. Removing any parts of the font when delivering a web font to a browser, including unused glyphs and smart font code, is considered modification. This is permitted by the OFL but would not normally allow the use of RFNs. Some newer subsetting technologies may be able to subset in a way that allows users to effectively have access to the complete font, including smart font behaviour. See 2.8 and http://scripts.sil.org/OFL_web_fonts_and_RFNs
2.7 Are there any situations in which a modified web font could use RFNs?
Yes. If a web font is optimized only in ways that preserve Functional Equivalence (see 2.8), then it may use RFNs, as it reasonably represents the Original Version and respects the intentions of the author(s) and the main purposes of the RFN mechanism (avoids collisions, protects authors, minimizes support, encourages derivatives). However this is technically very difficult and often impractical, so a much better scenario is for the web font service or provider to sign a separate agreement with the author(s) that allows the use of RFNs for Modified Versions.
2.8 How do you know if an optimization to a web font preserves Functional Equivalence?
Functional Equivalence is described in full in the 'Web fonts and RFNs' paper at http://scripts.sil.org/OFL_web_fonts_and_RFNs, in general, an optimized font is deemed to be Functionally Equivalent (FE) to the Original Version if it:
- Supports the same full character inventory. If a character can be properly displayed using the Original Version, then that same character, encoded correctly on a web page, will display properly.
- Provides the same smart font behavior. Any dynamic shaping behavior that works with the Original Version should work when optimized, unless the browser or environment does not support it. There does not need to be guaranteed support in the client, but there should be no forced degradation of smart font or shaping behavior, such as the removal or obfuscation of OpenType, Graphite or AAT tables.
- Presents text with no obvious degradation in visual quality. The lettershapes should be equally (or more) readable, within limits of the rendering platform.
- Preserves original author, project and license metadata. At a minimum, this should include: Copyright and authorship; The license as stated in the Original Version, whether that is the full text of the OFL or a link to the web version; Any RFN declarations; Information already present in the font or documentation that points back to the Original Version, such as a link to the project or the author's website.
If an optimized font meets these requirements, and so is considered to be FE, then it's very likely that the original author would feel that the optimized font is a good and reasonable equivalent. If it falls short of any of these requirements, the optimized font does not reasonably represent the Original Version, and so should be considered to be a Modified Version. Like other Modified Versions, it would not be allowed to use any RFNs and you simply need to pick your own font name.
2.9 Isn't use of web fonts another form of embedding?
No. Unlike embedded fonts in a PDF, web fonts are not an integrated part of the document itself. They are not specific to a single document and are often applied to thousands of documents around the world. The font data is not stored alongside the document data and often originates from a different location. The ease by which the web fonts used by a document may be identified and downloaded for desktop use demonstrates that they are philosophically and technically separate from the web pages that specify them. See http://scripts.sil.org/OFL_web_fonts_and_RFNs
2.10 So would it be better to not use RFNs at all if you want your font to be distributed by a web fonts service?
No. Although the OFL does not require authors to use RFNs, the RFN mechanism is an important part of the OFL model and completely compatible with web font services. If that web font service modifies the fonts, then the best solution is to sign a separate agreement for the use of any RFNs. It is perfectly valid for an author to not declare any RFNs, but before they do so they need to fully understand the benefits they are giving up, and the overall negative effect of allowing many different versions bearing the same name to be widely distributed. As a result, we don't generally recommend it.
2.11 What should an agreement for the use of RFNs say? Are there any examples?
There is no prescribed format for this agreement, as legal systems vary, and no recommended examples. Authors may wish to add specific clauses to further restrict use, require author review of Modified Versions, establish user support mechanisms or provide terms for ending the agreement. Such agreements are usually not public, and apply only to the main parties. However, it would be very beneficial for web font services to clearly state when they have established such agreements, so that the public understands clearly that their service is operating appropriately.
See the separate paper on 'Web Fonts & RFNs' for in-depth discussion of issues related to the use of RFNs for web fonts. This is available at http://scripts.sil.org/OFL_web_fonts_and_RFNs
3 MODIFYING OFL-LICENSED FONTS
3.1 Can I change the fonts? Are there any limitations to what things I can and cannot change?
You are allowed to change anything, as long as such changes do not violate the terms of the license. In other words, you are not allowed to remove the copyright statement(s) from the font, but you could put additional information into it that covers your contribution. See the placeholders in the OFL header template for recommendations on where to add your own statements. (Remember that, when authors have reserved names via the RFN mechanism, you need to change the internal names of the font to your own font name when making your modified version even if it is just a small change.)
3.2 I have a font that needs a few extra glyphs - can I take them from an OFL licensed font and copy them into mine?
Yes, but if you distribute that font to others it must be under the OFL, and include the information mentioned in condition 2 of the license.
3.3 Can I charge people for my additional work? In other words, if I add a bunch of special glyphs or OpenType/Graphite/AAT code, can I sell the enhanced font?
Not by itself. Derivative fonts must be released under the OFL and cannot be sold by themselves. It is permitted, however, to include them in a larger software package (such as text editors, office suites or operating systems), even if the larger package is sold. In that case, you are strongly encouraged, but not required, to also make that derived font easily and freely available outside of the larger package.
3.4 Can I pay someone to enhance the fonts for my use and distribution?
Yes. This is a good way to fund the further development of the fonts. Keep in mind, however, that if the font is distributed to others it must be under the OFL. You won't be able to recover your investment by exclusively selling the font, but you will be making a valuable contribution to the community. Please remember how you have benefited from the contributions of others.
3.5 I need to make substantial revisions to the font to make it work with my program. It will be a lot of work, and a big investment, and I want to be sure that it can only be distributed with my program. Can I restrict its use?
No. If you redistribute a Modified Version of the font it must be under the OFL. You may not restrict it in any way beyond what the OFL permits and requires. This is intended to ensure that all released improvements to the fonts become available to everyone. But you will likely get an edge over competitors by being the first to distribute a bundle with the enhancements. Again, please remember how you have benefited from the contributions of others.
3.6 Do I have to make any derivative fonts (including extended source files, build scripts, documentation, etc.) publicly available?
No, but please consider sharing your improvements with others. You may find that you receive in return more than what you gave.
3.7 If a trademark is claimed in the OFL font, does that trademark need to remain in modified fonts?
Yes. Any trademark notices must remain in any derivative fonts to respect trademark laws, but you may add any additional trademarks you claim, officially registered or not. For example if an OFL font called "Foo" contains a notice that "Foo is a trademark of Acme", then if you rename the font to "Bar" when creating a Modified Version, the new trademark notice could say "Foo is a trademark of Acme Inc. - Bar is a trademark of Roadrunner Technologies Ltd.". Trademarks work alongside the OFL and are not subject to the terms of the licensing agreement. The OFL does not grant any rights under trademark law. Bear in mind that trademark law varies from country to country and that there are no international trademark conventions as there are for copyright. You may need to significantly invest in registering and defending a trademark for it to remain valid in the countries you are interested in. This may be costly for an individual independent designer.
3.8 If I commit changes to a font (or publish a branch in a DVCS) as part of a public open source software project, do I have to change the internal font names?
Only if there are declared RFNs. Making a public commit or publishing a public branch is effectively redistributing your modifications, so any change to the font will require that you do not use the RFNs. Even if there are no RFNs, it may be useful to change the name or add a suffix indicating that a particular version of the font is still in development and not released yet. This will clearly indicate to users and fellow designers that this particular font is not ready for release yet. See section 5 for more details.
4 LICENSING YOUR ORIGINAL FONTS UNDER THE OFL
4.1 Can I use the SIL OFL for my own fonts?
Yes! We heartily encourage everyone to use the OFL to distribute their own original fonts. It is a carefully constructed license that allows great freedom along with enough artistic integrity protection for the work of the authors as well as clear rules for other contributors and those who redistribute the fonts. The licensing model is used successfully by various organisations, both for-profit and not-for-profit, to release fonts of varying levels of scope and complexity.
4.2 What do I have to do to apply the OFL to my font?
If you want to release your fonts under the OFL, we recommend you do the following:
4.2.1 Put your copyright and Reserved Font Names information at the beginning of the main OFL.txt file in place of the dedicated placeholders (marked with the <> characters). Include this file in your release package.
4.2.2 Put your copyright and the OFL text with your chosen Reserved Font Name(s) into your font files (the copyright and license fields). A link to the OFL text on the OFL web site is an acceptable (but not recommended) alternative. Also add this information to any other components (build scripts, glyph databases, documentation, test files, etc). Accurate metadata in your font files is beneficial to you as an increasing number of applications are exposing this information to the user. For example, clickable links can bring users back to your website and let them know about other work you have done or services you provide. Depending on the format of your fonts and sources, you can use template human-readable headers or machine-readable metadata. You should also double-check that there is no conflicting metadata in the font itself contradicting the license, such as the fstype bits in the os2 table or fields in the name table.
4.2.3 Write an initial FONTLOG.txt for your font and include it in the release package (see Section 6 and Appendix A for details including a template).
4.2.4 Include the relevant practical documentation on the license by adding the current OFL-FAQ.txt file in your package.
4.2.5 If you wish you can use the OFL graphics (http://scripts.sil.org/OFL_logo) on your website.
4.3 Will you make my font OFL for me?
We won't do the work for you. We can, however, try to answer your questions, unfortunately we do not have the resources to review and check your font packages for correct use of the OFL. We recommend you turn to designers, foundries or consulting companies with experience in doing open font design to provide this service to you.
4.4 Will you distribute my OFL font for me?
No, although if the font is of sufficient quality and general interest we may include a link to it on our partial list of OFL fonts on the OFL web site. You may wish to consider other open font catalogs or hosting services, such as the Unifont Font Guide (http://unifont.org/fontguide), The League of Movable Type (http://theleagueofmovabletype.com) or the Open Font Library (http://openfontlibrary.org/), which despite the name has no direct relationship to the OFL or SIL. We do not endorse any particular catalog or hosting service - it is your responsibility to determine if the service is right for you and if it treats authors with fairness.
4.5 Why should I use the OFL for my fonts?
- to meet needs for fonts that can be modified to support lesser-known languages
- to provide a legal and clear way for people to respect your work but still use it (and reduce piracy)
- to involve others in your font project
- to enable your fonts to be expanded with new weights and improved writing system/language support
- to allow more technical font developers to add features to your design (such as OpenType, Graphite or AAT support)
- to renew the life of an old font lying on your hard drive with no business model
- to allow your font to be included in Libre Software operating systems like Ubuntu
- to give your font world status and wide, unrestricted distribution
- to educate students about quality typeface and font design
- to expand your test base and get more useful feedback
- to extend your reach to new markets when users see your metadata and go to your website
- to get your font more easily into one of the web font online services
- to attract attention for your commercial fonts
- to make money through web font services
- to make money by bundling fonts with applications
- to make money adjusting and extending existing open fonts
- to get a better chance that foundations/NGOs/charities/companies who commission fonts will pick you
- to be part of a sharing design and development community
- to give back and contribute to a growing body of font sources
5 CHOOSING RESERVED FONT NAMES
5.1 What are Reserved Font Names?
These are font names, or portions of font names, that the author has chosen to reserve for use only with the Original Version of the font, or for Modified Version(s) created by the original author.
5.2 Why can't I use the Reserved Font Names in my derivative font names? I'd like people to know where the design came from.
The best way to acknowledge the source of the design is to thank the original authors and any other contributors in the files that are distributed with your revised font (although no acknowledgement is required). The FONTLOG is a natural place to do this. Reserved Font Names ensure that the only fonts that have the original names are the unmodified Original Versions. This allows designers to maintain artistic integrity while allowing collaboration to happen. It eliminates potential confusion and name conflicts. When choosing a name, be creative and avoid names that reuse almost all the same letters in the same order or sound like the original. It will help everyone if Original Versions and Modified Versions can easily be distinguished from one another and from other derivatives. Any substitution and matching mechanism is outside the scope of the license.
5.3 What do you mean by "primary name as presented to the user"? Are you referring to the font menu name?
Yes, this applies to the font menu name and other mechanisms that specify a font in a document. It would be fine, however, to keep a text reference to the original fonts in the description field, in your modified source file or in documentation provided alongside your derivative as long as no one could be confused that your modified source is the original. But you cannot use the Reserved Font Names in any way to identify the font to the user (unless the Copyright Holder(s) allow(s) it through a separate agreement). Users who install derivatives (Modified Versions) on their systems should not see any of the original Reserved Font Names in their font menus, for example. Again, this is to ensure that users are not confused and do not mistake one font for another and so expect features only another derivative or the Original Version can actually offer.
5.4 Am I not allowed to use any part of the Reserved Font Names?
You may not use individual words from the Reserved Font Names, but you would be allowed to use parts of words, as long as you do not use any word from the Reserved Font Names entirely. We do not recommend using parts of words because of potential confusion, but it is allowed. For example, if "Foobar" was a Reserved Font Name, you would be allowed to use "Foo" or "bar", although we would not recommend it. Such an unfortunate choice would confuse the users of your fonts as well as make it harder for other designers to contribute.
5.5 So what should I, as an author, identify as Reserved Font Names?
Original authors are encouraged to name their fonts using clear, distinct names, and only declare the unique parts of the name as Reserved Font Names. For example, the author of a font called "Foobar Sans" would declare "Foobar" as a Reserved Font Name, but not "Sans", as that is a common typographical term, and may be a useful word to use in a derivative font name. Reserved Font Names should also be single words for simplicity and legibility. A font called "Flowing River" should have Reserved Font Names "Flowing" and "River", not "Flowing River". You also need to be very careful about reserving font names which are already linked to trademarks (whether registered or not) which you do not own.
5.6 Do I, as an author, have to identify any Reserved Font Names?
No. RFNs are optional and not required, but we encourage you to use them. This is primarily to avoid confusion between your work and Modified Versions. As an author you can release a font under the OFL and not declare any Reserved Font Names. There may be situations where you find that using no RFNs and letting your font be changed and modified - including any kind of modification - without having to change the original name is desirable. However you need to be fully aware of the consequences. There will be no direct way for end-users and other designers to distinguish your Original Version from many Modified Versions that may be created. You have to trust whoever is making the changes and the optimizations to not introduce problematic changes. The RFNs you choose for your own creation have value to you as an author because they allow you to maintain artistic integrity and keep some control over the distribution channel to your end-users. For discussion of RFNs and web fonts see section 2.
5.7 Are any names (such as the main font name) reserved by default?
No. That is a change to the license as of version 1.1. If you want any names to be Reserved Font Names, they must be specified after the copyright statement(s).
5.8 Is there any situation in which I can use Reserved Font Names for a Modified Version?
The Copyright Holder(s) can give certain trusted parties the right to use any of the Reserved Font Names through separate written agreements. For example, even if "Foobar" is a RFN, you could write up an agreement to give company "XYZ" the right to distribute a modified version with a name that includes "Foobar". This allows for freedom without confusion. The existence of such an agreement should be made as clear as possible to downstream users and designers in the distribution package and the relevant documentation. They need to know if they are a party to the agreement or not and what they are practically allowed to do or not even if all the details of the agreement are not public.
5.9 Do font rebuilds require a name change? Do I have to change the name of the font when my packaging workflow includes a full rebuild from source?
Yes, all rebuilds which change the font data and the smart code are Modified Versions and the requirements of the OFL apply: you need to respect what the Author(s) have chosen in terms of Reserved Font Names. However if a package (or installer) is simply a wrapper or a compressed structure around the final font - leaving them intact on the inside - then no name change is required. Please get in touch with the author(s) and copyright holder(s) to inquire about the presence of font sources beyond the final font file(s) and the recommended build path. That build path may very well be non-trivial and hard to reproduce accurately by the maintainer. If a full font build path is made available by the upstream author(s) please be aware that any regressions and changes you may introduce when doing a rebuild for packaging purposes is your own responsibility as a package maintainer since you are effectively creating a separate branch. You should make it very clear to your users that your rebuilt version is not the canonical one from upstream.
5.10 Can I add other Reserved Font Names when making a derivative font?
Yes. List your additional Reserved Font Names after your additional copyright statement, as indicated with example placeholders at the top of the OFL.txt file. Be sure you do not remove any existing RFNs but only add your own. RFN statements should be placed next to the copyright statement of the relevant author as indicated in the OFL.txt template to make them visible to designers wishing to make their separate version.
6 ABOUT THE FONTLOG
6.1 What is this FONTLOG thing exactly?
It has three purposes: 1) to provide basic information on the font to users and other designers and developers, 2) to document changes that have been made to the font or accompanying files, either by the original authors or others, and 3) to provide a place to acknowledge authors and other contributors. Please use it!
6.2 Is the FONTLOG required?
It is not a requirement of the license, but we strongly recommend you have one.
6.3 Am I required to update the FONTLOG when making Modified Versions?
No, but users, designers and other developers might get very frustrated with you if you don't. People need to know how derivative fonts differ from the original, and how to take advantage of the changes, or build on them. There are utilities that can help create and maintain a FONTLOG, such as the FONTLOG support in FontForge.
6.4 What should the FONTLOG look like?
It is typically a separate text file (FONTLOG.txt), but can take other formats. It commonly includes these four sections:
- brief header describing the FONTLOG itself and name of the font family
- Basic Font Information - description of the font family, purpose and breadth
- ChangeLog - chronological listing of changes
- Acknowledgements - list of authors and contributors with contact information
It could also include other sections, such as: where to find documentation, how to make contributions, information on contributing organizations, source code details, and a short design guide. See Appendix A for an example FONTLOG.
7 MAKING CONTRIBUTIONS TO OFL PROJECTS
7.1 Can I contribute work to OFL projects?
In many cases, yes. It is common for OFL fonts to be developed by a team of people who welcome contributions from the wider community. Contact the original authors for specific information on how to participate in their projects.
7.2 Why should I contribute my changes back to the original authors?
It would benefit many people if you contributed back in response to what you've received. Your contributions and improvements to the fonts and other components could be a tremendous help and would encourage others to contribute as well and 'give back'. You will then benefit from other people's contributions as well. Sometimes maintaining your own separate version takes more effort than merging back with the original. Be aware that any contributions, however, must be either your own original creation or work that you own, and you may be asked to affirm that clearly when you contribute.
7.3 I've made some very nice improvements to the font. Will you consider adopting them and putting them into future Original Versions?
Most authors would be very happy to receive such contributions. Keep in mind that it is unlikely that they would want to incorporate major changes that would require additional work on their end. Any contributions would likely need to be made for all the fonts in a family and match the overall design and style. Authors are encouraged to include a guide to the design with the fonts. It would also help to have contributions submitted as patches or clearly marked changes - the use of smart source revision control systems like subversion, mercurial, git or bzr is a good idea. Please follow the recommendations given by the author(s) in terms of preferred source formats and configuration parameters for sending contributions. If this is not indicated in a FONTLOG or other documentation of the font, consider asking them directly. Examples of useful contributions are bug fixes, additional glyphs, stylistic alternates (and the smart font code to access them) or improved hinting. Keep in mind that some kinds of changes (esp. hinting) may be technically difficult to integrate.
7.4 How can I financially support the development of OFL fonts?
It is likely that most authors of OFL fonts would accept financial contributions - contact them for instructions on how to do this. Such contributions would support future development. You can also pay for others to enhance the fonts and contribute the results back to the original authors for inclusion in the Original Version.
8 ABOUT THE LICENSE ITSELF
8.1 I see that this is version 1.1 of the license. Will there be later changes?
Version 1.1 is the first minor revision of the OFL. We are confident that version 1.1 will meet most needs, but are open to future improvements. Any revisions would be for future font releases, and previously existing licenses would remain in effect. No retroactive changes are possible, although the Copyright Holder(s) can re-release the font under a revised OFL. All versions will be available on our web site: http://scripts.sil.org/OFL.
8.2 Does this license restrict the rights of the Copyright Holder(s)?
No. The Copyright Holder(s) still retain(s) all the rights to their creation; they are only releasing a portion of it for use in a specific way. For example, the Copyright Holder(s) may choose to release a 'basic' version of their font under the OFL, but sell a restricted 'enhanced' version under a different license. They may also choose to release the same font under both the OFL and some other license. Only the Copyright Holder(s) can do this, and doing so does not change the terms of the OFL as it applies to that font.
8.3 Is the OFL a contract or a license?
The OFL is a worldwide license based on international copyright agreements and conventions. It is not a contract and so does not require you to sign it to have legal validity. By using, modifying and redistributing components under the OFL you indicate that you accept the license.
8.4 I really like the terms of the OFL, but want to change it a little. Am I allowed to take ideas and actual wording from the OFL and put them into my own custom license for distributing my fonts?
We strongly recommend against creating your very own unique open licensing model. Using a modified or derivative license will likely cut you off - along with the font(s) under that license - from the community of designers using the OFL, potentially expose you and your users to legal liabilities, and possibly put your work and rights at risk. The OFL went though a community and legal review process that took years of effort, and that review is only applicable to an unmodified OFL. The text of the OFL has been written by SIL (with review and consultation from the community) and is copyright (c) 2005-2017 SIL International. You may re-use the ideas and wording (in part, not in whole) in another non-proprietary license provided that you call your license by another unambiguous name, that you do not use the preamble, that you do not mention SIL and that you clearly present your license as different from the OFL so as not to cause confusion by being too similar to the original. If you feel the OFL does not meet your needs for an open license, please contact us.
8.5 Can I quote from the OFL FAQ?
Yes, SIL gives permission to quote from the OFL FAQ (OFL-FAQ.txt), in whole or in part, provided that the quoted text is:
- unmodified,
- used to help explain the intent of the OFL, rather than cause misunderstanding, and
- accompanied with the following attribution: "From the OFL FAQ (OFL-FAQ.txt), copyright (c) 2005-2020 SIL International. Used by permission. http://scripts.sil.org/OFL-FAQ_web".
8.6 Can I translate the license and the FAQ into other languages?
SIL certainly recognises the need for people who are not familiar with English to be able to understand the OFL and its use. Making the license very clear and readable has been a key goal for the OFL, but we know that people understand their own language best.
If you are an experienced translator, you are very welcome to translate the OFL and OFL-FAQ so that designers and users in your language community can understand the license better. But only the original English version of the license has legal value and has been approved by the community. Translations do not count as legal substitutes and should only serve as a way to explain the original license. SIL - as the author and steward of the license for the community at large - does not approve any translation of the OFL as legally valid because even small translation ambiguities could be abused and create problems.
SIL gives permission to publish unofficial translations into other languages provided that they comply with the following guidelines:
- Put the following disclaimer in both English and the target language stating clearly that the translation is unofficial:
"This is an unofficial translation of the SIL Open Font License into <language_name>. It was not published by SIL International, and does not legally state the distribution terms for fonts that use the OFL. A release under the OFL is only valid when using the original English text. However, we recognize that this unofficial translation will help users and designers not familiar with English to better understand and use the OFL. We encourage designers who consider releasing their creation under the OFL to read the OFL-FAQ in their own language if it is available. Please go to http://scripts.sil.org/OFL for the official version of the license and the accompanying OFL-FAQ."
- Keep your unofficial translation current and update it at our request if needed, for example if there is any ambiguity which could lead to confusion.
If you start such a unofficial translation effort of the OFL and OFL-FAQ please let us know.
8.7 Does the OFL have an explicit expiration term?
No, the implicit intent of the OFL is that the permissions granted are perpetual and irrevocable.
9 ABOUT SIL INTERNATIONAL
9.1 Who is SIL International and what do they do?
SIL serves language communities worldwide, building their capacity for sustainable language development, by means of research, translation, training and materials development. SIL makes its services available to all without regard to religious belief, political ideology, gender, race, or ethnic background. SIL's members and volunteers share a Christian commitment.
9.2 What does this have to do with font licensing?
The ability to read, write, type and publish in one's own language is one of the most critical needs for millions of people around the world. This requires fonts that are widely available and support lesser-known languages. SIL develops - and encourages others to develop - a complete stack of writing systems implementation components available under open licenses. This open stack includes input methods, smart fonts, smart rendering libraries and smart applications. There has been a need for a common open license that is specifically applicable to fonts and related software (a crucial component of this stack), so SIL developed the SIL Open Font License with the help of the Free/Libre and Open Source Software community.
9.3 How can I contact SIL?
Our main web site is: http://www.sil.org/
Our site about complex scripts is: http://scripts.sil.org/
Information about this license (and contact information) is at: http://scripts.sil.org/OFL
APPENDIX A - FONTLOG EXAMPLE
Here is an example of the recommended format for a FONTLOG, although other formats are allowed.
-----
FONTLOG for the GlobalFontFamily fonts
This file provides detailed information on the GlobalFontFamily Font Software. This information should be distributed along with the GlobalFontFamily fonts and any derivative works.
Basic Font Information
GlobalFontFamily is a Unicode typeface family that supports all languages that use the Latin script and its variants, and could be expanded to support other scripts.
NewWorldFontFamily is based on the GlobalFontFamily and also supports Greek, Hebrew, Cyrillic and Armenian.
More specifically, this release supports the following Unicode ranges...
This release contains...
Documentation can be found at...
To contribute to the project...
ChangeLog
10 December 2010 (Fred Foobar) GlobalFontFamily-devel version 1.4
- fix new build and testing system (bug #123456)
1 August 2008 (Tom Parker) GlobalFontFamily version 1.2.1
- Tweaked the smart font code (Branch merged with trunk version)
- Provided improved build and debugging environment for smart behaviours
7 February 2007 (Pat Johnson) NewWorldFontFamily Version 1.3
- Added Greek and Cyrillic glyphs
7 March 2006 (Fred Foobar) NewWorldFontFamily Version 1.2
- Tweaked contextual behaviours
1 Feb 2005 (Jane Doe) NewWorldFontFamily Version 1.1
- Improved build script performance and verbosity
- Extended the smart code documentation
- Corrected minor typos in the documentation
- Fixed position of combining inverted breve below (U+032F)
- Added OpenType/Graphite smart code for Armenian
- Added Armenian glyphs (U+0531 -> U+0587)
- Released as "NewWorldFontFamily"
1 Jan 2005 (Joe Smith) GlobalFontFamily Version 1.0
- Initial release
Acknowledgements
If you make modifications be sure to add your name (N), email (E), web-address (if you have one) (W) and description (D). This list is in alphabetical order.
N: Jane Doe
E: jane@university.edu
W: http://art.university.edu/projects/fonts
D: Contributor - Armenian glyphs and code
N: Fred Foobar
E: fred@foobar.org
W: http://foobar.org
D: Contributor - misc Graphite fixes
N: Pat Johnson
E: pat@fontstudio.org
W: http://pat.fontstudio.org
D: Designer - Greek & Cyrillic glyphs based on Roman design
N: Tom Parker
E: tom@company.com
W: http://www.company.com/tom/projects/fonts
D: Engineer - original smart font code
N: Joe Smith
E: joe@fontstudio.org
W: http://joe.fontstudio.org
D: Designer - original Roman glyphs
Fontstudio.org is an not-for-profit design group whose purpose is...
Foobar.org is a distributed community of developers...
Company.com is a small business who likes to support community designers...
University.edu is a renowned educational institution with a strong design department...
-----

View file

@ -1,97 +0,0 @@
Copyright (c) <dates>, <Erik Flowers> (<URL|email>),
with Reserved Font Name <Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>),
with Reserved Font Name <additional Reserved Font Name>.
Copyright (c) <dates>, <additional Copyright Holder> (<URL|email>).
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
http://scripts.sil.org/OFL
-----------------------------------------------------------
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
-----------------------------------------------------------
PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting -- in part or in whole -- any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1) Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2) Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3) No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5) The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
TERMINATION
This license becomes null and void if any of the above conditions are
not met.
DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

View file

@ -1,44 +0,0 @@
## Which font?
### TL;DR
* Pick your font family and then select from the `'complete'` directory.
* If you are on Windows pick a font with the `'Windows Compatible'` suffix.
* This includes specific tweaks to ensure the font works on Windows, in particular monospace identification and font name length limitations
* If you are limited to monospaced fonts (because of your terminal, etc) then pick a font with the `'Mono'` suffix.
* This denotes that the Nerd Font glyphs will be monospaced not necessarily that the entire font will be monospaced
### Ligatures
By the *Nerd Font* policy, the variant with the `'Mono'` suffix is not supposed to have any ligatures.
Use the non-*Mono* variants to have ligatures.
### Explanation
Once you narrow down your font choice of family (`Droid Sans`, `Inconsolata`, etc) and style (`bold`, `italic`, etc) you have 2 main choices:
#### `Option 1: Download already patched font`
* download an already patched font from the `complete` folder
* This is most likely the one you want. It includes **all** of the glyphs from all of the glyph sets. Only caution here is that some fonts have glyphs in the _same_ code point so to include everything some had to be moved to alternate code points.
#### `Option 2: Patch your own font`
* patch your own variations with the various options provided by the font patcher (see each font's readme for full list of combinations available)
* This is the option you want if the font you use is _not_ already included or you want maximum control of what's included
* This contains a list of _all permutations_ of the various glyphs. E.g. You want the font with only [Octicons][octicons] or you want the font with just [Font Awesome][font-awesome] and [Devicons][vorillaz-devicons]. The goal is to provide every combination possible in this folder.
For more information see: [The FAQ](https://github.com/ryanoasis/nerd-fonts/wiki/FAQ-and-Troubleshooting#which-font)
[vim-devicons]:https://github.com/ryanoasis/vim-devicons
[vorillaz-devicons]:https://vorillaz.github.io/devicons/
[font-awesome]:https://github.com/FortAwesome/Font-Awesome
[octicons]:https://github.com/primer/octicons
[gabrielelana-pomicons]:https://github.com/gabrielelana/pomicons
[Seti-UI]:https://atom.io/themes/seti-ui
[ryanoasis-powerline-extra-symbols]:https://github.com/ryanoasis/powerline-extra-symbols
[SIL-RFN]:http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web_fonts_and_RFNs#14cbfd4a

View file

@ -1,10 +0,0 @@
## Variations (Combinations)
> The combinations and total number of combinations are provided here for reference if you want to create your own variation of a patched Nerd Font.
### Why aren't all variations included ?
Combinations are no longer included by default because of the large inflation in size it caused the Repository _and_ the amount of time it takes to rebuild all of the combinations. This issue would exponentially get worse as the numbers of Fonts and Glyph Sets provided increase.

View file

@ -1,12 +0,0 @@
What's in a name? The reason for the name change is to comply with the SIL Open Font License (OFL), in particular the [Reserved Font Name mechanism][SIL-RFN]
Some fonts have parts of their name "reserved" per the [Reserved Font Name mechanism][SIL-RFN]:
> No Modified Version of the Font Software may use the Reserved Font
> Name(s) unless explicit written permission is granted by the corresponding
> Copyright Holder. This restriction only applies to the primary font name as
> presented to the users.
- The main goals seem to be to: `Avoid collisions`, `Protect authors`, `Minimize support`, and `Encourage derivatives`
See the [Reserved Font Name section][SIL-RFN] for additional information

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
<title>c++</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="c++" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M16.1226209,2.50442472 C15.7227042,2.47775217 15.3360857,2.57171573 14.9628416,2.78501607 C13.7630915,3.47821072 12.0434554,4.46476906 9.80391431,5.74451581 C7.5910267,7.02425113 6.00450568,7.93056131 5.04469419,8.46378738 C4.72477608,8.67707819 4.45757434,8.96971029 4.2442702,9.34297159 C4.05756239,9.68956605 3.97836399,10.0497407 4.00503653,10.423002 L4.00503653,16.0623893 L4.00503653,21.700788 C4.00503653,22.020727 4.11172671,22.3671958 4.3250118,22.7404513 C4.53831594,23.0870515 4.76436575,23.3405378 5.00432339,23.5005121 C10.7631733,26.7798405 14.0164616,28.6325859 14.762988,29.0591675 C15.1095786,29.3257805 15.5089047,29.458886 15.9621475,29.458886 C16.4153902,29.458886 16.8421128,29.3394883 17.2420295,29.0995345 C18.201841,28.5396435 19.2148261,27.9533886 20.2812706,27.3401754 C21.3743877,26.7003086 22.5743283,26.0063824 23.8807304,25.2598655 C25.2138051,24.5133487 26.2404885,23.9270804 26.9603233,23.5005121 C27.2269344,23.340534 27.4667015,23.0870515 27.6800247,22.7404513 C27.8933289,22.3671958 28,22.020727 28,21.700788 L28,10.2635059 C28,9.97023171 27.8933098,9.62376298 27.6800247,9.22384248 C27.4667396,8.90389769 27.2269725,8.65040755 26.9603233,8.46378738 C22.2679179,5.77099022 19.0283279,3.90454085 17.2420295,2.86476507 C16.9220923,2.65145902 16.5491911,2.53107059 16.1226209,2.50442472 Z M16.4425962,8.00400988 C16.9889451,8.03079673 17.5215768,8.11729198 18.0414818,8.26392429 C19.0546194,8.53053733 19.9883108,8.99641713 20.8414702,9.66294114 C21.7213022,10.3028193 22.4142358,11.0760068 22.9208046,11.982498 C21.9609931,12.5690444 20.814912,13.2355569 19.4818373,13.9820738 C19.1885727,13.5288368 18.8146998,13.1295202 18.3614571,12.7829201 C17.9082144,12.4363142 17.4149247,12.209247 16.8817025,12.1026082 C16.5084393,12.0092924 16.1355381,11.9765043 15.7622939,12.0031768 C15.3890307,12.0298303 15.0161485,12.1164589 14.6428853,12.263095 C13.8963589,12.5563692 13.2826999,13.0095205 12.8027846,13.622728 C12.34958,14.2359412 12.083369,14.9553016 12.0033513,15.7818056 C11.9500062,16.581639 12.135952,17.3147053 12.5625603,17.9812445 C12.7492681,18.3278409 12.9899878,18.6351677 13.2832334,18.9017807 C13.6031896,19.1684033 13.9359296,19.3944817 14.2825393,19.5811018 C14.6291299,19.7410609 15.0030218,19.8477454 15.4029385,19.9010771 C16.2027719,20.0343827 16.9749992,19.9277115 17.7215066,19.5811018 C18.468033,19.2078463 19.0415498,18.6744297 19.4414856,17.9812445 C20.5079301,18.5944521 21.6677094,19.2609665 22.9208046,19.9808223 C22.4142358,20.8873078 21.7340288,21.660501 20.8808694,22.3003791 C20.02771,22.9402458 19.0949711,23.4071049 18.0818336,23.7003771 C17.0687151,23.9670054 16.0293242,24.0335496 14.9628416,23.9002345 C13.896397,23.7669289 12.9098177,23.446887 12.0033513,22.940322 C10.7769097,22.2204663 9.80311413,21.2339079 9.08324122,19.9808223 C8.57669151,19.100996 8.24389437,18.1545685 8.08393531,17.1414385 C7.95057259,16.1283105 7.99077193,15.1290275 8.20396176,14.1425606 C8.4439194,13.1294307 8.85692469,12.2094261 9.44347298,11.382922 C10.0566748,10.5297588 10.8034488,9.82311929 11.6832808,9.2632283 C12.6164198,8.6766762 13.6431031,8.29007863 14.7628927,8.10345274 C15.3361048,8.01013694 15.896152,7.97723446 16.4425009,8.00402131 L16.4425962,8.00400988 Z M20.6012459,13.9820738 L21.9214987,13.9820738 L21.9214987,15.3023285 L23.2811316,15.3023285 L23.2811316,16.6619672 L21.9214987,16.6619672 L21.9214987,17.9812369 L20.6012459,17.9812369 L20.6012459,16.6619672 L19.241613,16.6619672 L19.241613,15.3023285 L20.6012459,15.3023285 L20.6012459,13.9820738 Z M25.1202416,13.9820738 L26.4404945,13.9820738 L26.4404945,15.3023285 L27.7597756,15.3023285 L27.7597756,16.6619672 L26.4404945,16.6619672 L26.4404945,17.9812369 L25.1202416,17.9812369 L25.1202416,16.6619672 L23.8009795,16.6619672 L23.8009795,15.3023285 L25.1202416,15.3023285 L25.1202416,13.9820738 Z" id="path4020" fill="#444444" fill-rule="nonzero"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
<title>c</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="c" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M16.1410918,2.50443147 C15.7405649,2.47771823 15.3533566,2.57182514 14.979543,2.7854509 C13.7779435,3.47970692 12.055703,4.46776656 9.81274516,5.74946574 C7.59646242,7.03115918 6.00752096,7.93884633 5.04626423,8.47288591 C4.72585805,8.68650212 4.45922178,8.97958066 4.24559222,9.35341142 C4.05859956,9.70053466 3.97828813,10.0612588 4.00500136,10.4350895 L4.00500136,16.0830805 L4.00500136,21.7300812 C4.00500136,22.0505084 4.11185431,22.3975057 4.32546479,22.7713307 C4.3407295,22.792377 4.35828391,22.8163616 4.37297619,22.8363966 C4.57305833,23.1460602 4.7839975,23.3838576 5.00699578,23.5325359 C10.7746506,26.8168767 14.03191,28.6724373 14.7795563,29.0996716 C15.1266948,29.3666895 15.5276032,29.5 15.9815374,29.5 C16.4354525,29.5 16.861853,29.3804201 17.2623989,29.1400983 C18.2236748,28.5793531 19.2391975,27.9922 20.307269,27.378057 C21.4020538,26.7372083 22.6028137,26.0422291 23.911209,25.2945734 C25.2463175,24.5469176 26.2745672,23.9597587 26.9955192,23.5325359 C27.262518,23.3723328 27.50267,23.1184444 27.7162996,22.7713155 C27.9299292,22.3974904 28.036763,22.0504874 28.036763,21.730066 L28.036763,10.2753348 C28.036763,9.98161324 27.9299101,9.63461593 27.7162996,9.2340853 C27.5026891,8.91364667 27.2625371,8.65977361 26.9955192,8.47286873 C22.2959741,5.77596336 19.0514416,3.90667793 17.2623989,2.8653063 C16.9419737,2.65168436 16.5685035,2.53111799 16.1412635,2.5044162 L16.1410918,2.50443147 Z M16.4615552,8.01240695 C17.0089476,8.03912019 17.5431551,8.12586188 18.0638533,8.2727179 C19.0785174,8.53973769 20.0126793,9.00631871 20.8671403,9.67386912 C21.7483146,10.3147178 22.4423054,11.0890906 22.949647,11.9969647 C21.9883711,12.584406 20.8405415,13.2519354 19.5054331,13.9995912 C19.211721,13.5456627 18.8382509,13.1457369 18.3843167,12.798608 C17.9303825,12.4514733 17.4363403,12.2240597 16.9023045,12.1172583 C16.1546392,11.9303419 15.4067449,11.9842645 14.6590796,12.2779765 C13.9114143,12.5716981 13.2978112,13.0255407 12.8171828,13.6396838 C12.3632868,14.2538325 12.0956774,14.9742904 12.0155377,15.8020554 C11.9621112,16.603109 12.1492947,17.3372937 12.576592,18.0048498 C12.7635846,18.351975 13.0036603,18.6597706 13.2973724,18.9267904 C13.6177976,19.1938197 13.9510834,19.420243 14.2982028,19.6071479 C14.6453223,19.7673701 15.0197846,19.8741982 15.4203114,19.9276113 C16.221365,20.0611203 16.9957245,19.9542673 17.7433898,19.6071479 C18.4910552,19.2333191 19.0654661,18.6990982 19.4659929,18.0048498 C20.5340644,18.6189928 21.69464,19.2865242 22.949647,20.0074782 C22.4422863,20.9153523 21.7620337,21.6897232 20.9075727,22.3305738 C20.0531117,22.9714224 19.1179767,23.438988 18.1032935,23.7327077 C17.0886293,23.9997427 16.0476336,24.0663923 14.979543,23.93287 C13.9114524,23.799361 12.9234061,23.4788308 12.0155377,22.971493 C10.787244,22.250539 9.8128978,21.2624756 9.09194572,20.0074782 C8.58460412,19.1263154 8.25034521,18.1784382 8.09014211,17.1637626 C7.95657593,16.1490889 7.99683659,15.1482813 8.21035167,14.1603095 C8.4506754,13.1456339 8.86432986,12.2242257 9.45177301,11.3964607 C10.0659103,10.5419959 10.8138237,9.83427829 11.694998,9.27353312 C12.6295605,8.68608615 13.6578293,8.29889878 14.7793082,8.11198817 C15.3533947,8.01853001 15.9140865,7.98571089 16.4614789,8.01240505 L16.4615552,8.01240695 Z" id="path4049" fill="#444444" fill-rule="nonzero"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

View file

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 49.1 (51147) - http://www.bohemiancoding.com/sketch -->
<title>coffeescript</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="coffeescript" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M19.0451517,5.00006281 C18.705552,4.99886441 18.3446131,5.01479304 17.96258,5.04980648 C14.040286,5.4063696 14.0657671,7.21466634 11.3915504,7.44391573 C10.2963754,7.54585363 9.68508515,7.29109736 9.58325365,6.85808193 C9.50680023,6.42517515 10.0416449,6.22143151 10.6784253,6.17046256 C11.2641303,6.11949473 11.977364,6.22143151 12.3084416,6.39971307 C12.563069,6.27240046 12.6395224,6.14497808 12.6140346,5.99218212 C12.5122087,5.58465004 11.6971434,5.4063696 10.6784253,5.4828219 C8.69185032,5.66110347 8.69184808,6.55251016 8.76819174,6.93455664 C8.97195442,7.95316618 10.5001459,8.64102524 12.3847852,8.46274367 C15.0336283,8.23349428 15.7976115,6.52702568 18.9048459,6.24691598 C20.4330352,6.11949473 21.4008942,6.42519755 21.5027201,6.96004111 C21.6045516,7.4694002 20.840565,7.80047773 19.9236739,7.87693116 C18.6502229,8.00424377 18.115376,7.54583123 18.0134403,7.1128158 C17.0710658,7.21464394 16.918271,7.62219729 16.9692366,7.90241563 C17.0710681,8.4372592 18.2172064,8.97210277 20.1782991,8.7938212 C22.394129,8.61554076 23.1327341,7.74948751 22.9544548,6.85808193 C22.7538606,5.85530471 21.4223523,5.00845608 19.0451517,5.00006281 Z M5.15170803,7.06186925 C3.72535025,7.62219729 2.96125505,8.0806972 2.96125505,8.7938212 C3.03770848,9.58329 4.31116389,10.3728686 6.90892606,10.9841655 C9.35400314,11.5953539 12.4867242,11.9264303 16.2561126,11.9264303 C20.1019532,11.9264303 23.1582209,11.5953539 25.6032979,10.9841655 C28.2010612,10.3728686 29.4490311,9.55791528 29.4490311,8.7938212 C29.4490311,8.23349316 28.888703,7.6986496 27.8699848,7.29111864 C28.0992353,7.44391573 28.2775158,7.6986496 28.2775158,7.9787593 C28.2775158,8.76833785 27.1058896,9.40500956 24.7372671,9.93985312 C22.5469239,10.4238375 19.7453934,10.754915 16.3325649,10.754915 C13.0469414,10.754915 10.1180972,10.4238375 8.00409879,9.9653376 C5.7374119,9.40500956 4.5403024,8.79382232 4.5403024,8.00424377 C4.5403024,7.67316512 4.69320701,7.39294678 5.15170803,7.06186925 Z M3.16502109,11.1369615 C3.3762564,12.5627212 3.73123585,13.947368 4.19793639,15.269717 C3.64414019,15.604187 3.14108781,16.0565145 2.68114647,16.6382827 C1.81522537,17.7334544 1.43317778,19.006819 1.50952144,20.2548975 C1.58597486,21.5028662 2.19716321,22.5215844 3.16502109,23.3111629 C4.18373927,24.1006295 5.27891088,24.3298598 6.52698934,24.1006093 C7.01086284,24.0242657 7.54570864,23.7695531 8.02958214,23.616756 C7.01086508,23.616756 6.14494286,23.2856785 5.27891088,22.5980378 C4.33664724,21.9102863 3.69986466,20.9425382 3.54706757,19.7709131 C3.31781706,18.6757415 3.54706757,17.6570211 4.15836456,16.7656166 C4.29360341,16.5953151 4.4367573,16.4398367 4.58833919,16.2986955 C4.93709031,17.1572828 5.33173791,17.9857242 5.76289526,18.7776794 C6.70526978,20.2039274 7.64753566,21.451876 8.58991018,22.8017814 C8.99744114,23.5912536 9.2775486,24.3808501 9.4558324,25.1704275 C10.0671294,26.0363486 10.9586458,26.5966554 12.0537066,26.9022495 C13.403612,27.386123 14.8043745,27.5899115 16.2307367,27.5135678 L16.3834241,27.5135678 C17.8096732,27.5899115 19.3124855,27.3606397 20.6877679,26.9022495 C21.706485,26.571172 22.5724083,26.0363486 23.2091887,25.1704275 L23.2855324,25.1704275 C23.4383294,24.3807403 23.6930678,23.5912536 24.0751109,22.8017814 C25.0174854,21.451876 25.9598611,20.2039274 26.9021258,18.7776794 C28.1500934,16.5108828 29.0161265,13.913115 29.5,11.1369615 C28.9906431,11.8500855 27.8190192,12.4613847 25.7051261,12.9452582 C23.260049,13.5055852 20.1274421,13.8876328 16.3579407,13.8876328 C12.5122087,13.8876328 9.37949097,13.4801029 6.93441053,12.9452582 C4.74406843,12.3849313 3.5726618,11.7736321 3.16502109,11.1369615 Z" id="path4828" fill="#444444" fill-rule="nonzero"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

View file

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32" height="32" preserveAspectRatio="xMidYMid" version="1.1" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg">
<g transform="matrix(.1 0 0 .1 3.2 3.2)">
<path d="M 93.365,0 0,93.741 34.258,222.117 163.011,256 256,161.882 222.117,35.388 Z M 6.776,95.247 131.764,62.493 97.506,187.105 Z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 361 B

Some files were not shown because too many files have changed in this diff Show more