Added metadata generation procedure.

This commit is contained in:
Belleve Invis 2015-07-21 01:20:47 +08:00
parent 89c3d4ecfe
commit cd8f1b2302
9 changed files with 2603 additions and 2518 deletions

3
buildglyphs-final.patel Normal file
View File

@ -0,0 +1,3 @@
return font
}

View File

@ -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

File diff suppressed because it is too large Load Diff

View File

@ -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}

2450
font.js

File diff suppressed because it is too large Load Diff

View File

@ -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]))));

View File

@ -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
View 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
View 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