mirror of
https://github.com/mapbox/node-fontnik.git
synced 2026-01-18 15:54:55 +00:00
63 lines
1.5 KiB
JavaScript
Executable File
63 lines
1.5 KiB
JavaScript
Executable File
#!/usr/bin/env node
|
|
|
|
var path = require('path');
|
|
var fs = require('fs');
|
|
var { queue } = require('d3-queue');
|
|
var glob = require('glob');
|
|
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);
|
|
var pattern = '+(*ttf|*otf)';
|
|
faces = glob.sync(pattern, { nodir: true, cwd: register, matchBase: true });
|
|
faces = faces.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) throw err;
|
|
process.stdout.write(JSON.stringify(res, null, 2));
|
|
});
|