Мне нужно использовать пользовательские шрифты и отображать их на неэкранном холсте, я уже сделал это, но не могу установить размер рендеринга шрифта - в результате получается крошечный рендеринг.
Все источники, которые я видел, включая w3schools.com, developer.mozilla.org и т. Д., Наивно полагают, что мы все используем системные шрифты и определяем размер небрежным образом, смешивая его с именем шрифта как: ctx.font ="30px Arial";
Факт, ̶ что если использовать имя мой пользовательский файл шрифта Размещенные на той же папке ̶ (̶ «̶c̶u̶s̶t̶o̶m̶.̶w̶o̶f̶f̶» ̶) ̶ ̶ (ОШ .otf) ̶ это работает, ̶̶B̶u̶t̶, если я добавлю размер в пикселях или в точках ("30px custom.woff"), который НЕ работает!
К сожалению, другие параметры, такие как вес шрифта, по-видимому, определяются отдельно (говорят о невероятной несогласованности HTML5, которая напоминает нам о прошлом).Итак, есть ли способ изменить размер отрисовки пользовательского шрифта для внеэкранного холста, созданного в JS?
Я создаю закадровый холст следующим образом:
var offScreenCanvas = document.createElement('canvas');
offScreenCanvas.width = 256;
offScreenCanvas.height = 256;
var ctx = offScreenCanvas.getContext("2d");
позже, я рендерим шрифт так:
ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);
ctx.font = 'custom.woff';
ctx.fillStyle = 'white';
ctx.fillRect(0, 0, offScreenCanvas.width, 256);
ctx.fillStyle = 'black';
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.fillText(txt, offScreenCanvas.width / 2, offScreenCanvas.height / 2);
Затем я создаю текстуру этогорендеринг и использование его на поверхности three.js.
three.js r96.0
Замена шрифта в jsfiddle (см. комментарии):