Я создаю 2d-библиотеку node-canvas, используя paper-jsdom-canvas
. PaperJS не может использовать мои пользовательские шрифты, которые я регистрирую, используя registerFont
метод canvas
. Но когда я пытаюсь использовать проект canvas
напрямую, шрифт отображается без проблем.
PaperJS
проект использует 1.3.5
версию node-canvas
. Я обновил проект для использования 2.4.1
. Единственное место, где он сломался, который я исправил, было в Canvas.js
строке файла 52.
Изменено
impl._canvas = new Canvas(size.width, size.height, type);
до
impl._canvas = Canvas.createCanvas(size.width, size.height, type);
Все атрибуты работают должным образом. Установленные шрифты ОС также обнаруживаются. Но пользовательские шрифты игнорируются.
registerFont('path-to-font-file', {family: 'CustomFont'});
const canvas = createCanvas(600, 600);
const paperCanvas = createCanvas(600, 600);
const ctx = canvas.getContext('2d');
ctx.font = "normal 30px CustomFont";
ctx.fillText("Hello World", 10, 50);
// using paperjs
const paper = require("paper");
const project = new paper.Project(paperCanvas);
var text = new paper.PointText();
text.fillColor = 'white';
text.content = 'HELLO';
text.fontSize = '60';
text.fontFamily = 'CustomFont';
text.strokeWidth = 0;
text.strokeColor = 'blue';
text.position = project.view.center;
text.selected = true;
project.activeLayer.addChild(text);
project.view.draw();
// return canvas.toDataURL(); this canvas renders font correctly.
return project.view.element.toDataURL(); // paper does not use registered font
Какие еще изменения необходимы для работы пользовательских шрифтов с PaperJS
?