From 778e3a3b27c99e841336e1bbac7fc1689bb07d21 Mon Sep 17 00:00:00 2001 From: Belleve Invis Date: Mon, 27 Jul 2015 01:57:39 +0800 Subject: [PATCH] How silly: backslashes are symmetric, i cannot flip a slash to build it. --- buildglyphs-intro.patel | 2 +- generate.js | 38 ++++++++++++++++++++++---------------- glyphs/symbol-ascii.patel | 9 +++++++-- makefile | 9 +++++---- 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/buildglyphs-intro.patel b/buildglyphs-intro.patel index 7596574..f923e43 100644 --- a/buildglyphs-intro.patel +++ b/buildglyphs-intro.patel @@ -219,7 +219,7 @@ local pickHash : if recursive { define [create-glyph name actions] : piecewise { [name && actions] : begin { if [pickHash && [not pickHash.(name)]] : return nothing - console.log : "Building /" + name + [if recursive " (recursive)" ""] + " for " + para.family + ' ' + para.style + process.stderr.write : "Building /" + name + [if recursive " (recursive)" ""] + " for " + para.family + ' ' + para.style + "\n" set dependencyProfile`name () define glyphObject [new Glyph name] glyphObject.set-width WIDTH diff --git a/generate.js b/generate.js index 5870c3a..ddb47b1 100644 --- a/generate.js +++ b/generate.js @@ -3,29 +3,35 @@ var buildGlyphs = require('./buildglyphs.js'); var parameters = require('./parameters'); var TTFWriter = require('node-sfnt').TTFWriter; var TTF = require('node-sfnt').TTF; + +var argv = require('yargs').argv; + function toArrayBuffer(buffer) { - var length = buffer.length; - var view = new DataView(new ArrayBuffer(length), 0, length); - for (var i = 0, l = length; i < l; i++) { - view.setUint8(i, buffer[i], false); - } - return view.buffer; + var length = buffer.length; + var view = new DataView(new ArrayBuffer(length), 0, length); + for (var i = 0, l = length; i < l; i++) { + view.setUint8(i, buffer[i], false); + } + return view.buffer; } function toBuffer(arrayBuffer) { - var length = arrayBuffer.byteLength; - var view = new DataView(arrayBuffer, 0, length); - var buffer = new Buffer(length); - for (var i = 0, l = length; i < l; i++) { - buffer[i] = view.getUint8(i, false); - } - return buffer; + var length = arrayBuffer.byteLength; + var view = new DataView(arrayBuffer, 0, length); + var buffer = new Buffer(length); + for (var i = 0, l = length; i < l; i++) { + buffer[i] = view.getUint8(i, false); + } + return buffer; } var options = {preserveOS2Version: true} -var variant = process.argv[2]; -var outputPath = process.argv[3]; +var variant = argv._[0] +var outputPath = argv._[1] var ttfFont = buildGlyphs.build(parameters[variant]); -fs.writeFileSync(outputPath, toBuffer(new TTFWriter(options).write(ttfFont))); \ No newline at end of file +if(outputPath) fs.writeFileSync(outputPath, toBuffer(new TTFWriter(options).write(ttfFont))); +if(argv.dumpmap) { + fs.writeFileSync(argv.dumpmap, JSON.stringify(ttfFont.glyf.map(function(glyph){ return [glyph.name, glyph.unicode]})), 'utf8') +} \ No newline at end of file diff --git a/glyphs/symbol-ascii.patel b/glyphs/symbol-ascii.patel index f7074d8..80e5dcf 100644 --- a/glyphs/symbol-ascii.patel +++ b/glyphs/symbol-ascii.patel @@ -313,8 +313,13 @@ create-glyph 'backslash' : glyph-construction { set-width WIDTH assign-unicode "\\" - include glyphs.slash - include : FlipAround MIDDLE parenMid + local cor : 1 / [Math.sqrt [1 - [Math.pow [[RIGHTSB - SB - STROKE] / [parenTop - parenBot]] 2]]] + + start-from SB parenTop + line-to [SB + STROKE * cor] parenTop + line-to RIGHTSB parenBot + line-to [RIGHTSB - STROKE * cor] parenBot + reverse-last } create-glyph 'numbersign' : glyph-construction { set-width WIDTH diff --git a/makefile b/makefile index 4d7ed6d..9cbf9bf 100644 --- a/makefile +++ b/makefile @@ -9,6 +9,7 @@ SUPPRESS_ERRORS = 2> /dev/null endif TARGETS = $(OBJDIR)/iosevka-regular.ttf $(OBJDIR)/iosevka-bold.ttf $(OBJDIR)/iosevka-italic.ttf $(OBJDIR)/iosevka-bolditalic.ttf +MAPS = $(subst .ttf,.charmap,$(TARGETS)) STEP0 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS)) STEP1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass1-,$(TARGETS)) STEP2 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass2-,$(TARGETS)) @@ -18,13 +19,13 @@ FILES = $(SUPPORT_FILES) buildglyphs.js fonts : update $(TARGETS) $(OBJDIR)/.pass0-iosevka-regular.ttf : $(FILES) $(OBJDIR) - node generate regular $@ + node generate regular $@ --dumpmap $(OBJDIR)/iosevka-regular.charmap $(OBJDIR)/.pass0-iosevka-bold.ttf : $(FILES) $(OBJDIR) - node generate bold $@ + node generate bold $@ --dumpmap $(OBJDIR)/iosevka-bold.charmap $(OBJDIR)/.pass0-iosevka-italic.ttf : $(FILES) $(OBJDIR) - node generate italic $@ + node generate italic $@ --dumpmap $(OBJDIR)/iosevka-italic.charmap $(OBJDIR)/.pass0-iosevka-bolditalic.ttf : $(FILES) $(OBJDIR) - node generate bolditalic $@ + node generate bolditalic $@ --dumpmap $(OBJDIR)/iosevka-bolditalic.charmap $(STEP1) : $(OBJDIR)/.pass1-%.ttf : $(OBJDIR)/.pass0-%.ttf fontforge -script pass1-cleanup.pe $< $@ $(SUPPRESS_ERRORS)