Node-Canvas неправильно добавляет шрифт
Я работаю над проектом в своем боте, который использует множество пользовательских шрифтов для рендеринга текста на тему Minecraft и отправки его на канал. Тем не менее, я не могу добавить шрифты в свой проект.
var fonts = {
"00":[{name:"000",dir:fontFile('0.ttf','00')},{name:"001",dir:fontFile('1.ttf','00')},{name:"002",dir:fontFile('2.ttf','00')},{name:"003",dir:fontFile('3.ttf','00')},{name:"004",dir:fontFile('4.ttf','00')}],
"01":[{name:"010",dir:fontFile('0.ttf','01')},{name:"011",dir:fontFile('1.ttf','01')},{name:"012",dir:fontFile('2.ttf','01')},{name:"013",dir:fontFile('3.ttf','01')},{name:"014",dir:fontFile('4.ttf','01')}],
"SGA":[{name:"SGA",dir:fontFile('SGA.ttf','')}]
};
Это список шрифтов, которые я собираюсь добавить. Шрифты хранятся в /home/user/bot/fonts
fontFile это функция:
function fontFile(name,dir) {
return path.join(__dirname, '/fonts', dir, name);
}
Я использую этот код, чтобы попытаться добавить его:
var canvas = new Canvas(20,100);
var ctx = canvas.getContext('2d');
for(let i in fonts){
for(let j in fonts[i]){
let f = new Font(fonts[i][j].name,fonts[i][j].dir);
f.addFace(fonts[i][j].dir,'normal');
ctx.addFont(f);
}
}
Затем я добавляю кучу имен в список fontUses
что выглядит примерно так: ["000","000","001","000","001"]
Шрифт затем устанавливается на это и записывается на холст:
ctx.font = "30px " + fontUses[l];
ctx.fillText(charUses[l],10 + offset,80);
//charUses are characters that are supposed to represent the characters in the font. l is a number (such as 0)
Однако когда я загружаю файл, созданный с использованием этих сценариев, к тексту не применяется шрифт.