#!/bin/bash # ///////////////////////////////////////////////////////////////// # # build.sh # A shell script that builds the Hack fonts from UFO source # Copyright 2017 Christopher Simpkins # MIT License # # Usage: ./build.sh (--install-dependencies) # Arguments: # --install-dependencies (optional) - installs all # build dependencies prior to the build script execution # # ///////////////////////////////////////////////////////////////// if [ $# -gt 1 ] then echo "Inappropriate arguments included in your command." 1>&2 echo "Usage: ./build.sh (--install-dependencies)" 1>&2 exit 1 elif [ "$1" = "--install-dependencies" ] then # fontmake pip install fontmake # fontTools pip install fonttools # ttfautohint v1.6 (must be pinned to v1.6 and above) curl -L https://sourceforge.net/projects/freetype/files/ttfautohint/1.6/ttfautohint-1.6.tar.gz/download -o ttfautohint.tar.gz tar -xvzf ttfautohint.tar.gz ttfautohint-1.6/configure sudo ttfautohint-1.6/make && sudo ttfautohint-1.6/make install if [ -f "ttfautohint-1.6.tar.gz" ] then rm ttfautohint-1.6.tar.gz fi if [ -d "ttfautohint-1.6"] then rm -rf ttfautohint-1.6 fi # confirm installs installflag = 0 which fontmake if [ $? -ne 0 ] then echo "Unable to install fontmake with 'pip install fontmake'. Please attempt manual install and repeat build without the --install-dependencies flag." 1>&2 $installflag = 1 fi python -c "import fontTools" if [ $? -ne 0 ] then echo "Unable to install fontTools with 'pip install fonttools'. Please attempt manual install and repeat build without the --install-dependencies flag." 1>&2 $installflag = 1 fi which ttfautohint if [ $? -ne 0 ] then echo "Unable to install ttfautohint from source. Please attempt manual install and repeat build without the --install-dependencies flag." 1>&2 $installflag = 1 fi # if any of the dependency installs failed, exit and do not attempt build if [ $installflag -eq 1 ] then echo "Build canceled." 1>&2 exit 1 fi fi # Desktop ttf font build # remove any existing release files from the build directory if [ -f "build/ttf/Hack-Regular.ttf" ]; then rm build/ttf/Hack-Regular.ttf fi if [ -f "build/ttf/Hack-Italic.ttf" ]; then rm build/ttf/Hack-Italic.ttf fi if [ -f "build/ttf/Hack-Bold.ttf" ]; then rm build/ttf/Hack-Bold.ttf fi if [ -f "build/ttf/Hack-BoldItalic.ttf" ]; then rm build/ttf/Hack-BoldItalic.ttf fi # build regular set fontmake -u "source/Hack-Regular.ufo" -o ttf if [ $? -ne 0 ] then echo "Unable to build the Hack regular variant set. Build canceled." 1>&2 exit 1 fi # build bold set fontmake -u "source/Hack-Bold.ufo" -o ttf if [ $? -ne 0 ] then echo "Unable to build the Hack bold variant set. Build canceled." 1>&2 exit 1 fi # build italic set fontmake -u "source/Hack-Italic.ufo" -o ttf if [ $? -ne 0 ] then echo "Unable to build the Hack italic variant set. Build canceled." 1>&2 exit 1 fi # build bold italic set fontmake -u "source/Hack-BoldItalic.ufo" -o ttf if [ $? -ne 0 ] then echo "Unable to build the Hack bold italic variant set. Build canceled." 1>&2 exit 1 fi # Desktop ttf font hinting # TODO # Desktop ttf font post build fixes # TODO # Move release files to build directory mv master_ttf/Hack-Regular.ttf build/ttf/Hack-Regular.ttf echo "Hack-Regular.ttf was moved to release directory on path build/ttf/Hack-Regular.ttf" mv master_ttf/Hack-Italic.ttf build/ttf/Hack-Italic.ttf echo "Hack-Italic.ttf was moved to release directory on path build/ttf/Hack-Italic.ttf" mv master_ttf/Hack-Bold.ttf build/ttf/Hack-Bold.ttf echo "Hack-Bold.ttf was moved to release directory on path build/ttf/Hack-Bold.ttf" mv master_ttf/Hack-BoldItalic.ttf build/ttf/Hack-BoldItalic.ttf echo "Hack-BoldItalic.ttf was moved to release directory on path build/ttf/Hack-BoldItalic.ttf" # Remove master_ttf directory rm -rf master_ttf