浏览代码

added ttf desktop font build shell script

Chris Simpkins 7 年之前
父节点
当前提交
c3713458ec
共有 1 个文件被更改,包括 145 次插入0 次删除
  1. 145 0
      build.sh

+ 145 - 0
build.sh

@@ -0,0 +1,145 @@
+#!/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