node-fontnik/index.js
2015-03-04 13:00:46 -05:00

37 lines
1.2 KiB
JavaScript

var zlib = require('zlib');
var path = require('path');
var util = require('util');
var fontnik = require('./lib/fontnik.node');
module.exports = fontnik;
module.exports.range = range;
module.exports.getRange = getRange;
// Retrieve a range of glyphs as a pbf.
function range(options, callback) {
'use strict';
options = options || {};
options.fontstack = options.fontstack || 'Open Sans Regular';
var glyphs = new fontnik.Glyphs();
glyphs.range(options.fontstack, options.start + '-' + options.end, getRange(options.start, options.end), gzip);
function gzip(err) {
if (err) return callback(err);
var after = glyphs.serialize();
zlib.gzip(after, callback);
}
}
function getRange(start, end) {
if (typeof start !== 'number') throw new Error('start must be a number from 0-65535');
if (start < 0) throw new Error('start must be a number from 0-65535');
if (typeof end !== 'number') throw new Error('end must be a number from 0-65535');
if (end > 65535) throw new Error('end must be a number from 0-65535');
if (start > end) throw new Error('start must be less than or equal to end');
var range = [];
for (var i = start; i <= end; i++) range.push(i);
return range;
}