|
|
import r from 'restructure';
|
|
|
const fs = require('fs');
|
|
|
|
|
|
var fontkit = {};
|
|
|
export default fontkit;
|
|
|
|
|
|
fontkit.logErrors = false;
|
|
|
|
|
|
let formats = [];
|
|
|
fontkit.registerFormat = function(format) {
|
|
|
formats.push(format);
|
|
|
};
|
|
|
|
|
|
fontkit.openSync = function(filename, postscriptName) {
|
|
|
let buffer = fs.readFileSync(filename);
|
|
|
return fontkit.create(buffer, postscriptName);
|
|
|
};
|
|
|
|
|
|
fontkit.open = function(filename, postscriptName, callback) {
|
|
|
if (typeof postscriptName === 'function') {
|
|
|
callback = postscriptName;
|
|
|
postscriptName = null;
|
|
|
}
|
|
|
|
|
|
fs.readFile(filename, function(err, buffer) {
|
|
|
if (err) { return callback(err); }
|
|
|
|
|
|
try {
|
|
|
var font = fontkit.create(buffer, postscriptName);
|
|
|
} catch (e) {
|
|
|
return callback(e);
|
|
|
}
|
|
|
|
|
|
return callback(null, font);
|
|
|
});
|
|
|
|
|
|
return;
|
|
|
};
|
|
|
|
|
|
fontkit.create = function(buffer, postscriptName) {
|
|
|
for (let i = 0; i < formats.length; i++) {
|
|
|
let format = formats[i];
|
|
|
if (format.probe(buffer)) {
|
|
|
let font = new format(new r.DecodeStream(buffer));
|
|
|
if (postscriptName) {
|
|
|
return font.getFont(postscriptName);
|
|
|
}
|
|
|
|
|
|
return font;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
throw new Error('Unknown font format');
|
|
|
};
|
|
|
|
|
|
fontkit.defaultLanguage = 'en';
|
|
|
fontkit.setDefaultLanguage = function(lang = 'en') {
|
|
|
fontkit.defaultLanguage = lang;
|
|
|
};
|