-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Contributor Developer Setup
- Prerequisites
- Required
- Highly Recommended
- Base Nerd Fonts Development
- Hack font specific
- OSX
- Linux 0. FreeType 0. Harfbuzz 0. ttfautohint
- Sanity Tests
- Troubleshooting
- Resources
- The basics of what you need to get up and running :)
- Git
- FontForge
- FontForge python bindings
- Python 2 and/or Python 3
- ShellCheck
- Pyflakes (PEP8 compliance)
- Pandoc
- What you need to contribute to the core of Nerd Fonts
todo
- Download and install Python if not already installed: http://docs.python-guide.org/en/latest/starting/install/linux/
- check
python --version
- latest 2.x or 3.x should be fine
- check
- Download and install FontForge: http://fontforge.github.io/en-US/downloads/gnulinux-dl/
- version should be at least
20141231
- verify version:
fontforge --version 2>&1 | grep libfontforge | awk '{print $NF}'
- version should be at least
- Download and install FontForge module (FontForge Python bindings)
- e.g. on Linux Debian or Ubuntu:
sudo apt-get install python-fontforge
- e.g. on Linux Debian or Ubuntu:
- Download and install Python (latest 2.x or 3.x should be fine): https://www.python.org/downloads/windows/
- Download and install FontForge: http://fontforge.github.io/en-US/downloads/windows-dl/
- Download and install Cygwin: https://cygwin.com/install.html
- What you need to contribute to the Hack specific portion of Nerd Fonts
todo
- Download and install ttfautohint: https://www.freetype.org/ttfautohint/
- FreeType
- Harfbuzz
- ttfautohint
wget http://downloads.sourceforge.net/project/freetype/freetype2/2.7/freetype-2.7.tar.gz
tar -zxf freetype-2.7.tar.gz
cd freetype-2.7
./configure
make
sudo make install
wget http://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.3.4.tar.bz2
tar -xjf harfbuzz-1.3.4.tar.bz2
cd harfbuzz-1.3.4
./configure
make
sudo make install
- if you ran into an issue where a compiler is needed you will probably have to start over with the config but first run:
make distclean
sudo apt install g++
wget http://download.savannah.gnu.org/releases/freetype/ttfautohint-1.6.tar.gz
tar -zxf ttfautohint-1.6.tar.gz
cd ttfautohint-1.6
./configure --with-qt=no --with-doc=no
make
sudo make install
- if you get an error during
make
for ttfautohint:configure: error: *** A compiler with support for C++11 language features is required.
Then install compiler such as g++
(shown above) then re-run configure & make, etc
ttfautohint --version
ttfautohint 1.6
ttfautohint -l 4 -r 80 -G 350 -x 0 -H 181 -D latn -f latn -w G -W -t -X "" -I -m "bin/scripts/Hack/Hack-Regular-TA.txt" Hack\ Regular\ Nerd\ Font\ Complete.ttf.tmp Hack\ Regular\ Nerd\ Font\ Complete.ttf
ttfautohint: unrecognized option '-H'
cause: Too old of a version of ttfautohint, works but doesn't have -H option
checking for HARFBUZZ... no
configure: error: Package requirements (harfbuzz >= 0.9.19) were not met:
No package 'harfbuzz' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables HARFBUZZ_CFLAGS
and HARFBUZZ_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
cause: harfbuzz not installed or not installed correctly
tashaper.h:29:19: fatal error: hb-ft.h: No such file or directory
#include <hb-ft.h>
^
compilation terminated.
cause: harfbuzz not installed or not installed correctly
ttfautohint: undefined symbol: hb_ft_font_create
cause: harfbuzz not installed or not installed correctly
This Wiki and the Readme contains a lot of information, please take your time to read the information.
If you run into any trouble, please start by looking in the FAQ and if you still need help you can visit the Gitter Chat.
There is a heavily detailed Changelog and Release changes.
Be sure to read the Contributing Guide before opening a pull request to Nerd Fonts.
If you have any questions about the Nerd Fonts usage or want to share some information with the community, please go to one of the following places: