diff --git a/makefile b/makefile index 499a57e..c65fe3e 100644 --- a/makefile +++ b/makefile @@ -1,93 +1,93 @@ -default: fonts - -OBJDIR = build -include makesupport.mk -PARAM_DEFAULT = FAST='$(FAST)' SUFFIX='' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='$(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' -PARAM_SLAB = FAST='$(FAST)' SUFFIX='-slab' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='slab $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' STYLE_X_REGULAR='x-slab-regular' STYLE_X_BOLD='x-slab-bold' STYLE_X_ITALIC='x-slab-italic' STYLE_X_BOLDITALIC='x-slab-bolditalic' VERSION='$(VERSION)' -PARAM_CC = FAST='$(FAST)' SUFFIX='cc' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='cc $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' -PARAM_CC_SLAB = FAST='$(FAST)' SUFFIX='cc-slab' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='cc slab x-cc-slab $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' STYLE_X_REGULAR='x-slab-regular' STYLE_X_BOLD='x-slab-bold' STYLE_X_ITALIC='x-slab-italic' STYLE_X_BOLDITALIC='x-slab-bolditalic' VERSION='$(VERSION)' - -### Sometimes make will freak out and report ACCESS VIOLATION for me... so i have to add some repeation -LOOPS = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 - -fdts : fdts-default fdts-cc fdts-slab fdts-cc-slab -fonts : fonts-default fonts-cc fonts-slab fonts-cc-slab -test : test-default test-cc test-slab test-cc-slab -pages : pages-default pages-cc pages-slab pages-cc-slab -release : release-default release-cc release-slab release-cc-slab - -$(OBJDIR) : - @- mkdir $@ - - -# fdts -fdts-default : $(SCRIPTS) | $(OBJDIR) - @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_DEFAULT) LOOP=$(var);) -fdts-slab : $(SCRIPTS) | $(OBJDIR) - @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_SLAB) LOOP=$(var);) -fdts-cc : $(SCRIPTS) | $(OBJDIR) - @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_CC) LOOP=$(var);) -fdts-cc-slab : $(SCRIPTS) | $(OBJDIR) - @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_CC_SLAB) LOOP=$(var);) - -# ttfs -fonts-default : fdts-default - @$(MAKE) -f onegroup.mk fonts $(PARAM_DEFAULT) -fonts-slab : fdts-slab - @$(MAKE) -f onegroup.mk fonts $(PARAM_SLAB) -fonts-cc : fdts-cc - @$(MAKE) -f onegroup.mk fonts $(PARAM_CC) -fonts-cc-slab : fdts-cc-slab - @$(MAKE) -f onegroup.mk fonts $(PARAM_CC_SLAB) - - -### USED FOR TESTING AND RELEASING -### DO NOT TOUCH! -# testdrive -test-default : fonts-default - @$(MAKE) -f onegroup.mk test $(PARAM_DEFAULT) -test-slab : fonts-slab - @$(MAKE) -f onegroup.mk test $(PARAM_SLAB) -test-cc : fonts-cc - @$(MAKE) -f onegroup.mk test $(PARAM_CC) -test-cc-slab : fonts-cc-slab - @$(MAKE) -f onegroup.mk test $(PARAM_CC_SLAB) - -# Pages -pages-default : fonts-default - @$(MAKE) -f onegroup.mk pages $(PARAM_DEFAULT) -pages-slab : fonts-slab - @$(MAKE) -f onegroup.mk pages $(PARAM_SLAB) -pages-cc : fonts-cc - @$(MAKE) -f onegroup.mk pages $(PARAM_CC) -pages-cc-slab : fonts-cc-slab - @$(MAKE) -f onegroup.mk pages $(PARAM_CC_SLAB) - -# Release -release-default : fonts-default - @$(MAKE) -f onegroup.mk release $(PARAM_DEFAULT) -release-slab : fonts-slab - @$(MAKE) -f onegroup.mk release $(PARAM_SLAB) -release-cc : fonts-cc - @$(MAKE) -f onegroup.mk release $(PARAM_CC) -release-cc-slab : fonts-cc-slab - @$(MAKE) -f onegroup.mk release $(PARAM_CC_SLAB) - -# Archives -archives-default : fonts-default - @$(MAKE) -f onegroup.mk archives $(PARAM_DEFAULT) -archives-slab : fonts-slab - @$(MAKE) -f onegroup.mk archives $(PARAM_SLAB) -archives-cc : fonts-cc - @$(MAKE) -f onegroup.mk archives $(PARAM_CC) -archives-cc-slab : fonts-cc-slab - @$(MAKE) -f onegroup.mk archives $(PARAM_CC_SLAB) - -# Variant releases -releasepack-default : $(SCRIPTS) | $(OBJDIR) - $(MAKE) pages release VERSION=$(VERSION) -releasepack-hooky : $(SCRIPTS) | $(OBJDIR) - $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='variant-hooky-' STYLE_UPRIGHT='v-l-hooky v-i-hooky' -releasepack-zshaped : $(SCRIPTS) | $(OBJDIR) - $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='variant-zshaped-' STYLE_UPRIGHT='v-l-zshaped v-i-zshaped' +default: fonts + +OBJDIR = build +include makesupport.mk +PARAM_DEFAULT = FAST='$(FAST)' SUFFIX='' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='$(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' +PARAM_SLAB = FAST='$(FAST)' SUFFIX='-slab' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='slab $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' STYLE_X_REGULAR='x-slab-regular' STYLE_X_BOLD='x-slab-bold' STYLE_X_ITALIC='x-slab-italic' STYLE_X_BOLDITALIC='x-slab-bolditalic' VERSION='$(VERSION)' +PARAM_CC = FAST='$(FAST)' SUFFIX='cc' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='cc $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' +PARAM_CC_SLAB = FAST='$(FAST)' SUFFIX='cc-slab' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='cc slab x-cc-slab $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' STYLE_X_REGULAR='x-slab-regular' STYLE_X_BOLD='x-slab-bold' STYLE_X_ITALIC='x-slab-italic' STYLE_X_BOLDITALIC='x-slab-bolditalic' VERSION='$(VERSION)' + +### Sometimes make will freak out and report ACCESS VIOLATION for me... so i have to add some repeation +LOOPS = 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + +fdts : fdts-default fdts-cc fdts-slab fdts-cc-slab +fonts : fonts-default fonts-cc fonts-slab fonts-cc-slab +test : test-default test-cc test-slab test-cc-slab +pages : pages-default pages-cc pages-slab pages-cc-slab +release : release-default release-cc release-slab release-cc-slab + +$(OBJDIR) : + @- mkdir $@ + + +# fdts +fdts-default : $(SCRIPTS) | $(OBJDIR) + @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_DEFAULT) LOOP=$(var);) +fdts-slab : $(SCRIPTS) | $(OBJDIR) + @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_SLAB) LOOP=$(var);) +fdts-cc : $(SCRIPTS) | $(OBJDIR) + @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_CC) LOOP=$(var);) +fdts-cc-slab : $(SCRIPTS) | $(OBJDIR) + @$(foreach var,$(LOOPS),$(MAKE) -s -f onegroup.mk fdts $(PARAM_CC_SLAB) LOOP=$(var);) + +# ttfs +fonts-default : fdts-default + @$(MAKE) -f onegroup.mk fonts $(PARAM_DEFAULT) +fonts-slab : fdts-slab + @$(MAKE) -f onegroup.mk fonts $(PARAM_SLAB) +fonts-cc : fdts-cc + @$(MAKE) -f onegroup.mk fonts $(PARAM_CC) +fonts-cc-slab : fdts-cc-slab + @$(MAKE) -f onegroup.mk fonts $(PARAM_CC_SLAB) + + +### USED FOR TESTING AND RELEASING +### DO NOT TOUCH! +# testdrive +test-default : fonts-default + @$(MAKE) -f onegroup.mk test $(PARAM_DEFAULT) +test-slab : fonts-slab + @$(MAKE) -f onegroup.mk test $(PARAM_SLAB) +test-cc : fonts-cc + @$(MAKE) -f onegroup.mk test $(PARAM_CC) +test-cc-slab : fonts-cc-slab + @$(MAKE) -f onegroup.mk test $(PARAM_CC_SLAB) + +# Pages +pages-default : fonts-default + @$(MAKE) -f onegroup.mk pages $(PARAM_DEFAULT) +pages-slab : fonts-slab + @$(MAKE) -f onegroup.mk pages $(PARAM_SLAB) +pages-cc : fonts-cc + @$(MAKE) -f onegroup.mk pages $(PARAM_CC) +pages-cc-slab : fonts-cc-slab + @$(MAKE) -f onegroup.mk pages $(PARAM_CC_SLAB) + +# Release +release-default : fonts-default + @$(MAKE) -f onegroup.mk release $(PARAM_DEFAULT) +release-slab : fonts-slab + @$(MAKE) -f onegroup.mk release $(PARAM_SLAB) +release-cc : fonts-cc + @$(MAKE) -f onegroup.mk release $(PARAM_CC) +release-cc-slab : fonts-cc-slab + @$(MAKE) -f onegroup.mk release $(PARAM_CC_SLAB) + +# Archives +archives-default : fonts-default + @$(MAKE) -f onegroup.mk archives $(PARAM_DEFAULT) +archives-slab : fonts-slab + @$(MAKE) -f onegroup.mk archives $(PARAM_SLAB) +archives-cc : fonts-cc + @$(MAKE) -f onegroup.mk archives $(PARAM_CC) +archives-cc-slab : fonts-cc-slab + @$(MAKE) -f onegroup.mk archives $(PARAM_CC_SLAB) + +# Variant releases +releasepack-default : $(SCRIPTS) | $(OBJDIR) + $(MAKE) pages release VERSION=$(VERSION) +releasepack-hooky : $(SCRIPTS) | $(OBJDIR) + $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='variant-hooky-' STYLE_UPRIGHT='v-l-hooky v-i-hooky' +releasepack-zshaped : $(SCRIPTS) | $(OBJDIR) + $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='variant-zshaped-' STYLE_UPRIGHT='v-l-zshaped v-i-zshaped' release-all : releasepack-default releasepack-hooky releasepack-zshaped \ No newline at end of file diff --git a/makesupport.mk b/makesupport.mk index 3a087f6..bdd7e5d 100644 --- a/makesupport.mk +++ b/makesupport.mk @@ -1,20 +1,20 @@ -SUPPORT_FILES_FROM_PATEL = support/glyph.js support/stroke.js support/spiroexpand.js support/spirokit.js parameters.js -SUPPORT_FILES = $(SUPPORT_FILES_FROM_PATEL) support/glyph.js support/stroke.js support/spiroexpand.js support/spirokit.js parameters.js extract.js generate.js emptyfont.toml parameters.toml -GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/cyrillic-basic.patel glyphs/latin-extend-basis.patel glyphs/latin-extend-decorated.patel glyphs/cyrillic-extended.patel glyphs/numbers.patel glyphs/symbol-punctuation.patel glyphs/symbol-math.patel glyphs/symbol-geometric.patel glyphs/symbol-other.patel glyphs/symbol-letter.patel glyphs/autobuilds.patel -SCRIPTS = $(SUPPORT_FILES) buildglyphs.js -SCRIPTS_FROM_PATEL = $(SUPPORT_FILES_FROM_PATEL) buildglyphs.js - -buildglyphs.js : buildglyphs.patel $(GLYPH_SEGMENTS) - patel-c --optimize --strict $< -o $@ - -$(SUPPORT_FILES_FROM_PATEL) : - patel-c --optimize --strict $< -o $@ -support/glyph.js : support/glyph.patel -support/stroke.js : support/stroke.patel -support/spirokit.js : support/spirokit.patel -support/spiroexpand.js : support/spiroexpand.patel -parameters.js : parameters.patel - -cleanscripts : - -@rm $(SCRIPTS_FROM_PATEL) +SUPPORT_FILES_FROM_PATEL = support/glyph.js support/stroke.js support/spiroexpand.js support/spirokit.js parameters.js +SUPPORT_FILES = $(SUPPORT_FILES_FROM_PATEL) support/glyph.js support/stroke.js support/spiroexpand.js support/spirokit.js parameters.js extract.js generate.js emptyfont.toml parameters.toml +GLYPH_SEGMENTS = glyphs/common-shapes.patel glyphs/overmarks.patel glyphs/latin-basic-capital.patel glyphs/latin-basic-lower.patel glyphs/greek.patel glyphs/cyrillic-basic.patel glyphs/latin-extend-basis.patel glyphs/latin-extend-decorated.patel glyphs/cyrillic-extended.patel glyphs/numbers.patel glyphs/symbol-punctuation.patel glyphs/symbol-math.patel glyphs/symbol-geometric.patel glyphs/symbol-other.patel glyphs/symbol-letter.patel glyphs/autobuilds.patel +SCRIPTS = $(SUPPORT_FILES) buildglyphs.js +SCRIPTS_FROM_PATEL = $(SUPPORT_FILES_FROM_PATEL) buildglyphs.js + +buildglyphs.js : buildglyphs.patel $(GLYPH_SEGMENTS) + patel-c --optimize --strict $< -o $@ + +$(SUPPORT_FILES_FROM_PATEL) : + patel-c --optimize --strict $< -o $@ +support/glyph.js : support/glyph.patel +support/stroke.js : support/stroke.patel +support/spirokit.js : support/spirokit.patel +support/spiroexpand.js : support/spiroexpand.patel +parameters.js : parameters.patel + +cleanscripts : + -@rm $(SCRIPTS_FROM_PATEL) scripts : $(SCRIPTS) \ No newline at end of file diff --git a/onegroup.mk b/onegroup.mk index d7a7a85..ec31880 100644 --- a/onegroup.mk +++ b/onegroup.mk @@ -1,120 +1,120 @@ -default: fonts - -TARGETUPM = 1000 -OBJDIR = build -include makesupport.mk -PREFIX = $(VARIANTNAME)iosevka$(SUFFIX) - -# Change this when an error reports -# On windows, maybe `2> NUL`. - -ifeq ($(OS),Windows_NT) -SHELL = C:\\Windows\\System32\\cmd.exe -SUPPRESS_ERRORS = 2> NUL -else -SUPPRESS_ERRORS = 2> /dev/null -endif - -NODE = node --max_executable_size=4096 - -UPRIGHT = $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-bold.ttf -ITALIC = $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf -TARGETS = $(UPRIGHT) $(ITALIC) -MAPS = $(subst .ttf,.charmap,$(TARGETS)) - -FDTS = $(subst .ttf,.fdt,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS))) -PASS0 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS)) -ABFEAT = $(subst .ttf,.ab.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS))) -FEATURE = $(subst .ttf,.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(UPRIGHT))) -FEATITA = $(subst .ttf,.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(ITALIC))) -PASS1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS)) -PASS1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass1-,$(TARGETS)) -PASS2 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass2-,$(TARGETS)) -PASS3 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass3-,$(TARGETS)) -PASS4 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass4-,$(TARGETS)) - -fonts : $(TARGETS) - -fdts : $(FDTS) - -# Pass 0 : file construction -$(OBJDIR)/.pass0-$(PREFIX)-regular.fdt : $(SCRIPTS) | $(OBJDIR) - $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-book s-upright x-regular $(STYLE_UPRIGHT) $(STYLE_X_REGILAR) -$(OBJDIR)/.pass0-$(PREFIX)-bold.fdt : $(SCRIPTS) | $(OBJDIR) - $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-upright x-bold $(STYLE_UPRIGHT) $(STYLE_X_BOLD) -$(OBJDIR)/.pass0-$(PREFIX)-italic.fdt : $(SCRIPTS) | $(OBJDIR) - $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-book s-italic x-italic $(STYLE_ITALIC) $(STYLE_X_ITALIC) -$(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(SCRIPTS) | $(OBJDIR) - $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-italic x-bolditalic $(STYLE_ITALIC) $(STYLE_X_BOLDITALIC) - -$(PASS0) : $(OBJDIR)/.pass0-%.ttf : $(OBJDIR)/.pass0-%.fdt - $(NODE) extract --upm 12800 --uprightify 1 --ttf $@ $< -$(ABFEAT) : $(OBJDIR)/.pass0-%.ab.fea : $(OBJDIR)/.pass0-%.fdt - $(NODE) extract --feature $@ $< -$(MAPS) : $(OBJDIR)/%.charmap : $(OBJDIR)/.pass0-%.fdt - $(NODE) extract --charmap $@ $< -$(FEATURE) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.fea features/uprightonly.fea - cat $^ > $@ -$(FEATITA) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.fea features/italiconly.fea - cat $^ > $@ - - -# Pass 1 : Outline cleanup and merge -$(PASS1) : $(OBJDIR)/.pass1-%.ttf : pass1-cleanup.py $(OBJDIR)/.pass0-%.ttf - fontforge -quiet -script $^ $@ $(FAST) $(SUPPRESS_ERRORS) -$(PASS2) : $(OBJDIR)/.pass2-%.ttf : pass2-smartround.js $(OBJDIR)/.pass1-%.ttf - $(NODE) $^ $@ --upm $(TARGETUPM) -$(PASS3) : $(OBJDIR)/.pass3-%.ttf : pass3-features.py $(OBJDIR)/.pass2-%.ttf $(OBJDIR)/.pass0-%.fea - fontforge -quiet -script $^ $@ $(TARGETUPM) $(SUPPRESS_ERRORS) -$(PASS4) : $(OBJDIR)/.pass4-%.ttf : pass4-finalize.js $(OBJDIR)/.pass3-%.ttf - @$(NODE) $^ $@.a.ttf - @ttx -q -o $@.a.ttx $@.a.ttf $(SUPPRESS_ERRORS) - @ttx -q -o $@ $@.a.ttx $(SUPPRESS_ERRORS) - @rm $@.a.ttf $@.a.ttx -$(TARGETS) : $(OBJDIR)/%.ttf : $(OBJDIR)/.pass4-%.ttf - ttfautohint $< $@ - -$(OBJDIR) : - @- mkdir $@ - -# releaseing -RELEASEDIR = releases -ARCHIVEDIR = release-archives - -RELEASES = $(subst $(OBJDIR)/,$(RELEASEDIR)/,$(TARGETS)) -$(RELEASES) : $(RELEASEDIR)/%.ttf : $(OBJDIR)/%.ttf - cp $< $@ - -PAGEDIR = pages/assets -PAGESTTF = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(TARGETS)) -$(PAGESTTF) : $(PAGEDIR)/%.ttf : $(OBJDIR)/%.ttf - cp $< $@ -PAGESWOFF = $(subst .ttf,.woff,$(PAGESTTF)) -$(PAGESWOFF) : $(PAGEDIR)/%.woff : $(PAGEDIR)/%.ttf - sfnt2woff $< -PAGESMAPS = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(MAPS)) -$(PAGESMAPS) : $(PAGEDIR)/%.charmap : $(OBJDIR)/%.charmap - cp $< $@ - -$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 : $(TARGETS) - cd $(OBJDIR) && tar -cjvf ../$@ $(subst $(OBJDIR)/,,$^) -$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip : $(TARGETS) - cd $(OBJDIR) && 7z a -tzip ../$@ $(subst $(OBJDIR)/,,$^) - -archives : $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip -pages : $(PAGESTTF) $(PAGESWOFF) $(PAGESMAPS) -release : $(RELEASES) archives pages - -# testdrive -TESTDIR = testdrive/assets -TESTTTF = $(subst $(OBJDIR)/,$(TESTDIR)/,$(TARGETS)) -$(TESTTTF) : $(TESTDIR)/%.ttf : $(OBJDIR)/%.ttf - cp $< $@ -TESTWOFF = $(subst .ttf,.woff,$(TESTTTF)) -$(TESTWOFF) : $(TESTDIR)/%.woff : $(TESTDIR)/%.ttf - sfnt2woff $< -TESTMAPS = $(subst $(OBJDIR)/,$(TESTDIR)/,$(MAPS)) -$(TESTMAPS) : $(TESTDIR)/%.charmap : $(OBJDIR)/%.charmap - cp $< $@ - +default: fonts + +TARGETUPM = 1000 +OBJDIR = build +include makesupport.mk +PREFIX = $(VARIANTNAME)iosevka$(SUFFIX) + +# Change this when an error reports +# On windows, maybe `2> NUL`. + +ifeq ($(OS),Windows_NT) +SHELL = C:\\Windows\\System32\\cmd.exe +SUPPRESS_ERRORS = 2> NUL +else +SUPPRESS_ERRORS = 2> /dev/null +endif + +NODE = node --max_executable_size=4096 + +UPRIGHT = $(OBJDIR)/$(PREFIX)-regular.ttf $(OBJDIR)/$(PREFIX)-bold.ttf +ITALIC = $(OBJDIR)/$(PREFIX)-italic.ttf $(OBJDIR)/$(PREFIX)-bolditalic.ttf +TARGETS = $(UPRIGHT) $(ITALIC) +MAPS = $(subst .ttf,.charmap,$(TARGETS)) + +FDTS = $(subst .ttf,.fdt,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS))) +PASS0 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS)) +ABFEAT = $(subst .ttf,.ab.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS))) +FEATURE = $(subst .ttf,.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(UPRIGHT))) +FEATITA = $(subst .ttf,.fea,$(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(ITALIC))) +PASS1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS)) +PASS1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass1-,$(TARGETS)) +PASS2 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass2-,$(TARGETS)) +PASS3 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass3-,$(TARGETS)) +PASS4 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass4-,$(TARGETS)) + +fonts : $(TARGETS) + +fdts : $(FDTS) + +# Pass 0 : file construction +$(OBJDIR)/.pass0-$(PREFIX)-regular.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-book s-upright x-regular $(STYLE_UPRIGHT) $(STYLE_X_REGILAR) +$(OBJDIR)/.pass0-$(PREFIX)-bold.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-upright x-bold $(STYLE_UPRIGHT) $(STYLE_X_BOLD) +$(OBJDIR)/.pass0-$(PREFIX)-italic.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-book s-italic x-italic $(STYLE_ITALIC) $(STYLE_X_ITALIC) +$(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(SCRIPTS) | $(OBJDIR) + $(NODE) generate -o $@ iosevka $(STYLE_COMMON) w-bold s-italic x-bolditalic $(STYLE_ITALIC) $(STYLE_X_BOLDITALIC) + +$(PASS0) : $(OBJDIR)/.pass0-%.ttf : $(OBJDIR)/.pass0-%.fdt + $(NODE) extract --upm 12800 --uprightify 1 --ttf $@ $< +$(ABFEAT) : $(OBJDIR)/.pass0-%.ab.fea : $(OBJDIR)/.pass0-%.fdt + $(NODE) extract --feature $@ $< +$(MAPS) : $(OBJDIR)/%.charmap : $(OBJDIR)/.pass0-%.fdt + $(NODE) extract --charmap $@ $< +$(FEATURE) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.fea features/uprightonly.fea + cat $^ > $@ +$(FEATITA) : $(OBJDIR)/.pass0-%.fea : $(OBJDIR)/.pass0-%.ab.fea features/common.fea features/italiconly.fea + cat $^ > $@ + + +# Pass 1 : Outline cleanup and merge +$(PASS1) : $(OBJDIR)/.pass1-%.ttf : pass1-cleanup.py $(OBJDIR)/.pass0-%.ttf + fontforge -quiet -script $^ $@ $(FAST) $(SUPPRESS_ERRORS) +$(PASS2) : $(OBJDIR)/.pass2-%.ttf : pass2-smartround.js $(OBJDIR)/.pass1-%.ttf + $(NODE) $^ $@ --upm $(TARGETUPM) +$(PASS3) : $(OBJDIR)/.pass3-%.ttf : pass3-features.py $(OBJDIR)/.pass2-%.ttf $(OBJDIR)/.pass0-%.fea + fontforge -quiet -script $^ $@ $(TARGETUPM) $(SUPPRESS_ERRORS) +$(PASS4) : $(OBJDIR)/.pass4-%.ttf : pass4-finalize.js $(OBJDIR)/.pass3-%.ttf + @$(NODE) $^ $@.a.ttf + @ttx -q -o $@.a.ttx $@.a.ttf $(SUPPRESS_ERRORS) + @ttx -q -o $@ $@.a.ttx $(SUPPRESS_ERRORS) + @rm $@.a.ttf $@.a.ttx +$(TARGETS) : $(OBJDIR)/%.ttf : $(OBJDIR)/.pass4-%.ttf + ttfautohint $< $@ + +$(OBJDIR) : + @- mkdir $@ + +# releaseing +RELEASEDIR = releases +ARCHIVEDIR = release-archives + +RELEASES = $(subst $(OBJDIR)/,$(RELEASEDIR)/,$(TARGETS)) +$(RELEASES) : $(RELEASEDIR)/%.ttf : $(OBJDIR)/%.ttf + cp $< $@ + +PAGEDIR = pages/assets +PAGESTTF = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(TARGETS)) +$(PAGESTTF) : $(PAGEDIR)/%.ttf : $(OBJDIR)/%.ttf + cp $< $@ +PAGESWOFF = $(subst .ttf,.woff,$(PAGESTTF)) +$(PAGESWOFF) : $(PAGEDIR)/%.woff : $(PAGEDIR)/%.ttf + sfnt2woff $< +PAGESMAPS = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(MAPS)) +$(PAGESMAPS) : $(PAGEDIR)/%.charmap : $(OBJDIR)/%.charmap + cp $< $@ + +$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 : $(TARGETS) + cd $(OBJDIR) && tar -cjvf ../$@ $(subst $(OBJDIR)/,,$^) +$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip : $(TARGETS) + cd $(OBJDIR) && 7z a -tzip ../$@ $(subst $(OBJDIR)/,,$^) + +archives : $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip +pages : $(PAGESTTF) $(PAGESWOFF) $(PAGESMAPS) +release : $(RELEASES) archives pages + +# testdrive +TESTDIR = testdrive/assets +TESTTTF = $(subst $(OBJDIR)/,$(TESTDIR)/,$(TARGETS)) +$(TESTTTF) : $(TESTDIR)/%.ttf : $(OBJDIR)/%.ttf + cp $< $@ +TESTWOFF = $(subst .ttf,.woff,$(TESTTTF)) +$(TESTWOFF) : $(TESTDIR)/%.woff : $(TESTDIR)/%.ttf + sfnt2woff $< +TESTMAPS = $(subst $(OBJDIR)/,$(TESTDIR)/,$(MAPS)) +$(TESTMAPS) : $(TESTDIR)/%.charmap : $(OBJDIR)/%.charmap + cp $< $@ + test : $(TESTTTF) $(TESTWOFF) $(TESTMAPS) \ No newline at end of file