Estoy usando Node-Canvas para imprimir texto en una imagen y tratando de descubrir cómo garantizar que los caracteres extraños se muestren correctamente, incluso si la fuente principal no puede mostrarlos.
Por lo que encontré en línea, debe usar registerFont con una fuente que pueda mostrar esos caracteres para recurrir, pero parece que no lo usa automáticamente, y no pude encontrar nada sobre cómo decirle si usa un fuente alternativa.
Al registrar una fuente que puede mostrar el carácter (Code2000), todavía aparece así (el carácter "ᗩ" no se muestra correctamente):
(Intentando imprimir HELLO WORLD, I'M ᗩcł! )
Este es mi código:
//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)La fuente "Code2000" puede mostrar el carácter correctamente con seguridad, así que pensé que automáticamente volvería a eso, pero no es así. ¿Hay alguna manera de usar la fuente alternativa automáticamente? Si no, ¿cómo le digo en qué personajes usarlo?
Solo necesita especificar 'Code2000' cuando esté configurando la fuente. Las fuentes consecutivas separadas por comas se utilizan como fuentes alternativas.
ctx.font = '50px Uni Sans, Code2000'Probé esto yo mismo, y funcionó perfectamente.