diff --git a/Makefile b/Makefile index f6cecb4df..4c8125aec 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,13 @@ all: all_const all_const_hinted all_var 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: \ + $(FONTDIR)/var/Inter-UI.var.woff2 \ + $(FONTDIR)/var/Inter-UI-upright.var.woff2 \ + $(FONTDIR)/var/Inter-UI-italic.var.woff2 \ + $(FONTDIR)/var/Inter-UI.var.ttf \ + $(FONTDIR)/var/Inter-UI-upright.var.ttf \ + $(FONTDIR)/var/Inter-UI-italic.var.ttf # Disabled. See https://github.com/rsms/inter/issues/75 # all_var_hinted: $(FONTDIR)/var-hinted/Inter-UI.var.ttf $(FONTDIR)/var-hinted/Inter-UI.var.woff2 @@ -79,8 +85,8 @@ build/%.woff: build/%.ttf all_ufo_masters = $(Regular_ufo_d) $(Black_ufo_d) $(Italic_ufo_d) $(BlackItalic_ufo_d) -$(FONTDIR)/var/Inter-UI.var.ttf: src/Inter-UI.designspace $(all_ufo_masters) - misc/fontbuild compile-var -o $@ src/Inter-UI.designspace +$(FONTDIR)/var/%.var.ttf: src/%.designspace $(all_ufo_masters) + misc/fontbuild compile-var -o $@ $< $(FONTDIR)/const/Inter-UI-Regular.%: src/Inter-UI.designspace $(Regular_ufo_d) misc/fontbuild compile -o $@ src/Inter-UI-Regular.ufo @@ -135,7 +141,7 @@ $(FONTDIR)/const-hinted/%.ttf: $(FONTDIR)/const/%.ttf # 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 +.PRECIOUS: $(FONTDIR)/const/%.ttf $(FONTDIR)/const-hinted/%.ttf $(FONTDIR)/var/%.var.ttf # check var all_check_var: $(FONTDIR)/var/Inter-UI.var.ttf @@ -235,7 +241,7 @@ docs_fonts: cp -a $(FONTDIR)/const/*.woff \ $(FONTDIR)/const/*.woff2 \ $(FONTDIR)/const/*.otf \ - $(FONTDIR)/var/*.woff2 \ + $(FONTDIR)/var/*.* \ docs/font-files/ .PHONY: docs docs_info docs_fonts diff --git a/misc/dist/variable.txt b/misc/dist/variable.txt index 78ac81974..c2a3b5cb2 100644 --- a/misc/dist/variable.txt +++ b/misc/dist/variable.txt @@ -1,6 +1,15 @@ Variable fonts is a new technology still undergoing development. +The directory named "Inter UI (TTF variable)" contains three files: + +- Inter-UI.var.ttf -- multi-axis complete family +- Inter-UI-italic.var.ttf -- italic-only with variable weight axis. +- Inter-UI-upright.var.ttf-- upright-only with variable weight axis. + +The "Inter UI (web)" directory contains WOFF2 versions of these same +font files. + Support for variable fonts is limited as of late 2018, but support is quickly arriving to web browsers, operating systems and design application. diff --git a/misc/fontbuild b/misc/fontbuild index 998739f35..d272a7aec 100755 --- a/misc/fontbuild +++ b/misc/fontbuild @@ -469,6 +469,47 @@ class Main(object): font.save(ufo_path) + def _genSubsetDesignSpace(self, designspace, tag, filename): + ds = designspace + italic = False + if tag == 'italic': + italic = True + elif tag != 'upright': + raise Exception('unexpected tag ' + tag) + + for a in ds.axes: + if a.tag == "slnt": + ds.axes.remove(a) + break + + rmlist = [] + hasDefault = not italic + for source in designspace.sources: + isitalic = source.name.find('italic') != -1 + if italic != isitalic: + rmlist.append(source) + elif italic and not hasDefault: + source.copyLib = True + source.copyInfo = True + source.copyGroups = True + source.copyFeatures = True + hasDefault = True + for source in rmlist: + designspace.sources.remove(source) + + rmlist = [] + for instance in designspace.instances: + isitalic = instance.name.find('italic') != -1 + if italic != isitalic: + rmlist.append(instance) + for instance in rmlist: + designspace.instances.remove(instance) + + self.log("write %s" % relpath(filename, os.getcwd())) + ds.write(filename) + + + def cmd_glyphsync(self, argv): argparser = argparse.ArgumentParser( usage='%(prog)s glyphsync [options]', @@ -557,6 +598,24 @@ class Main(object): self.log("write %s" % relpath(designspace_file, os.getcwd())) designspace.write(designspace_file) + # upright designspace + upright_designspace_file = pjoin(outdir, 'Inter-UI-upright.designspace') + p = Process( + target=self._genSubsetDesignSpace, + args=(designspace, 'upright', upright_designspace_file) + ) + p.start() + procs.append(p) + + # italic designspace + italic_designspace_file = pjoin(outdir, 'Inter-UI-italic.designspace') + p = Process( + target=self._genSubsetDesignSpace, + args=(designspace, 'italic', italic_designspace_file) + ) + p.start() + procs.append(p) + for p in procs: p.join()