node-fontnik/bin/font-inspect

57 lines
1.4 KiB
JavaScript
Executable File

#!/usr/bin/env node
var path = require('path');
var fs = require('fs');
var queue = require('queue-async');
var argv = require('minimist')(process.argv.slice(2), {
boolean: ['verbose', 'help']
});
if (argv.help) {
console.log('usage: font-inspect --register=FONTDIRECTORY');
console.log('option: --verbose');
console.log('option: --register=FONTDIRECTORY');
console.log('option: --face=SPECIFICFONTFACE');
return;
}
if (argv.register && !process.env.FONTNIK_FONTS) {
process.env.FONTNIK_FONTS = path.resolve(argv.register);
}
var fontnik = require('../index.js');
var faces = [];
if (argv.face) {
faces = [argv.face];
} else {
var register = path.resolve(argv.register);
faces = fs.readdirSync(register).map(function(f) { return path.join(register, f); });
}
if (argv.verbose) {
console.error('resolved', faces);
}
var q = queue();
function getCoverage(face, cb) {
fs.readFile(face, function(err, res) {
if (err) return cb(err);
fontnik.load(res, function(err, faces) {
if (err) return cb(err);
return cb(null, {
face: [faces[0].family_name, faces[0].style_name].join(' '),
coverage: faces[0].points
});
});
});
}
faces.forEach(function(f) { q.defer(getCoverage, f) });
q.awaitAll(function(err, res) {
if (err) console.error(err);
process.stdout.write(JSON.stringify(res, null, 2));
});