diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99a4c42..2c8049e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,14 +7,11 @@ jobs: runs-on: ubuntu-latest name: Build steps: - - name: Checkout the latest commit - uses: actions/checkout@v2 - - name: Install dependencies - run: bash -ex ./script/bootstrap_action - - name: Build fonts - run: bash -e ./script/build - - name: Upload built fonts - uses: actions/upload-artifact@v2 + - uses: actions/checkout@v2 + - run: echo "FIRA_CODE_VERSION=$(python3 ./script/version.py)" >> $GITHUB_ENV + - run: ./script/bootstrap_linux.sh + - run: ./script/build.sh + - uses: actions/upload-artifact@v2 with: - name: Fira_Code + name: Fira_Code_v${{ env.FIRA_CODE_VERSION }} path: distr \ No newline at end of file diff --git a/.gitignore b/.gitignore index df16350..22548fc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,15 @@ FiraCode_mess.glyphs target clojure/*.edn FiraCode\ (Autosaved).glyphs +FiraCode_VF.glyphs .cpcache master_ufo instance_ufo venv .DS_Store -*.numbers \ No newline at end of file +*.numbers +distr/ttf +distr/otf +distr/woff +distr/woff2 +distr/variable_ttf \ No newline at end of file diff --git a/distr/ttf/FiraCode-Bold.ttf b/distr/ttf/FiraCode-Bold.ttf deleted file mode 100644 index 39265a1..0000000 Binary files a/distr/ttf/FiraCode-Bold.ttf and /dev/null differ diff --git a/distr/ttf/FiraCode-Light.ttf b/distr/ttf/FiraCode-Light.ttf deleted file mode 100644 index ed3258e..0000000 Binary files a/distr/ttf/FiraCode-Light.ttf and /dev/null differ diff --git a/distr/ttf/FiraCode-Medium.ttf b/distr/ttf/FiraCode-Medium.ttf deleted file mode 100644 index 2cad018..0000000 Binary files a/distr/ttf/FiraCode-Medium.ttf and /dev/null differ diff --git a/distr/ttf/FiraCode-Regular.ttf b/distr/ttf/FiraCode-Regular.ttf deleted file mode 100644 index 0d57068..0000000 Binary files a/distr/ttf/FiraCode-Regular.ttf and /dev/null differ diff --git a/distr/ttf/FiraCode-Retina.ttf b/distr/ttf/FiraCode-Retina.ttf deleted file mode 100644 index 248d36b..0000000 Binary files a/distr/ttf/FiraCode-Retina.ttf and /dev/null differ diff --git a/distr/ttf/FiraCode-SemiBold.ttf b/distr/ttf/FiraCode-SemiBold.ttf deleted file mode 100644 index 56a8016..0000000 Binary files a/distr/ttf/FiraCode-SemiBold.ttf and /dev/null differ diff --git a/distr/variable_ttf/FiraCode-VF.ttf b/distr/variable_ttf/FiraCode-VF.ttf deleted file mode 100644 index fd59413..0000000 Binary files a/distr/variable_ttf/FiraCode-VF.ttf and /dev/null differ diff --git a/distr/woff/FiraCode-Bold.woff b/distr/woff/FiraCode-Bold.woff deleted file mode 100644 index d7c2099..0000000 Binary files a/distr/woff/FiraCode-Bold.woff and /dev/null differ diff --git a/distr/woff/FiraCode-Light.woff b/distr/woff/FiraCode-Light.woff deleted file mode 100644 index 9e99c41..0000000 Binary files a/distr/woff/FiraCode-Light.woff and /dev/null differ diff --git a/distr/woff/FiraCode-Medium.woff b/distr/woff/FiraCode-Medium.woff deleted file mode 100644 index 4ffa82d..0000000 Binary files a/distr/woff/FiraCode-Medium.woff and /dev/null differ diff --git a/distr/woff/FiraCode-Regular.woff b/distr/woff/FiraCode-Regular.woff deleted file mode 100644 index 01a6bfc..0000000 Binary files a/distr/woff/FiraCode-Regular.woff and /dev/null differ diff --git a/distr/woff/FiraCode-SemiBold.woff b/distr/woff/FiraCode-SemiBold.woff deleted file mode 100644 index a46df49..0000000 Binary files a/distr/woff/FiraCode-SemiBold.woff and /dev/null differ diff --git a/distr/woff/FiraCode-VF.woff b/distr/woff/FiraCode-VF.woff deleted file mode 100644 index f7ac814..0000000 Binary files a/distr/woff/FiraCode-VF.woff and /dev/null differ diff --git a/distr/woff2/FiraCode-Bold.woff2 b/distr/woff2/FiraCode-Bold.woff2 deleted file mode 100644 index b76a82d..0000000 Binary files a/distr/woff2/FiraCode-Bold.woff2 and /dev/null differ diff --git a/distr/woff2/FiraCode-Light.woff2 b/distr/woff2/FiraCode-Light.woff2 deleted file mode 100644 index 5084487..0000000 Binary files a/distr/woff2/FiraCode-Light.woff2 and /dev/null differ diff --git a/distr/woff2/FiraCode-Medium.woff2 b/distr/woff2/FiraCode-Medium.woff2 deleted file mode 100644 index f5b273d..0000000 Binary files a/distr/woff2/FiraCode-Medium.woff2 and /dev/null differ diff --git a/distr/woff2/FiraCode-Regular.woff2 b/distr/woff2/FiraCode-Regular.woff2 deleted file mode 100644 index c856e7b..0000000 Binary files a/distr/woff2/FiraCode-Regular.woff2 and /dev/null differ diff --git a/distr/woff2/FiraCode-SemiBold.woff2 b/distr/woff2/FiraCode-SemiBold.woff2 deleted file mode 100644 index 7fa2ac3..0000000 Binary files a/distr/woff2/FiraCode-SemiBold.woff2 and /dev/null differ diff --git a/distr/woff2/FiraCode-VF.woff2 b/distr/woff2/FiraCode-VF.woff2 deleted file mode 100644 index 64ffe43..0000000 Binary files a/distr/woff2/FiraCode-VF.woff2 and /dev/null differ diff --git a/script/bootstrap_action b/script/bootstrap_linux.sh old mode 100644 new mode 100755 similarity index 85% rename from script/bootstrap_action rename to script/bootstrap_linux.sh index 5c1f977..6204fa8 --- a/script/bootstrap_action +++ b/script/bootstrap_linux.sh @@ -1,4 +1,6 @@ -#! /bin/bash -ex +#!/bin/bash +set -o errexit -o nounset -o pipefail +cd "`dirname $0`/.." sudo apt update sudo apt install -y python3.8 python3-setuptools python3.8-dev pkg-config zlib1g ttfautohint woff2 sfnt2woff-zopfli diff --git a/script/bootstrap b/script/bootstrap_macos.sh similarity index 85% rename from script/bootstrap rename to script/bootstrap_macos.sh index 91244cf..ab001c7 100755 --- a/script/bootstrap +++ b/script/bootstrap_macos.sh @@ -1,4 +1,6 @@ -#! /bin/bash -ex +#!/bin/bash +set -o errexit -o nounset -o pipefail +cd "`dirname $0`/.." sudo easy_install-3.8 pip pip install virtualenv --user diff --git a/script/build b/script/build deleted file mode 100755 index b9ccf35..0000000 --- a/script/build +++ /dev/null @@ -1,90 +0,0 @@ -#!/bin/bash -e - -[ -d venv ] && source venv/bin/activate - -# ============================================================================ -# VARIABLE FONT ============================================================== - -# variable font -firaCodeVF=distr/variable_ttf/FiraCode-VF.ttf - -rm -rf $firaCodeVF -fontmake -g FiraCode.glyphs -o variable --output-dir distr/variable_ttf - -# fix variable font metadata – very important -gftools fix-vf-meta $firaCodeVF -mv $firaCodeVF.fix $firaCodeVF - -# other fixes for metadata and hinting -gftools fix-nonhinting $firaCodeVF $firaCodeVF -gftools fix-gasp --autofix $firaCodeVF -mv $firaCodeVF.fix $firaCodeVF - -gftools fix-dsig --autofix $firaCodeVF - -# cleanup of temp files -rm -rf distr/variable_ttf/*-gasp* - -# TODO (late 2019?): use TTFautohint-VF for variable font (current support is minimal) - -# ============================================================================ -# STATIC FONTS =============================================================== - -rm -rf distr/ttf -fontmake -g FiraCode.glyphs -o ttf --output-dir distr/ttf -i - -rm -rf distr/otf -fontmake -g FiraCode.glyphs -o otf --output-dir distr/otf -i - -# ------------------------------------------------------------- -# Autohinting ------------------------------------------------- - -statics=$(ls distr/ttf/*.ttf) -for file in $statics; do - echo "fix DSIG in " ${file} - gftools fix-dsig --autofix ${file} - - echo "TTFautohint " ${file} - # autohint with detailed info - hintedFile=${file/".ttf"/"-hinted.ttf"} - ttfautohint -I ${file} ${hintedFile} --stem-width-mode nnn --composites --windows-compatibility - cp ${hintedFile} ${file} - rm -rf ${hintedFile} -done - - -# ============================================================================ -# Build woff2 fonts ========================================================== - -# requires woff2_compress (get from https://github.com/bramstein/homebrew-webfonttools) - -rm -rf distr/woff2 - -ttfs=$(ls distr/*/*.ttf) -for ttf in $ttfs; do - woff2_compress $ttf -done - -mkdir -p distr/woff2 -woff2s=$(ls distr/*/*.woff2) -for woff2 in $woff2s; do - mv $woff2 distr/woff2/$(basename $woff2) -done - -# ============================================================================ -# Build woff fonts =========================================================== - -# requires sfnt2woff-zopfli (get from https://github.com/bramstein/homebrew-webfonttools) - -rm -rf distr/woff - -ttfs=$(ls distr/*/*.ttf) -for ttf in $ttfs; do - sfnt2woff-zopfli $ttf -done - -mkdir -p distr/woff -woffs=$(ls distr/*/*.woff) -for woff in $woffs; do - mv $woff distr/woff/$(basename $woff) -done diff --git a/script/build.sh b/script/build.sh new file mode 100755 index 0000000..8116b7d --- /dev/null +++ b/script/build.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +cd "`dirname $0`" + +./build_ttf.sh +./build_variable.sh +./build_woff2.sh +./build_woff.sh \ No newline at end of file diff --git a/script/build_ttf b/script/build_ttf.sh similarity index 85% rename from script/build_ttf rename to script/build_ttf.sh index b40c2e8..ef9a534 100755 --- a/script/build_ttf +++ b/script/build_ttf.sh @@ -1,6 +1,9 @@ -#!/bin/bash -euo pipefail - +#!/bin/bash +set -o errexit -o nounset -o pipefail +cd "`dirname $0`/.." [ -d venv ] && source venv/bin/activate +mkdir -p distr/ttf +rm -rf distr/ttf/* args=( "$@" ) default_weights=( "Light" "Regular" "Retina" "Medium" "SemiBold" "Bold" ) diff --git a/script/build_variable b/script/build_variable.sh similarity index 59% rename from script/build_variable rename to script/build_variable.sh index 30d33bc..0915b76 100755 --- a/script/build_variable +++ b/script/build_variable.sh @@ -1,16 +1,17 @@ -#!/bin/bash -euo pipefail - +#!/bin/bash +set -o errexit -o nounset -o pipefail cd "`dirname $0`/.." - [ -d venv ] && source venv/bin/activate +mkdir -p distr/variable_ttf +rm -rf distr/variable_ttf/* -DIR=distr/variable_ttf FILE=FiraCode-VF.ttf -rm -rf $DIR/$FILE -fontmake -g FiraCode.glyphs -o variable --output-dir $DIR +awk '/name = Retina;/ { print; print "exports = 0;"; next }1' FiraCode.glyphs > FiraCode_VF.glyphs +fontmake -g FiraCode_VF.glyphs -o variable --output-dir distr/variable_ttf +rm FiraCode_VF.glyphs -cd distr/variable_ttf +pushd distr/variable_ttf # fix variable font metadata – very important gftools fix-vf-meta $FILE @@ -29,3 +30,5 @@ gftools fix-dsig --autofix $FILE rm -rf *-gasp.ttf # TODO (late 2019?): use TTFautohint-VF for variable font (current support is minimal) + +popd \ No newline at end of file diff --git a/script/build_woff b/script/build_woff.sh similarity index 79% rename from script/build_woff rename to script/build_woff.sh index 1a2af18..3ec4b09 100755 --- a/script/build_woff +++ b/script/build_woff.sh @@ -1,10 +1,11 @@ -#!/bin/bash -euo pipefail -# requires sfnt2woff-zopfli (get from https://github.com/bramstein/homebrew-webfonttools) - +#!/bin/bash +set -o errexit -o nounset -o pipefail cd "`dirname $0`/.." [ -d venv ] && source venv/bin/activate +mkdir -p distr/woff +rm -rf distr/woff/* -rm -rf distr/*/*.woff +# requires sfnt2woff-zopfli (get from https://github.com/bramstein/homebrew-webfonttools) ttfs=$(ls distr/*/*.ttf) for ttf in $ttfs; do diff --git a/script/build_woff2 b/script/build_woff2.sh similarity index 77% rename from script/build_woff2 rename to script/build_woff2.sh index 87f291b..1625503 100755 --- a/script/build_woff2 +++ b/script/build_woff2.sh @@ -1,10 +1,11 @@ -#!/bin/bash -euo pipefail -# requires woff2_compress (get from https://github.com/bramstein/homebrew-webfonttools) - +#!/bin/bash +set -o errexit -o nounset -o pipefail cd "`dirname $0`/.." [ -d venv ] && source venv/bin/activate +mkdir -p distr/woff2 +rm -rf distr/woff2/* -rm -rf distr/*/*.woff2 +# requires woff2_compress (get from https://github.com/bramstein/homebrew-webfonttools) ttfs=$(ls distr/*/*.ttf) for ttf in $ttfs; do diff --git a/script/clean.sh b/script/clean.sh new file mode 100755 index 0000000..62a1886 --- /dev/null +++ b/script/clean.sh @@ -0,0 +1,8 @@ +#!/bin/bash +set -o errexit -o nounset -o pipefail +cd "`dirname $0`/.." + +rm -rf distr/ttf +rm -rf distr/variable_ttf +rm -rf distr/woff2 +rm -rf distr/woff \ No newline at end of file diff --git a/script/version.py b/script/version.py new file mode 100755 index 0000000..5ced59e --- /dev/null +++ b/script/version.py @@ -0,0 +1,18 @@ +#! /usr/bin/env python3 + +import os, re, subprocess, sys + +def revision(): + os.chdir(os.path.abspath(os.path.dirname(__file__) + '/..')) + desc = subprocess.check_output(["git", "describe", "--tags"], cwd = os.path.dirname(__file__)).decode("utf-8") + match = re.match("([0-9.]+)-([0-9]+)-[a-z0-9]+", desc) + if match: + return match.group(1) + "." + match.group(2) + match = re.match("([0-9]+.[0-9]+).0", desc) + if match: + return match.group(1) + ".0" + raise Exception("Can’t parse revision: " + desc) + +if __name__ == '__main__': + print(revision()) + sys.exit(0) \ No newline at end of file