# Targets: # all Build everything # test Build and test everyything (implies all_check) # install Build and install all OTF files. (currently Mac-only) # zip Build a complete release-grade ZIP archive of all fonts. # dist Create a new release distribution. Does everything. # # all_const Build all non-variable files # all_const_hinted Build all non-variable files with hints # all_var Build all variable files # all_var_hinted Build all variable files with hints # # all_otf Build all OTF files into FONTDIR/const # all_ttf Build all TTF files into FONTDIR/const # all_ttf_hinted Build all TTF files with hints into FONTDIR/const-hinted # all_web Build all WOFF files into FONTDIR/const # all_web_hinted Build all WOFF files with hints into FONTDIR/const-hinted # all_var Build all variable font files into FONTDIR/var # all_var_hinted Build all variable font files with hints into # FONTDIR/var-hinted # # designspace Build src/Inter-UI.designspace from src/Inter-UI.glyphs # # Style-specific targets: # STYLE_otf Build OTF file for STYLE into FONTDIR/const # STYLE_ttf Build TTF file for STYLE into FONTDIR/const # STYLE_ttf_hinted Build TTF file for STYLE with hints into # FONTDIR/const-hinted # STYLE_web Build WOFF files for STYLE into FONTDIR/const # STYLE_web_hinted Build WOFF files for STYLE with hints into # FONTDIR/const-hinted # STYLE_check Build & check OTF and TTF files for STYLE # # "build" directory output structure: # fonts # const # const-hinted # var # var-hinted # FONTDIR = build/fonts all: all_const all_const_hinted all_var all_var_hinted all_const: all_otf all_ttf all_web all_const_hinted: all_ttf_hinted all_web_hinted all_var: $(FONTDIR)/var/Inter-UI.var.woff2 all_var_hinted: $(FONTDIR)/var-hinted/Inter-UI.var.ttf $(FONTDIR)/var-hinted/Inter-UI.var.woff2 export PATH := $(PWD)/build/venv/bin:$(PATH) # generated.make is automatically generated by init.sh and defines depenencies for # all styles and alias targets include build/etc/generated.make # TTF -> WOFF2 build/%.woff2: build/%.ttf woff2_compress "$<" # TTF -> WOFF build/%.woff: build/%.ttf ttf2woff -O -t woff "$<" "$@" # make sure intermediate TTFs are not gc'd by make .PRECIOUS: build/%.ttf # TTF -> EOT (disabled) # build/%.eot: build/%.ttf # ttf2eot "$<" > "$@" # UFO -> OTF, TTF $(FONTDIR)/var/%.ttf: src/Inter-UI.designspace $(Regular_ufo_d) $(Black_ufo_d) misc/fontbuild compile-var -o $@ src/Inter-UI.designspace $(FONTDIR)/const/Inter-UI-Regular.%: src/Inter-UI.designspace $(Regular_ufo_d) misc/fontbuild compile -o $@ src/Inter-UI-Regular.ufo $(FONTDIR)/const/Inter-UI-Black.%: src/Inter-UI.designspace $(Black_ufo_d) misc/fontbuild compile -o $@ src/Inter-UI-Black.ufo $(FONTDIR)/const/Inter-UI-%.otf: build/ufo/Inter-UI-%.ufo src/Inter-UI.designspace $(Regular_ufo_d) $(Black_ufo_d) misc/fontbuild compile -o $@ $< $(FONTDIR)/const/Inter-UI-%.ttf: build/ufo/Inter-UI-%.ufo src/Inter-UI.designspace $(Regular_ufo_d) $(Black_ufo_d) misc/fontbuild compile -o $@ $< # designspace <- glyphs file src/Inter-UI.designspace: src/Inter-UI.glyphs misc/fontbuild glyphsync $< designspace: src/Inter-UI.designspace .PHONY: designspace # These rules simply short-circuit Make for performance src/Inter-UI.glyphs: @true $(Regular_ufo_d): @true $(Black_ufo_d): @true # instance UFOs <- master UFOs build/ufo/Inter-UI-%.ufo: src/Inter-UI.designspace $(Regular_ufo_d) $(Black_ufo_d) misc/fontbuild instancegen src/Inter-UI.designspace $* # make sure intermediate UFOs are not gc'd by make .PRECIOUS: build/ufo/Inter-UI-%.ufo # Note: The seemingly convoluted dependency graph above is required to # make sure that glyphsync and instancegen are not run in parallel. # hinted TTF files via autohint $(FONTDIR)/const-hinted/%.ttf: $(FONTDIR)/const/%.ttf mkdir -p "$(dir $@)" ttfautohint --fallback-stem-width=256 --no-info --composites "$<" "$@" $(FONTDIR)/var-hinted/%.ttf: $(FONTDIR)/var/%.ttf mkdir -p "$(dir $@)" ttfautohint --fallback-stem-width=256 --no-info --composites "$<" "$@" # make sure intermediate TTFs are not gc'd by make .PRECIOUS: $(FONTDIR)/const/%.ttf $(FONTDIR)/var/%.ttf # check var all_check_var: $(FONTDIR)/var/Inter-UI.var.ttf misc/fontbuild checkfont $^ # test runs all tests # Note: all_check_const is generated by init.sh and runs "fontbuild checkfont" # on all otf and ttf files. test: all_check_const all_check_var # load version, used by zip and dist VERSION := $(shell cat version.txt) # distribution zip files ZIP_FILE_DIST := build/release/Inter-UI-${VERSION}.zip ZIP_FILE_DEV := build/release/Inter-UI-${VERSION}-$(shell git rev-parse --short=10 HEAD).zip ZD = build/tmp/zip # intermediate zip target that creates a zip file at build/tmp/a.zip build/tmp/a.zip: all @rm -rf "$(ZD)" @rm -f build/tmp/a.zip @mkdir -p \ "$(ZD)/Inter UI (web)" \ "$(ZD)/Inter UI (web hinted)" \ "$(ZD)/Inter UI (TTF)" \ "$(ZD)/Inter UI (TTF hinted)" \ "$(ZD)/Inter UI (TTF variable)" \ "$(ZD)/Inter UI (TTF variable hinted)" \ "$(ZD)/Inter UI (OTF)" # copy font files cp -a $(FONTDIR)/const/*.woff \ $(FONTDIR)/const/*.woff2 \ $(FONTDIR)/var/*.woff2 "$(ZD)/Inter UI (web)/" cp -a $(FONTDIR)/const-hinted/*.woff \ $(FONTDIR)/const-hinted/*.woff2 \ $(FONTDIR)/var-hinted/*.woff2 "$(ZD)/Inter UI (web hinted)/" cp -a $(FONTDIR)/const/*.ttf "$(ZD)/Inter UI (TTF)/" cp -a $(FONTDIR)/const-hinted/*.ttf "$(ZD)/Inter UI (TTF hinted)/" cp -a $(FONTDIR)/var/*.ttf "$(ZD)/Inter UI (TTF variable)/" cp -a $(FONTDIR)/var-hinted/*.ttf "$(ZD)/Inter UI (TTF variable hinted)/" cp -a $(FONTDIR)/const/*.otf "$(ZD)/Inter UI (OTF)/" # copy misc stuff cp -a misc/dist/inter-ui.css "$(ZD)/Inter UI (web)/" cp -a misc/dist/inter-ui.css "$(ZD)/Inter UI (web hinted)/" cp -a misc/dist/*.txt "$(ZD)/" cp -a LICENSE.txt "$(ZD)/" # zip cd $(ZD) && zip -q -X -r "../../../$@" * && cd ../.. @rm -rf $(ZD) # zip build/release/Inter-UI-%.zip: build/tmp/a.zip @mkdir -p "$(shell dirname "$@")" @mv -f "$<" "$@" @echo write "$@" zip: ${ZIP_FILE_DEV} zip_dist: pre_dist test ${ZIP_FILE_DIST} .PHONY: zip zip_dist # distribution pre_dist: @echo "Creating distribution for version ${VERSION}" @if [ -f "${ZIP_FILE_DIST}" ]; \ then echo "${ZIP_FILE_DIST} already exists. Bump version or remove the zip file to continue." >&2; \ exit 1; \ fi dist: zip_dist docs_info docs_fonts # $(MAKE) docs_info docs_fonts -j misc/tools/versionize-css.py @echo "——————————————————————————————————————————————————————————————————" @echo "" @echo "Next steps:" @echo "" @echo "1) Commit & push changes" @echo "" @echo "2) Create new release with ${ZIP_FILE_DIST} at" @echo " https://github.com/rsms/inter/releases/new?tag=v${VERSION}" @echo "" @echo "3) Bump version in version.txt (to the next future version)" @echo "" @echo "——————————————————————————————————————————————————————————————————" docs_info: docs/_data/fontinfo.json docs/lab/glyphinfo.json docs/glyphs/metrics.json docs_fonts: rm -rf docs/font-files mkdir docs/font-files cp -a $(FONTDIR)/const/*.woff \ $(FONTDIR)/const/*.woff2 \ $(FONTDIR)/const/*.otf \ $(FONTDIR)/var/*.woff2 \ docs/font-files/ docs/_data/fontinfo.json: docs/font-files/Inter-UI-Regular.otf misc/tools/fontinfo.py misc/tools/fontinfo.py -pretty $< > docs/_data/fontinfo.json docs/lab/glyphinfo.json: build/UnicodeData.txt misc/tools/gen-glyphinfo.py misc/tools/gen-glyphinfo.py -ucd $< src/Inter-UI-*.ufo > $@ docs/glyphs/metrics.json: $(Regular_ufo_d) misc/tools/gen-metrics-and-svgs.py misc/tools/gen-metrics-and-svgs.py src/Inter-UI-Regular.ufo # Download latest Unicode data build/UnicodeData.txt: @echo fetch http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt @curl '-#' -o "$@" http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt # install targets install_ttf: all_ttf_const $(MAKE) all_web -j @echo "Installing TTF files locally at ~/Library/Fonts/Inter UI" rm -rf ~/'Library/Fonts/Inter UI' mkdir -p ~/'Library/Fonts/Inter UI' cp -va $(FONTDIR)/const/*.ttf ~/'Library/Fonts/Inter UI' install_ttf_hinted: all_ttf $(MAKE) all_web -j @echo "Installing autohinted TTF files locally at ~/Library/Fonts/Inter UI" rm -rf ~/'Library/Fonts/Inter UI' mkdir -p ~/'Library/Fonts/Inter UI' cp -va $(FONTDIR)/const-hinted/*.ttf ~/'Library/Fonts/Inter UI' install_otf: all_otf $(MAKE) all_web -j @echo "Installing OTF files locally at ~/Library/Fonts/Inter UI" rm -rf ~/'Library/Fonts/Inter UI' mkdir -p ~/'Library/Fonts/Inter UI' cp -va $(FONTDIR)/const/*.otf ~/'Library/Fonts/Inter UI' install: install_otf # clean removes generated and built fonts in the build directory clean: rm -rvf build/tmp build/fonts .PHONY: all web clean install install_otf install_ttf deploy pre_dist dist geninfo copy_docs_fonts all_const_hinted test glyphsync