Chr*_*isD 5 javascript fonts svg woff
是否有任何可以将WOFF(和WOFF2)字体缩小为仅SVG图像中使用的字形的JavaScript库?例如,给定一个字体和一个字符串数组,它将返回显示这些字符串所需的最小字体。
我首先想到的是使用SVG字体,它相对简单,但不幸的是,大多数浏览器都不支持它们。WOFF和WOFF2得到了很好的支持,并且正在成为标准,但是到目前为止,我还没有找到适合我需要的库的任何运气。
您正在寻找的是字体子集。它将返回一个新的字体文件给您,其中仅包含所需的字符和字距调整对。这可以使用subset-font快速完成。
// npm i subset-font
const subsetFont = require('subset-font');
const mySfntFontBuffer = Buffer.from(/*...*/);
// Create a new font with only the characters required to render "Hello, world!" in WOFF2 format:
const subsetBuffer = await subsetFont(mySfntFontBuffer, 'Hello, world!', {
targetFormat: 'woff2',
});
Run Code Online (Sandbox Code Playgroud)
话虽如此,存在更强大/灵活的库,例如fontkit。如果您正在寻找更复杂的编辑,您可能需要这个。
// npm install fontkit
var fontkit = require('fontkit');
// open a font synchronously
var font = fontkit.openSync('font.ttf');
// layout a string, using default shaping features.
// returns a GlyphRun, describing glyphs and positions.
var run = font.layout('hello world!');
// create a font subset
var subset = font.createSubset();
run.glyphs.forEach(function(glyph) {
subset.includeGlyph(glyph);
});
let buffer = subset.encode();
Run Code Online (Sandbox Code Playgroud)