【发布时间】:2022-03-01 01:19:55
【问题描述】:
我正在使用 Node-Canvas 在图像上打印文本并试图弄清楚如何确保正确显示奇怪的字符,即使主要字体无法显示它们。
根据我在网上找到的内容,您必须使用 registerFont 和 可以 显示这些字符的字体,但它似乎不会自动使用它,我不能'找不到任何关于如何告诉它使用后备字体的信息。
当注册一个可以显示字符的字体(Code2000)时,它仍然是这样的(“ᗩ”字符显示不正确):
(尝试打印HELLO WORLD, I'M ᗩcł!)
这是我的代码:
//load some fallback fonts for custom characters (arial & code2000 in this case)
canvas.registerFont('./Assets/Fonts/arial.ttf', {family: 'Arial'})
canvas.registerFont('./Assets/Fonts/code2000.ttf', {family: 'Code2000'})
//load the Uni Sans Heavy custom font
canvas.registerFont('./Assets/Fonts/Uni_Sans_Heavy.ttf', {family: 'Uni Sans'})
let cnvs = canvas.createCanvas(740, 260)
let ctx = cnvs.getContext('2d')
ctx.fillStyle = "#fff"
ctx.font = '50px Uni Sans'
ctx.fillText(`HELLO WORLD, I'M ᗩcł!`, 50, 100);
message.channel.send({files: [{ attachment: cnvs.toBuffer() }]}).catch(allerrors)
“Code2000”字体肯定可以正确显示字符,所以我认为它会自动回退到那个位置,但事实并非如此。 有没有办法自动使用后备字体?如果不是,我如何告诉它在哪些字符上使用它?
【问题讨论】:
-
您可以尝试将blank fonts 作为备用字体。
标签: javascript node.js discord.js node-canvas