Как использовать пользовательский шрифт с paper-jsdom-canvas - PullRequest
0 голосов
/ 24 марта 2019

Я создаю 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?

...