File: build-woff2.sh

package info (click to toggle)
fonts-hack 3.003-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 31,560 kB
  • sloc: sh: 811; python: 129; makefile: 34; xml: 30
file content (170 lines) | stat: -rwxr-xr-x 4,619 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#!/bin/sh

# ///////////////////////////////////////////////////////////////////
#
# build-woff2.sh
#  A shell script that builds the Hack woff2 web fonts from ttf files
#  Copyright 2018 Christopher Simpkins
#  MIT License
#
#  Usage: ./build-woff2.sh (--install-dependencies)
#     Arguments:
#     --install-dependencies (optional) - installs all
#       build dependencies prior to the build script execution
#
#  NOTE: If you change the source, you must build new ttf files
#        with build.sh PRIOR to execution of this script.
#        This script builds directly from previous ttf builds,
#        not source files.
#
# ///////////////////////////////////////////////////////////////////

# The woff2 git clone directory.
BUILD="$HOME"
INST="$HOME/woff2"

# woff2 executable path
WOFF2_BIN="$BUILD/woff2/woff2_compress"

# The font build directory paths and file paths for the woff builds
TTF_BUILD="build/ttf"
WOFF_BUILD="build/web/fonts"
REGULAR_TTF="Hack-Regular.ttf"
REGULAR_PRE="Hack-Regular.woff2"
REGULAR_WOFF="hack-regular.woff2"
BOLD_TTF="Hack-Bold.ttf"
BOLD_PRE="Hack-Bold.woff2"
BOLD_WOFF="hack-bold.woff2"
ITALIC_TTF="Hack-Italic.ttf"
ITALIC_PRE="Hack-Italic.woff2"
ITALIC_WOFF="hack-italic.woff2"
BOLDITALIC_TTF="Hack-BoldItalic.ttf"
BOLDITALIC_PRE="Hack-BoldItalic.woff2"
BOLDITALIC_WOFF="hack-bolditalic.woff2"

# test for number of arguments
if [ $# -gt 1 ]
	then
	    echo "Inappropriate arguments included in your command." 1>&2
	    echo "Usage: ./build-woff2.sh (--install-dependencies)" 1>&2
	    exit 1
fi

# Optional build dependency install request with syntax `./build-web.sh --install-dependencies`
if [ "$1" = "--install-dependencies" ]
	then
		# define the current directory (Hack repository)
		CUR_DIR=$(pwd)

		if test -d "$INST" -o -f "$INST"; then
		  echo "Build directory \`$INST' must not exist."
		  exit 1
		fi

		cd "$BUILD" || exit 1

		echo "#####"
		echo "git clone woff2 project"
		echo "#####"

		# clone the Source Foundry fork of the woff2 repo
		#   contains fix for OS X build bug - https://github.com/google/woff2/issues/73
		#   recursive flag to clone the brotli submodule within the woff2 repo
		git clone --recursive https://github.com/source-foundry/woff2.git

		cd "$INST" || exit 1

		echo "#####"
		echo "Build woff2"
		echo "#####"

		make clean all

		# make Hack repository the current directory again following the build
		cd "$CUR_DIR" || exit 1
fi

# If the binary is not found, look if it is installed system-wide
if [ ! -x "$WOFF2_BIN" ]; then
	WOFF2_SYSWIDE=$(command -pv woff2_compress)
	if [ -x "$WOFF2_SYSWIDE" ]; then
		WOFF2_BIN="$WOFF2_SYSWIDE"
	fi
fi

if [ -f "$WOFF2_BIN" ]; then
	echo "Beginning web font build with $WOFF2_BIN"
else
	echo "Unable to locate woff2_compress on path $WOFF2_BIN. Please attempt a manual install of this build dependency and then repeat your build attempt." 1>&2
	exit 1
fi

# Build woff2 files from ttf files
# regular set
if ! "$WOFF2_BIN" "$TTF_BUILD/$REGULAR_TTF"; then
	echo "Failed to build woff2 from $REGULAR_TTF." 1>&2
	exit 1
else
	echo "Regular woff2 font set successfully built from $REGULAR_TTF"
fi

# bold set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLD_TTF"; then
	echo "Failed to build woff2 from $BOLD_TTF" 1>&2
	exit 1
else
	echo "Bold woff2 set successfully built from $BOLD_TTF"
fi

# italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$ITALIC_TTF"; then
	echo "Failed to build woff2 from $ITALIC_TTF" 1>&2
	exit 1
else
	echo "Italic woff2 set successfully built from $ITALIC_TTF"
fi

# bold italic set
if ! "$WOFF2_BIN" "$TTF_BUILD/$BOLDITALIC_TTF"; then
	echo "Failed to build woff2 from $BOLDITALIC_TTF" 1>&2
	exit 1
else
	echo "Bold Italic woff2 set successfully built from $BOLDITALIC_TTF"
fi

echo "Moving woff2 files to build directory..."

# create directory if it does not exist
# (occurs with git + empty directories)
if ! [ -d "$WOFF_BUILD" ]; then
	mkdir $WOFF_BUILD
fi

# move woff2 files to appropriate build directory
mv "$TTF_BUILD/$REGULAR_PRE" "$WOFF_BUILD/$REGULAR_WOFF"
mv "$TTF_BUILD/$BOLD_PRE" "$WOFF_BUILD/$BOLD_WOFF"
mv "$TTF_BUILD/$ITALIC_PRE" "$WOFF_BUILD/$ITALIC_WOFF"
mv "$TTF_BUILD/$BOLDITALIC_PRE" "$WOFF_BUILD/$BOLDITALIC_WOFF"

echo " "

if [ -f "$WOFF_BUILD/$REGULAR_WOFF" ]; then
	echo "Regular woff2 build path: $WOFF_BUILD/$REGULAR_WOFF"
fi

if [ -f "$WOFF_BUILD/$BOLD_WOFF" ]; then
	echo "Bold woff2 build path: $WOFF_BUILD/$BOLD_WOFF"
fi

if [ -f "$WOFF_BUILD/$ITALIC_WOFF" ]; then
	echo "Italic woff2 build path: $WOFF_BUILD/$ITALIC_WOFF"
fi

if [ -f "$WOFF_BUILD/$BOLDITALIC_WOFF" ]; then
	echo "Bold Italic woff2 build path: $WOFF_BUILD/$BOLDITALIC_WOFF"
fi