Added metadata generation procedure.
This commit is contained in:
parent
89c3d4ecfe
commit
cd8f1b2302
3
buildglyphs-final.patel
Normal file
3
buildglyphs-final.patel
Normal file
|
@ -0,0 +1,3 @@
|
|||
|
||||
return font
|
||||
}
|
|
@ -1,69 +1,14 @@
|
|||
define font [require './empty.json']
|
||||
exports.font = font
|
||||
|
||||
define glyphList font.glyf
|
||||
define glyphs (.'.notdef' glyphList.0)
|
||||
|
||||
|
||||
define Glyph [require './support/glyph'].Glyph
|
||||
define Stroke [require './support/stroke'].Stroke
|
||||
|
||||
define para_regular (
|
||||
.width 500
|
||||
.stroke 80
|
||||
.dotsize 125
|
||||
.sb 60
|
||||
.cap 771
|
||||
.xheight 560
|
||||
.hook 145
|
||||
.ahook 135
|
||||
.shook 100
|
||||
.rhook 75
|
||||
.smooth 192
|
||||
.smallsmooth 242
|
||||
.smoothadjust 100
|
||||
.o [-8]
|
||||
.oxhook 0
|
||||
.descender [-178]
|
||||
.kappa 0.515
|
||||
.italicangle 0
|
||||
.barpos 0.45
|
||||
.gbarpos 0.37
|
||||
.longserif 175
|
||||
.accent 175
|
||||
.tbalance 70
|
||||
.tbalance2 30
|
||||
.rbalance 25
|
||||
)
|
||||
define [exports.build para] : begin {
|
||||
|
||||
define para_bold : Object.create para_regular
|
||||
para_bold.sb = 50
|
||||
para_bold.stroke = 120
|
||||
para_bold.dotsize = 160
|
||||
para_bold.barpos = 0.42
|
||||
para_bold.hook = 150
|
||||
para_bold.ahook = 100
|
||||
para_bold.oxhook = 0
|
||||
para_bold.kappa_hook = 0.7
|
||||
para_bold.kappa_ahook = 0.60
|
||||
para_bold.jbalance = 60
|
||||
para_bold.tbalance = 60
|
||||
para_bold.rbalance = 18
|
||||
define variantSelector para.variantSelector
|
||||
|
||||
define para_italic : Object.create para_regular
|
||||
para_italic.italicangle = 10
|
||||
para_italic.tbalance = 70
|
||||
para_italic.rbalance = 30
|
||||
define font [require './empty.json']
|
||||
|
||||
define para_bolditalic : Object.create para_bold
|
||||
para_bolditalic.italicangle = 10
|
||||
para_bolditalic.tbalance = 90
|
||||
|
||||
para = para_italic
|
||||
|
||||
define variantSelector (
|
||||
.zero 'slashed'
|
||||
)
|
||||
define glyphList font.glyf
|
||||
define glyphs (.'.notdef' glyphList.0)
|
||||
|
||||
define globalTransform (
|
||||
.xx 1
|
||||
|
@ -162,6 +107,20 @@ define ifMarks (.anchors (.above markAboveCap.anchors.above .below markBe
|
|||
|
||||
Stroke.bindParameters para
|
||||
|
||||
set font.name.fontFamily para.family
|
||||
set font.name.fontSubFamily para.style
|
||||
set font.name.preferredFamily para.family
|
||||
set font.name.preferredSubFamily para.style
|
||||
set font.name.uniqueSubFamily : para.family + ' ' + para.style + ' ' + para.version
|
||||
set font.name.version para.version
|
||||
set font.name.fullName : para.family + ' ' + para.style
|
||||
set font.name.postScriptName : font.name.fullName.replace [regex ' ' 'g'] '-'
|
||||
set font.name.copyright para.copyright
|
||||
set font.'OS/2'.usWeightClass para.weight
|
||||
set font.'OS/2'.bProportion 9 # Monospaced
|
||||
|
||||
### Font names
|
||||
|
||||
### Useful shapes
|
||||
define [Ring u d l r] : begin {
|
||||
local my [[u + d] / 2]
|
2416
buildglyphs.js
Normal file
2416
buildglyphs.js
Normal file
File diff suppressed because it is too large
Load Diff
|
@ -9,7 +9,14 @@
|
|||
{"contours":[[{"x":34,"y":0,"onCurve":true},{"x":34,"y":682,"onCurve":true},{"x":306,"y":682,"onCurve":true},{"x":306,"y":0,"onCurve":true}],[{"x":68,"y":34,"onCurve":true},{"x":272,"y":34,"onCurve":true},{"x":272,"y":648,"onCurve":true},{"x":68,"y":648,"onCurve":true}]],"advanceWidth":500,"name":".notdef"}
|
||||
],
|
||||
"cmap":{},
|
||||
"name":{"fontFamily":"fonteditor","fontSubFamily":"Medium","uniqueSubFamily":"FontEditor 1.0 : fonteditor : 6-10-2014","fullName":"fonteditor","version":"Version 1.0","postScriptName":"fonteditor"},
|
||||
"name":{
|
||||
"fontFamily": "node-sfnt",
|
||||
"fontSubFamily": "regular",
|
||||
"uniqueSubFamily": "node-sfnt blank font",
|
||||
"fullName": "node-sfnt",
|
||||
"version": "Version 1.0",
|
||||
"postScriptName": "node-sfnt"
|
||||
},
|
||||
"hhea":{"version":1,"ascent":812,"descent":-212,"lineGap":92,"advanceWidthMax":374,"minLeftSideBearing":34,"minRightSideBearing":68,"xMaxExtent":306,"caretSlopeRise":1,"caretSlopeRun":0,"caretOffset":0,"reserved0":0,"reserved1":0,"reserved2":0,"reserved3":0,"metricDataFormat":0,"numOfLongHorMetrics":1},
|
||||
"post":{"italicAngle":0,"postoints":65411,"underlinePosition":50,"underlineThickness":0,"isFixedPitch":0,"minMemType42":0,"maxMemType42":0,"minMemType1":0,"maxMemType1":1,"format":2},
|
||||
"OS/2":{"version":4,"xAvgCharWidth":1031,"usWeightClass":400,"usWidthClass":5,"fsType":0,"ySubscriptXSize":665,"ySubscriptYSize":716,"ySubscriptXOffset":0,"ySubscriptYOffset":143,"ySuperscriptXSize":665,"ySuperscriptYSize":716,"ySuperscriptXOffset":0,"ySuperscriptYOffset":491,"yStrikeoutSize":51,"yStrikeoutPosition":265,"sFamilyClass":0,"bFamilyType":2,"bSerifStyle":0,"bWeight":6,"bProportion":3,"bContrast":0,"bStrokeVariation":0,"bArmStyle":0,"bLetterform":0,"bMidline":0,"bXHeight":0,"ulUnicodeRange1":1,"ulUnicodeRange2":268435456,"ulUnicodeRange3":0,"ulUnicodeRange4":0,"achVendID":"PfEd","fsSelection":192,"usFirstCharIndex":0,"usLastCharIndex":0,"sTypoAscender":812,"sTypoDescender":-212,"sTypoLineGap":92,"usWinAscent":812,"usWinDescent":212,"ulCodePageRange1":1,"ulCodePageRange2":0,"sxHeight":792,"sCapHeight":0,"usDefaultChar":0,"usBreakChar":32,"usMaxContext":1}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
var fs = require('fs');
|
||||
var font = require('./font.js');
|
||||
var buildGlyphs = require('./buildglyphs.js');
|
||||
var parameters = require('./parameters');
|
||||
var TTFWriter = require('node-sfnt').TTFWriter;
|
||||
var TTF = require('node-sfnt').TTF;
|
||||
|
||||
|
@ -48,4 +49,7 @@ function writettf(ttf, file){
|
|||
fs.writeFileSync(file, toBuffer(buffer));
|
||||
}
|
||||
|
||||
fs.writeFileSync(process.argv[2], toBuffer(new TTFWriter(options).write(font.font)));
|
||||
var variant = process.argv[2]
|
||||
var outputPath = process.argv[3]
|
||||
|
||||
fs.writeFileSync(outputPath, toBuffer(new TTFWriter(options).write(buildGlyphs.build(parameters[variant]))));
|
25
makefile
25
makefile
|
@ -1,11 +1,26 @@
|
|||
JSFILES = support/glyph.js support/stroke.js
|
||||
SUPPORT_FILES = support/glyph.js support/stroke.js parameters.js
|
||||
GLYPH_SEGMENTS = glyphs/latin-capital.patel glyphs/latin-lower.patel
|
||||
|
||||
all : $(JSFILES) font.js
|
||||
FILES = $(SUPPORT_FILES) buildglyphs.js
|
||||
|
||||
$(JSFILES) :
|
||||
fonts : update codex-regular.ttf codex-bold.ttf codex-italic.ttf codex-bolditalic.ttf
|
||||
|
||||
codex-regular.ttf : $(FILES)
|
||||
node generate regular $@
|
||||
codex-bold.ttf : $(FILES)
|
||||
node generate bold $@
|
||||
codex-italic.ttf : $(FILES)
|
||||
node generate italic $@
|
||||
codex-bolditalic.ttf : $(FILES)
|
||||
node generate bolditalic $@
|
||||
|
||||
update : $(FILES)
|
||||
|
||||
$(SUPPORT_FILES) :
|
||||
patel-c $< -o $@
|
||||
|
||||
font.js : font.patel glyphs/latin-capital.patel glyphs/latin-lower.patel
|
||||
buildglyphs.js : buildglyphs-intro.patel $(GLYPH_SEGMENTS) buildglyphs-final.patel
|
||||
cat $^ | patel-c -o $@
|
||||
support/glyph.js : support/glyph.patel
|
||||
support/stroke.js : support/stroke.patel
|
||||
support/stroke.js : support/stroke.patel
|
||||
parameters.js : parameters.patel
|
64
parameters.js
Normal file
64
parameters.js
Normal file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
var r0_regular, r0_bold, r0_italic, r0_bolditalic;
|
||||
r0_regular = {
|
||||
'width': 500,
|
||||
'stroke': 80,
|
||||
'dotsize': 125,
|
||||
'sb': 60,
|
||||
'cap': 771,
|
||||
'xheight': 560,
|
||||
'hook': 145,
|
||||
'ahook': 135,
|
||||
'shook': 100,
|
||||
'rhook': 75,
|
||||
'smooth': 192,
|
||||
'smallsmooth': 242,
|
||||
'smoothadjust': 100,
|
||||
'o': -8,
|
||||
'oxhook': 0,
|
||||
'descender': -178,
|
||||
'kappa': 0.515,
|
||||
'italicangle': 0,
|
||||
'barpos': 0.45,
|
||||
'gbarpos': 0.37,
|
||||
'longserif': 175,
|
||||
'accent': 175,
|
||||
'tbalance': 70,
|
||||
'tbalance2': 30,
|
||||
'rbalance': 25,
|
||||
'family': 'Codex HW',
|
||||
'style': 'Regular',
|
||||
'weight': 400,
|
||||
'version': 'r0.0.1',
|
||||
'variantSelector': {},
|
||||
'copyright': 'Copyright (c) 2015 Belleve Invis.'
|
||||
};
|
||||
r0_bold = Object['create'](r0_regular);
|
||||
r0_bold['sb'] = 50;
|
||||
r0_bold['stroke'] = 120;
|
||||
r0_bold['dotsize'] = 160;
|
||||
r0_bold['barpos'] = 0.42;
|
||||
r0_bold['hook'] = 150;
|
||||
r0_bold['ahook'] = 100;
|
||||
r0_bold['oxhook'] = 0;
|
||||
r0_bold['kappa_hook'] = 0.7;
|
||||
r0_bold['kappa_ahook'] = 0.6;
|
||||
r0_bold['jbalance'] = 60;
|
||||
r0_bold['tbalance'] = 60;
|
||||
r0_bold['rbalance'] = 18;
|
||||
r0_bold['style'] = 'Bold';
|
||||
r0_bold['weight'] = 600;
|
||||
r0_italic = Object['create'](r0_regular);
|
||||
r0_italic['italicangle'] = 10;
|
||||
r0_italic['tbalance'] = 70;
|
||||
r0_italic['rbalance'] = 30;
|
||||
r0_italic['style'] = 'Italic';
|
||||
r0_bolditalic = Object['create'](r0_bold);
|
||||
r0_bolditalic['italicangle'] = 10;
|
||||
r0_bolditalic['tbalance'] = 90;
|
||||
r0_bolditalic['style'] = 'BoldItalic';
|
||||
exports['regular'] = r0_regular;
|
||||
exports['bold'] = r0_bold;
|
||||
exports['italic'] = r0_italic;
|
||||
exports['bolditalic'] = r0_bolditalic;
|
||||
}
|
67
parameters.patel
Normal file
67
parameters.patel
Normal file
|
@ -0,0 +1,67 @@
|
|||
define regular (
|
||||
.width 500
|
||||
.stroke 80
|
||||
.dotsize 125
|
||||
.sb 60
|
||||
.cap 771
|
||||
.xheight 560
|
||||
.hook 145
|
||||
.ahook 135
|
||||
.shook 100
|
||||
.rhook 75
|
||||
.smooth 192
|
||||
.smallsmooth 242
|
||||
.smoothadjust 100
|
||||
.o [-8]
|
||||
.oxhook 0
|
||||
.descender [-178]
|
||||
.kappa 0.515
|
||||
.italicangle 0
|
||||
.barpos 0.45
|
||||
.gbarpos 0.37
|
||||
.longserif 175
|
||||
.accent 175
|
||||
.tbalance 70
|
||||
.tbalance2 30
|
||||
.rbalance 25
|
||||
|
||||
.family 'Codex HW'
|
||||
.style 'Regular'
|
||||
.weight 400
|
||||
.version 'r0.0.1'
|
||||
.variantSelector (.)
|
||||
.copyright 'Copyright (c) 2015 Belleve Invis.'
|
||||
)
|
||||
|
||||
define bold : Object.create regular
|
||||
bold.sb = 50
|
||||
bold.stroke = 120
|
||||
bold.dotsize = 160
|
||||
bold.barpos = 0.42
|
||||
bold.hook = 150
|
||||
bold.ahook = 100
|
||||
bold.oxhook = 0
|
||||
bold.kappa_hook = 0.7
|
||||
bold.kappa_ahook = 0.60
|
||||
bold.jbalance = 60
|
||||
bold.tbalance = 60
|
||||
bold.rbalance = 18
|
||||
bold.style = 'Bold'
|
||||
bold.weight = 600
|
||||
|
||||
define italic : Object.create regular
|
||||
italic.italicangle = 10
|
||||
italic.tbalance = 70
|
||||
italic.rbalance = 30
|
||||
italic.style = 'Italic'
|
||||
|
||||
define bolditalic : Object.create bold
|
||||
bolditalic.italicangle = 10
|
||||
bolditalic.tbalance = 90
|
||||
bolditalic.style = 'BoldItalic'
|
||||
|
||||
|
||||
exports.regular = regular
|
||||
exports.bold = bold
|
||||
exports.italic = italic
|
||||
exports.bolditalic = bolditalic
|
Loading…
Reference in New Issue
Block a user