gpt4 book ai didi

javascript - Node Canvas 对未知字符使用后备字体

转载 作者:行者123 更新时间:2023-12-05 00:32:27 25 4
gpt4 key购买 nike

我正在使用 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”字体可以肯定地正确显示字符,所以我认为它会自动回退到那个位置,但事实并非如此。
有没有办法自动使用后备字体?如果不是,我如何告诉它在哪些字符上使用它?

最佳答案

您只需要在设置字体时指定“Code2000”。用逗号分隔的连续字体用作备用字体。

ctx.font = '50px Uni Sans, Code2000'
我自己对此进行了测试,并且效果很好。

关于javascript - Node Canvas 对未知字符使用后备字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71133067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com