Добавить шрифт в node-canvas

В течение последнего часа я безуспешно пытался добавить шрифт к своему изображению. К сожалению, хотя это может показаться очень простым делом, я не могу заставить его работать.

const Canvas = require('canvas');
var Font = Canvas.Font;
var BerlinSansFBRegular = Font ? new Font('BerlinSansFBRegular', path.join(__dirname,'./BerlinSansFBRegular.ttf')) : null;

//..

let canvas = new Canvas(GIF_WIDTH, height);
let context = canvas.getContext('2d');
context.addFont(BerlinSansFBRegular);
context.font = `13px BerlinSansFBRegular`;

Каталог в окнах C:\Users\...\project\fonts\BerlinSansFBRegular.ttf, это, вероятно, связано с тем, как я указываю свой путь, потому что это приводит к необработанному отказу от обещания: Ошибка: Не найдено.

Внутри папки проекта находится мой .js файл и летучая мышь в.

1 ответ

Решение

Если я не ошибаюсь, (я больше не работаю на машинах с Windows), _dirname вернется согласно Node docs -> "Имя каталога текущего модуля". Это не тот путь, который вы ищете здесь. Вы хотите путь к файлу шрифта, который будет из корня, ../, Я думаю, вам нужно повторить ваш путь здесь:

new Font('BerlinSansFBRegular', path.join(**__dirname**,'./BerlinSansFBRegular.ttf'))

Чтобы убедиться, что я сначала поставил точный путь в приведенной выше строке:

new Font('BerlinSansFBRegular', path.join(C:\Users\...\project\fonts\BerlinSansFBRegular.ttf'./BerlinSansFBRegular.ttf'))

и посмотрите, правильно ли он возвращается, затем используйте реализацию узла root в файл.

Помните, у вас всегда есть process_cwd, чтобы найти текущий путь.

Надеюсь это поможет.

Другие вопросы по тегам