How silly: backslashes are symmetric, i cannot flip a slash to build it.

This commit is contained in:
Belleve Invis 2015-07-27 01:57:39 +08:00
parent 72179f482a
commit 778e3a3b27
4 changed files with 35 additions and 23 deletions

View file

@ -219,7 +219,7 @@ local pickHash : if recursive {
define [create-glyph name actions] : piecewise { define [create-glyph name actions] : piecewise {
[name && actions] : begin { [name && actions] : begin {
if [pickHash && [not pickHash.(name)]] : return nothing 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 () set dependencyProfile`name ()
define glyphObject [new Glyph name] define glyphObject [new Glyph name]
glyphObject.set-width WIDTH glyphObject.set-width WIDTH

View file

@ -3,29 +3,35 @@ var buildGlyphs = require('./buildglyphs.js');
var parameters = require('./parameters'); var parameters = require('./parameters');
var TTFWriter = require('node-sfnt').TTFWriter; var TTFWriter = require('node-sfnt').TTFWriter;
var TTF = require('node-sfnt').TTF; var TTF = require('node-sfnt').TTF;
var argv = require('yargs').argv;
function toArrayBuffer(buffer) { function toArrayBuffer(buffer) {
var length = buffer.length; var length = buffer.length;
var view = new DataView(new ArrayBuffer(length), 0, length); var view = new DataView(new ArrayBuffer(length), 0, length);
for (var i = 0, l = length; i < l; i++) { for (var i = 0, l = length; i < l; i++) {
view.setUint8(i, buffer[i], false); view.setUint8(i, buffer[i], false);
} }
return view.buffer; return view.buffer;
} }
function toBuffer(arrayBuffer) { function toBuffer(arrayBuffer) {
var length = arrayBuffer.byteLength; var length = arrayBuffer.byteLength;
var view = new DataView(arrayBuffer, 0, length); var view = new DataView(arrayBuffer, 0, length);
var buffer = new Buffer(length); var buffer = new Buffer(length);
for (var i = 0, l = length; i < l; i++) { for (var i = 0, l = length; i < l; i++) {
buffer[i] = view.getUint8(i, false); buffer[i] = view.getUint8(i, false);
} }
return buffer; return buffer;
} }
var options = {preserveOS2Version: true} var options = {preserveOS2Version: true}
var variant = process.argv[2]; var variant = argv._[0]
var outputPath = process.argv[3]; var outputPath = argv._[1]
var ttfFont = buildGlyphs.build(parameters[variant]); var ttfFont = buildGlyphs.build(parameters[variant]);
fs.writeFileSync(outputPath, toBuffer(new TTFWriter(options).write(ttfFont))); 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')
}

View file

@ -313,8 +313,13 @@ create-glyph 'backslash' : glyph-construction {
set-width WIDTH set-width WIDTH
assign-unicode "\\" assign-unicode "\\"
include glyphs.slash local cor : 1 / [Math.sqrt [1 - [Math.pow [[RIGHTSB - SB - STROKE] / [parenTop - parenBot]] 2]]]
include : FlipAround MIDDLE parenMid
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 { create-glyph 'numbersign' : glyph-construction {
set-width WIDTH set-width WIDTH

View file

@ -9,6 +9,7 @@ SUPPRESS_ERRORS = 2> /dev/null
endif endif
TARGETS = $(OBJDIR)/iosevka-regular.ttf $(OBJDIR)/iosevka-bold.ttf $(OBJDIR)/iosevka-italic.ttf $(OBJDIR)/iosevka-bolditalic.ttf 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)) STEP0 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass0-,$(TARGETS))
STEP1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass1-,$(TARGETS)) STEP1 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass1-,$(TARGETS))
STEP2 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass2-,$(TARGETS)) STEP2 = $(subst $(OBJDIR)/,$(OBJDIR)/.pass2-,$(TARGETS))
@ -18,13 +19,13 @@ FILES = $(SUPPORT_FILES) buildglyphs.js
fonts : update $(TARGETS) fonts : update $(TARGETS)
$(OBJDIR)/.pass0-iosevka-regular.ttf : $(FILES) $(OBJDIR) $(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) $(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) $(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) $(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 $(STEP1) : $(OBJDIR)/.pass1-%.ttf : $(OBJDIR)/.pass0-%.ttf
fontforge -script pass1-cleanup.pe $< $@ $(SUPPRESS_ERRORS) fontforge -script pass1-cleanup.pe $< $@ $(SUPPRESS_ERRORS)