Closed TNGD-YQ closed 1 year ago
一般这种情况可以提取一下 Roboto 字体的子集,只包含英文以及数字字符。然后把它放到 font-family 的最前面。 具体的提取子集方法可以参考 fontmin,ttf 字体见 https://github.com/openmaptiles/fonts/tree/master/roboto
如果希望只生成包含中文字体的切割生成,可以用下面的方法
const path = require("path");
const createFontSlice = require("font-slice");
const unicodeRanges = require("font-slice/src/google-font-unicode-range.json");
const excludeUnicodes =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./;’[]`-=<>?:”{}|~!@#$%^&*()_+"
.split("")
.map((char) => char.charCodeAt(0));
const customUnicodeRange = unicodeRanges.map((range) => ({
unicodes: range.unicodes.filter(
(unicode) => !excludeUnicodes.includes(unicode)
),
}));
createFontSlice({
fontPath: path.resolve(__dirname, "../assets/zpix.ttf"),
outputDir: path.resolve(__dirname, "../output"),
customUnicodeRange,
});
感谢回复,这正是我需要的。谢谢您的说明。
这是一个很棒的项目,感谢您的分享。
我希望可以仅仅包含中文字体的切割生成,英文以及数字字符将使用 Google 的 Roboto 字体,目前来看我只能 fork 你的项目然后修改 google-font-unicode-range.json。