Files
NapCatQQ/.pnpm-store/v3/files/00/a80d074fc6388d77f645924e880548761c53aa75bcadf7245029b171a12ee9ad62f09d318e6ab91cf6ce3fcc0b7f6aef7bf99c963b1e8e14a50cc0e23bc025
TanTan e311ca3275
Build NapCat Artifacts / Windows Loader Test (push) Canceled after 0s
Build NapCat Artifacts / Type Check & Test (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Framework (push) Canceled after 0s
Build NapCat Artifacts / Build NapCat.Shell (push) Canceled after 0s
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

85 lines
1.6 KiB
Plaintext

/**
* @file svg2ttf
* @author junmer
*/
/* eslint-env node */
var isSvg = require('is-svg');
var through = require('through2');
var TTFWriter = require('fonteditor-core').TTFWriter;
var svg2ttfobject = require('fonteditor-core').svg2ttfobject;
var ab2b = require('b3b').ab2b;
var replaceExt = require('replace-ext');
var _ = require('lodash');
/**
* svg2ttf fontmin plugin
*
* @param {Object} opts opts
* @return {Object} stream.Transform instance
* @api public
*/
module.exports = function (opts) {
opts = _.extend({clone: true, hinting: true}, opts);
return through.ctor({
objectMode: true
}, function (file, enc, cb) {
// check null
if (file.isNull()) {
cb(null, file);
return;
}
// check stream
if (file.isStream()) {
cb(new Error('Streaming is not supported'));
return;
}
// check svg
if (!isSvg(file.contents)) {
cb(null, file);
return;
}
// clone
if (opts.clone) {
this.push(file.clone(false));
}
// replace ext
file.path = replaceExt(file.path, '.ttf');
// ttf buffer
var output;
try {
var ttfObj = svg2ttfobject(
file.contents.toString('utf-8')
);
output = ab2b(new TTFWriter(opts).write(ttfObj));
}
catch (ex) {
cb(ex);
}
if (output) {
file.contents = output;
cb(null, file);
}
});
};