diff --git a/.gitignore b/.gitignore index 9d14ed2..3e27015 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,4 @@ parameters.js support/glyph.js support/stroke.js support/spiroexpand.js -testdrive/*.ttf -testdrive/*.woff -testdrive/*.charmap \ No newline at end of file +testdrive/assets \ No newline at end of file diff --git a/buildglyphs.patel b/buildglyphs.patel index 8ad4c1f..64ca228 100644 --- a/buildglyphs.patel +++ b/buildglyphs.patel @@ -399,17 +399,26 @@ define [buildFont para recursive] : begin return rs define [quadcontrols x1 y1 samples raf ty] : bezcontrols (x1 * 2 / 3) (y1 * 2 / 3) [mix 1 x1 (2 / 3)] [mix 1 y1 (2 / 3)] samples raf ty - define {jhv, jvh} : let [hv {}] [vh {}] : begin - local samples 4 - foreach [j : range 1 samples] : begin - local theta : j / samples * Math.PI / 2 - local c : Math.pow [Math.cos theta] (2 / SUPERNESS) - local s : Math.pow [Math.sin theta] (2 / SUPERNESS) - hv.push {s (1 - c)} - vh.push {(1 - c) s} + define {jhv, jvh} : let [cache {}] : begin + local [build samples] : begin + local hv {} + local vh {} + foreach [j : range 1 samples] : begin + local theta : j / samples * Math.PI / 2 + local c : Math.pow [Math.cos theta] (2 / SUPERNESS) + local s : Math.pow [Math.sin theta] (2 / SUPERNESS) + hv.push {s (1 - c)} + vh.push {(1 - c) s} + cache.(samples) = {.hv hv .vh vh} + local [hv samples] : begin + if [not cache.(samples)] : build samples + return cache.(samples).hv + local [vh samples] : begin + if [not cache.(samples)] : build samples + return cache.(samples).vh list hv vh - define [archv samples notiny k raf] : alsothruthem jhv raf - define [arcvh samples notiny k raf] : alsothruthem jvh raf + define [archv samples notiny k raf] : alsothruthem [jhv [fallback samples 4]] raf + define [arcvh samples notiny k raf] : alsothruthem [jvh [fallback samples 4]] raf define [complexThru] : begin local a : {}.slice.call arguments diff --git a/makefile b/makefile index 6af33d0..4544b3b 100644 --- a/makefile +++ b/makefile @@ -2,10 +2,10 @@ OBJDIR = build SUPPORT_FILES = support/glyph.js support/stroke.js support/spiroexpand.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-ascii.patel glyphs/symbol-punctuation.patel glyphs/symbol-math.patel glyphs/symbol-geometric.patel glyphs/symbol-other.patel glyphs/symbol-letter.patel glyphs/autobuilds.patel FILES = $(SUPPORT_FILES) buildglyphs.js -PARAM_DEFAULT = FAST='$(FAST)' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='$(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' -PARAM_SLAB = FAST='$(FAST)' VARIANTNAME='-slab$(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' -PARAM_CC = FAST='$(FAST)' VARIANTNAME='cc$(VARIANTNAME)' STYLE_COMMON='cc $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' -PARAM_CC_SLAB = FAST='$(FAST)' VARIANTNAME='cc-slab$(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' +PARAM_DEFAULT = FAST='$(FAST)' VARIANTNAME='$(VARIANTNAME)' STYLE_COMMON='$(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' +PARAM_SLAB = FAST='$(FAST)' VARIANTNAME='-slab$(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)' VARIANTNAME='cc$(VARIANTNAME)' STYLE_COMMON='cc $(STYLE_COMMON)' STYLE_UPRIGHT='$(STYLE_UPRIGHT)' STYLE_ITALIC='$(STYLE_ITALIC)' VERSION='$(VERSION)' +PARAM_CC_SLAB = FAST='$(FAST)' VARIANTNAME='cc-slab$(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 ifeq ($(OS),Windows_NT) @@ -15,8 +15,9 @@ LOOPS = 1 endif 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 $@ @@ -42,6 +43,9 @@ fonts-cc : fdts-cc fonts-cc-slab : fdts-cc-slab @$(MAKE) -s -f onegroup.mk fonts $(PARAM_CC_SLAB) + +### USED FOR TESTING AND RELEASING +### DO NOT TOUCH! # testdrive test-default : fonts-default @$(MAKE) -s -f onegroup.mk test $(PARAM_DEFAULT) @@ -52,6 +56,44 @@ test-cc : fonts-cc test-cc-slab : fonts-cc-slab @$(MAKE) -s -f onegroup.mk test $(PARAM_CC_SLAB) +# Pages +pages-default : fonts-default + @$(MAKE) -s -f onegroup.mk pages $(PARAM_DEFAULT) +pages-slab : fonts-slab + @$(MAKE) -s -f onegroup.mk pages $(PARAM_SLAB) +pages-cc : fonts-cc + @$(MAKE) -s -f onegroup.mk pages $(PARAM_CC) +pages-cc-slab : fonts-cc-slab + @$(MAKE) -s -f onegroup.mk pages $(PARAM_CC_SLAB) + +# Release +release-default : fonts-default + @$(MAKE) -s -f onegroup.mk release $(PARAM_DEFAULT) +release-slab : fonts-slab + @$(MAKE) -s -f onegroup.mk release $(PARAM_SLAB) +release-cc : fonts-cc + @$(MAKE) -s -f onegroup.mk release $(PARAM_CC) +release-cc-slab : fonts-cc-slab + @$(MAKE) -s -f onegroup.mk release $(PARAM_CC_SLAB) + +# Archives +archives-default : fonts-default + @$(MAKE) -s -f onegroup.mk archives $(PARAM_DEFAULT) +archives-slab : fonts-slab + @$(MAKE) -s -f onegroup.mk archives $(PARAM_SLAB) +archives-cc : fonts-cc + @$(MAKE) -s -f onegroup.mk archives $(PARAM_CC) +archives-cc-slab : fonts-cc-slab + @$(MAKE) -s -f onegroup.mk archives $(PARAM_CC_SLAB) + +# Variant releases +releasepack-default : $(FILES) | $(OBJDIR) + $(MAKE) pages release VERSION=$(VERSION) +releasepack-hooky : $(FILES) | $(OBJDIR) + $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='-hooky' STYLE_UPRIGHT='v-l-hooky v-i-hooky' +releasepack-zshaped : $(FILES) | $(OBJDIR) + $(MAKE) archives-default archives-cc VERSION=$(VERSION) VARIANTNAME='-zshaped' STYLE_UPRIGHT='v-l-zshaped v-i-zshaped' +release-all : releasepack-default releasepack-hooky releasepack-zshaped $(SUPPORT_FILES) : patel-c --strict $< -o $@ diff --git a/onegroup.mk b/onegroup.mk index 9bf1234..b063963 100644 --- a/onegroup.mk +++ b/onegroup.mk @@ -43,7 +43,7 @@ $(OBJDIR)/.pass0-$(PREFIX)-bolditalic.fdt : $(FILES) | $(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 16000 --uprightify 1 --ttf $@ $< + $(NODE) extract --upm 12800 --uprightify 1 --ttf $@ $< $(ABFEAT) : $(OBJDIR)/.pass0-%.ab.fea : $(OBJDIR)/.pass0-%.fdt $(NODE) extract --feature $@ $< $(MAPS) : $(OBJDIR)/%.charmap : $(OBJDIR)/.pass0-%.fdt @@ -91,32 +91,37 @@ ARCHIVEDIR = release-archives RELEASES = $(subst $(OBJDIR)/,$(RELEASEDIR)/,$(TARGETS)) $(RELEASES) : $(RELEASEDIR)/%.ttf : $(OBJDIR)/%.ttf cp $< $@ -PAGESTTF = $(subst $(OBJDIR)/,pages/assets/,$(TARGETS)) -$(PAGESTTF) : pages/assets/%.ttf : $(OBJDIR)/%.ttf + +PAGEDIR = pages/assets +PAGESTTF = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(TARGETS)) +$(PAGESTTF) : $(PAGEDIR)/%.ttf : $(OBJDIR)/%.ttf cp $< $@ PAGESWOFF = $(subst .ttf,.woff,$(PAGESTTF)) -$(PAGESWOFF) : pages/assets/%.woff : pages/assets/%.ttf +$(PAGESWOFF) : $(PAGEDIR)/%.woff : $(PAGEDIR)/%.ttf sfnt2woff $< -PAGESMAPS = $(subst $(OBJDIR)/,pages/assets/,$(MAPS)) -$(PAGESMAPS) : pages/assets/%.charmap : $(OBJDIR)/%.charmap +PAGESMAPS = $(subst $(OBJDIR)/,$(PAGEDIR)/,$(MAPS)) +$(PAGESMAPS) : $(PAGEDIR)/%.charmap : $(OBJDIR)/%.charmap cp $< $@ -$(ARCHIVEDIR)/$(PREFIX).tar.bz2 : $(TARGETS) + +$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 : $(TARGETS) cd $(OBJDIR) && tar -cjvf ../$@ $(subst $(OBJDIR)/,,$^) -$(ARCHIVEDIR)/$(PREFIX).zip : $(TARGETS) +$(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip : $(TARGETS) cd $(OBJDIR) && 7z a -tzip ../$@ $(subst $(OBJDIR)/,,$^) -archives : $(ARCHIVEDIR)/$(PREFIX).tar.bz2 $(ARCHIVEDIR)/$(PREFIX).zip + +archives : $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).tar.bz2 $(ARCHIVEDIR)/$(PREFIX)-$(VERSION).zip pages : $(PAGESTTF) $(PAGESWOFF) $(PAGESMAPS) release : $(RELEASES) archives pages # testdrive -TESTTTF = $(subst $(OBJDIR)/,testdrive/,$(TARGETS)) -$(TESTTTF) : testdrive/%.ttf : $(OBJDIR)/%.ttf +TESTDIR = testdrive/assets +TESTTTF = $(subst $(OBJDIR)/,$(TESTDIR)/,$(TARGETS)) +$(TESTTTF) : $(TESTDIR)/%.ttf : $(OBJDIR)/%.ttf cp $< $@ TESTWOFF = $(subst .ttf,.woff,$(TESTTTF)) -$(TESTWOFF) : testdrive/%.woff : testdrive/%.ttf +$(TESTWOFF) : $(TESTDIR)/%.woff : $(TESTDIR)/%.ttf sfnt2woff $< -TESTMAPS = $(subst $(OBJDIR)/,testdrive/,$(MAPS)) -$(TESTMAPS) : testdrive/%.charmap : $(OBJDIR)/%.charmap +TESTMAPS = $(subst $(OBJDIR)/,$(TESTDIR)/,$(MAPS)) +$(TESTMAPS) : $(TESTDIR)/%.charmap : $(OBJDIR)/%.charmap cp $< $@ test : $(TESTTTF) $(TESTWOFF) $(TESTMAPS) \ No newline at end of file diff --git a/testdrive/index.html b/testdrive/index.html index 0f54a7e..7342407 100644 --- a/testdrive/index.html +++ b/testdrive/index.html @@ -8,83 +8,83 @@ } @font-face { font-family: IosevkaWEB; - src: url('iosevka-regular.woff') format('woff'), url('iosevka-regular.ttf') format('truetype'); + src: url('assets/iosevka-regular.woff') format('woff'), url('assets/iosevka-regular.ttf') format('truetype'); } @font-face { font-family: IosevkaWEB; font-style: italic; - src: url('iosevka-italic.woff') format('woff'), url('iosevka-italic.ttf') format('truetype'); + src: url('assets/iosevka-italic.woff') format('woff'), url('assets/iosevka-italic.ttf') format('truetype'); } @font-face { font-family: IosevkaWEB; font-weight: bold; - src: url('iosevka-bold.woff') format('woff'), url('iosevka-bold.ttf') format('truetype'); + src: url('assets/iosevka-bold.woff') format('woff'), url('assets/iosevka-bold.ttf') format('truetype'); } @font-face { font-family: IosevkaWEB; font-style: italic; font-weight: bold; - src: url('iosevka-bolditalic.woff') format('woff'), url('iosevka-bolditalic.ttf') format('truetype'); + src: url('assets/iosevka-bolditalic.woff') format('woff'), url('assets/iosevka-bolditalic.ttf') format('truetype'); } @font-face { font-family: IosevkaSlabWEB; - src: url('iosevka-slab-regular.woff') format('woff'), url('iosevka-slab-regular.ttf') format('truetype'); + src: url('assets/iosevka-slab-regular.woff') format('woff'), url('assets/iosevka-slab-regular.ttf') format('truetype'); } @font-face { font-family: IosevkaSlabWEB; font-style: italic; - src: url('iosevka-slab-italic.woff') format('woff'), url('iosevka-slab-italic.ttf') format('truetype'); + src: url('assets/iosevka-slab-italic.woff') format('woff'), url('assets/iosevka-slab-italic.ttf') format('truetype'); } @font-face { font-family: IosevkaSlabWEB; font-weight: bold; - src: url('iosevka-slab-bold.woff') format('woff'), url('iosevka-slab-bold.ttf') format('truetype'); + src: url('assets/iosevka-slab-bold.woff') format('woff'), url('assets/iosevka-slab-bold.ttf') format('truetype'); } @font-face { font-family: IosevkaSlabWEB; font-style: italic; font-weight: bold; - src: url('iosevka-slab-bolditalic.woff') format('woff'), url('iosevka-slab-bolditalic.ttf') format('truetype'); + src: url('assets/iosevka-slab-bolditalic.woff') format('woff'), url('assets/iosevka-slab-bolditalic.ttf') format('truetype'); } @font-face { font-family: IosevkaCCWEB; - src: url('iosevkacc-regular.woff') format('woff'), url('iosevkacc-regular.ttf') format('truetype'); + src: url('assets/iosevkacc-regular.woff') format('woff'), url('assets/iosevkacc-regular.ttf') format('truetype'); } @font-face { font-family: IosevkaCCWEB; font-style: italic; - src: url('iosevkacc-italic.woff') format('woff'), url('iosevkacc-italic.ttf') format('truetype'); + src: url('assets/iosevkacc-italic.woff') format('woff'), url('assets/iosevkacc-italic.ttf') format('truetype'); } @font-face { font-family: IosevkaCCWEB; font-weight: bold; - src: url('iosevkacc-bold.woff') format('woff'), url('iosevkacc-bold.ttf') format('truetype'); + src: url('assets/iosevkacc-bold.woff') format('woff'), url('assets/iosevkacc-bold.ttf') format('truetype'); } @font-face { font-family: IosevkaCCWEB; font-style: italic; font-weight: bold; - src: url('iosevkacc-bolditalic.woff') format('woff'), url('iosevkacc-bolditalic.ttf') format('truetype'); + src: url('assets/iosevkacc-bolditalic.woff') format('woff'), url('assets/iosevkacc-bolditalic.ttf') format('truetype'); } @font-face { font-family: IosevkaCCSlabWEB; - src: url('iosevkacc-slab-regular.woff') format('woff'), url('iosevkacc-slab-regular.ttf') format('truetype'); + src: url('assets/iosevkacc-slab-regular.woff') format('woff'), url('assets/iosevkacc-slab-regular.ttf') format('truetype'); } @font-face { font-family: IosevkaCCSlabWEB; font-style: italic; - src: url('iosevkacc-slab-italic.woff') format('woff'), url('iosevkacc-slab-italic.ttf') format('truetype'); + src: url('assets/iosevkacc-slab-italic.woff') format('woff'), url('assets/iosevkacc-slab-italic.ttf') format('truetype'); } @font-face { font-family: IosevkaCCSlabWEB; font-weight: bold; - src: url('iosevkacc-slab-bold.woff') format('woff'), url('iosevkacc-slab-bold.ttf') format('truetype'); + src: url('assets/iosevkacc-slab-bold.woff') format('woff'), url('assets/iosevkacc-slab-bold.ttf') format('truetype'); } @font-face { font-family: IosevkaCCSlabWEB; font-style: italic; font-weight: bold; - src: url('iosevkacc-slab-bolditalic.woff') format('woff'), url('iosevkacc-slab-bolditalic.ttf') format('truetype'); + src: url('assets/iosevkacc-slab-bolditalic.woff') format('woff'), url('assets/iosevkacc-slab-bolditalic.ttf') format('truetype'); } a { color: black; @@ -362,7 +362,7 @@ sampleRows: [] }, ready: function(){ - this.$http.get(this.currentFont.name + '.charmap', function(data){ + this.$http.get('assets/' + this.currentFont.name + '.charmap', function(data){ var rows = []; var row = null; var uhash = [];