186d9c6cdSmaya# common targets: 286d9c6cdSmaya# <no target>, build, ttf-dir: create dedicated dir with TTF files 386d9c6cdSmaya# ttf: create export dir with TTF files, track changes 486d9c6cdSmaya# 4web: dtto for TTF, WOFF, SVG, and EOT 586d9c6cdSmaya 686d9c6cdSmayaFONTFORGE = fontforge 786d9c6cdSmayaPYTHON = python3 886d9c6cdSmayaFONTLINT = fontlint 986d9c6cdSmaya 1086d9c6cdSmaya# TTF->EOT converters in fallback order 1186d9c6cdSmaya# the first one is canonical choice used in the release process 1286d9c6cdSmayaMKEOT = mkeot 1386d9c6cdSmaya# URLs to be used for root string within EOT file; 1486d9c6cdSmaya# defaults to "libre roots" that allow usage on any common web page 1586d9c6cdSmayaMKEOT_URLS = http:// https:// file:// 1686d9c6cdSmayaTTF2EOT = ttf2eot 1786d9c6cdSmayaifneq ($(strip $(shell which $(MKEOT) 2>/dev/null)),) 1886d9c6cdSmaya make_eot = $(MKEOT) $(1) $(MKEOT_URLS) > $(2) 1986d9c6cdSmayaelse 2086d9c6cdSmaya ifneq ($(strip $(shell which $(TTF2EOT) 2>/dev/null)),) 2186d9c6cdSmaya make_eot = $(TTF2EOT) $(1) > $(2) 2286d9c6cdSmaya else 2386d9c6cdSmaya make_eot = $(error No tool for TTF->EOT conversion: $(MKEOT), $(TTF2EOT)) 2486d9c6cdSmaya endif 2586d9c6cdSmayaendif 2686d9c6cdSmaya 2786d9c6cdSmayaEXPORTSCRIPT = scripts/fontexport.pe 2886d9c6cdSmayaFONTTOOLSCRIPT = scripts/setisFixedPitch-fonttools.py 2986d9c6cdSmayaSCRIPTS = $(EXPORTSCRIPT) scripts/sfd2ttf.pe scripts/ttf2sfd.pe 3086d9c6cdSmayaMISCFILES = AUTHORS ChangeLog LICENSE README.md TODO 3186d9c6cdSmayaSRCDIR = src 3286d9c6cdSmayaEXPORTDIR = export 3386d9c6cdSmayaCHECK_PREFIX = check 3486d9c6cdSmaya 3586d9c6cdSmayaVER = 2.1.1 3686d9c6cdSmayaNAME = Liberation 3786d9c6cdSmayaVARIANTS = \ 3886d9c6cdSmaya Mono-Regular Mono-Bold Mono-Italic Mono-BoldItalic \ 3986d9c6cdSmaya Sans-Regular Sans-Bold Sans-Italic Sans-BoldItalic \ 4086d9c6cdSmaya Serif-Regular Serif-Bold Serif-Italic Serif-BoldItalic 4186d9c6cdSmaya 4286d9c6cdSmayaDISTPREFIX := liberation-fonts-$(VER) 4386d9c6cdSmayaDISTPREFIX_TTF := liberation-fonts-ttf-$(VER) 4486d9c6cdSmayaSFDFILES := $(addprefix $(SRCDIR)/$(NAME), $(VARIANTS:=.sfd)) 4586d9c6cdSmayaTTFFILES := $(addprefix $(EXPORTDIR)/$(NAME), $(VARIANTS:=.ttf)) 4686d9c6cdSmaya 4786d9c6cdSmaya# keeping backward compatibility for "build" 4886d9c6cdSmayaall build: ttf-dir 4986d9c6cdSmaya 5086d9c6cdSmaya$(EXPORTDIR): 5186d9c6cdSmaya mkdir -p $@ 5286d9c6cdSmaya 5386d9c6cdSmaya# TrueType/OpenType Font, general usage 5486d9c6cdSmaya# - ttf cares about source file changes, using shared EXPORTDIR 5586d9c6cdSmaya# - ttf-dir should be a bit more efficient, creating dedicated dir for TTF 5686d9c6cdSmayaFORMATS = ttf 5786d9c6cdSmayattf-dir:: $(SFDFILES) 5886d9c6cdSmaya $(FONTFORGE) -script $(EXPORTSCRIPT) -ttf $^ 5986d9c6cdSmaya $(PYTHON) $(FONTTOOLSCRIPT) src/LiberationMono-*.ttf 6086d9c6cdSmaya mv src/LiberationMono-Regular-fixed.ttf src/LiberationMono-Regular.ttf 6186d9c6cdSmaya mv src/LiberationMono-Italic-fixed.ttf src/LiberationMono-Italic.ttf 6286d9c6cdSmaya mv src/LiberationMono-Bold-fixed.ttf src/LiberationMono-Bold.ttf 6386d9c6cdSmaya mv src/LiberationMono-BoldItalic-fixed.ttf src/LiberationMono-BoldItalic.ttf 6486d9c6cdSmaya mkdir -p $(DISTPREFIX_TTF) 6586d9c6cdSmaya mv $(addsuffix .ttf,$(basename $^)) $(DISTPREFIX_TTF) 6686d9c6cdSmaya 6786d9c6cdSmaya# web sites usage 6886d9c6cdSmaya# Web Open Font Format (WOFF); for all modern browsers (W3C recommendation) 6986d9c6cdSmayaFORMATS += woff 7086d9c6cdSmaya# SVG Font; only for WebKit and Presto based browsers (Firefox "avoids" it) 7186d9c6cdSmayaFORMATS += svg 7286d9c6cdSmaya# Embedded OpenType (EOT); MSIE only [extra recipe, FontForge can't create EOT] 7386d9c6cdSmayaFORMATS += eot 7486d9c6cdSmayaeot:: $(addprefix $(EXPORTDIR)/$(NAME), $(VARIANTS:=.eot)) 7586d9c6cdSmaya @echo 7686d9c6cdSmaya$(EXPORTDIR)/%.eot: $(EXPORTDIR)/%.ttf | $(EXPORTDIR) 7786d9c6cdSmaya $(call make_eot,$<,$@) 7886d9c6cdSmaya4web: ttf woff svg eot 7986d9c6cdSmaya 8086d9c6cdSmaya# XXX: declare other formats here if needed (TeX, etc.) 8186d9c6cdSmaya 8286d9c6cdSmaya# default for formats without extra recipes defined above (e.g., not "eot"): 8386d9c6cdSmaya# summary per-format target + single file export for these declared formats 8486d9c6cdSmayadefine FORMAT_template = 8586d9c6cdSmaya$(1):: $$(addprefix $$(EXPORTDIR)/$$(NAME), $$(VARIANTS:=.$(1))) 8686d9c6cdSmaya @echo 8786d9c6cdSmaya$$(EXPORTDIR)/%.$(1):: $$(SRCDIR)/%.sfd | $$(EXPORTDIR) 8886d9c6cdSmaya $$(FONTFORGE) -script $$(EXPORTSCRIPT) -$$(lastword $$(subst ., ,$$@)) $$< 2>/dev/null 8986d9c6cdSmaya mv $$(SRCDIR)/$$(notdir $$@) $$(EXPORTDIR) 9086d9c6cdSmayaendef 9186d9c6cdSmaya$(foreach format,$(FORMATS),$(eval $(call FORMAT_template,$(format)))) 9286d9c6cdSmaya 9386d9c6cdSmayadist: clean-dist dist-sfd dist-ttf 9486d9c6cdSmayadist-src: dist-sfd 9586d9c6cdSmaya 9686d9c6cdSmayadist-sfd:: $(SFDFILES) 9786d9c6cdSmaya tempdir=$$(mktemp -d) \ 9886d9c6cdSmaya && mkdir -p $${tempdir}/$(DISTPREFIX)/{src,scripts} \ 9986d9c6cdSmaya && cp Makefile $(MISCFILES) $${tempdir}/$(DISTPREFIX) \ 10086d9c6cdSmaya && cp $(SFDFILES) $${tempdir}/$(DISTPREFIX)/src \ 10186d9c6cdSmaya && cp $(SCRIPTS) $(FONTTOOLSCRIPT) $${tempdir}/$(DISTPREFIX)/scripts \ 10286d9c6cdSmaya && tar Cczvhf $${tempdir} $(DISTPREFIX).tar.gz $(DISTPREFIX) \ 10386d9c6cdSmaya || echo 'Problem encountered ($@)'; rm -rf -- $${tempdir} 10486d9c6cdSmayadist-ttf: ttf 10586d9c6cdSmaya $(PYTHON) $(FONTTOOLSCRIPT) export/LiberationMono-*.ttf 10686d9c6cdSmaya mv export/LiberationMono-Regular-fixed.ttf export/LiberationMono-Regular.ttf 10786d9c6cdSmaya mv export/LiberationMono-Italic-fixed.ttf export/LiberationMono-Italic.ttf 10886d9c6cdSmaya mv export/LiberationMono-Bold-fixed.ttf export/LiberationMono-Bold.ttf 10986d9c6cdSmaya mv export/LiberationMono-BoldItalic-fixed.ttf export/LiberationMono-BoldItalic.ttf 11086d9c6cdSmaya tempdir=$$(mktemp -d) \ 11186d9c6cdSmaya && mkdir -p $${tempdir}/$(DISTPREFIX_TTF) \ 11286d9c6cdSmaya && cp $(MISCFILES) $(TTFFILES) $${tempdir}/$(DISTPREFIX_TTF) \ 11386d9c6cdSmaya && tar Cczvhf $${tempdir} $(DISTPREFIX_TTF).tar.gz $(DISTPREFIX_TTF) \ 11486d9c6cdSmaya || echo 'Problem encountered ($@)'; rm -rf -- $${tempdir} 11586d9c6cdSmaya# substitute tar line with this if needed: 11686d9c6cdSmaya# && zip -j $(DISTPREFIX_TTF).zip $(MISCFILES) $(TTFFILES) \ 11786d9c6cdSmaya 11886d9c6cdSmayacheck: 11986d9c6cdSmaya log="$(CHECK_PREFIX)_$$(git describe --dirty --always 2>/dev/null||date +%Y%m%d)" \ 12086d9c6cdSmaya && for sfd in $(SFDFILES); do \ 12186d9c6cdSmaya $(FONTLINT) $${sfd} 2>/dev/null | tee -a $${log}; echo; \ 12286d9c6cdSmaya done 12386d9c6cdSmaya 12486d9c6cdSmayaclean: clean-dist 12586d9c6cdSmaya rm -rf -- $(DISTPREFIX)* $(DISTPREFIX_TTF)* 12686d9c6cdSmaya rm -rf -- $(EXPORTDIR) 12786d9c6cdSmaya rm -f -- $(CHECK_PREFIX)_* 12886d9c6cdSmayaclean-dist: 12986d9c6cdSmaya rm -f -- *.tar.gz *.zip 13086d9c6cdSmaya 13186d9c6cdSmaya.PHONY: all build ttf-dir ttf dist dist-src dist-sfd dist-ttf 4web $(FORMATS) check clean clean-dist 132