【发布时间】:2019-02-22 14:23:21
【问题描述】:
我需要使用 自定义字体 并在屏幕外的画布上渲染它们,我已经这样做了,但我无法设置字体渲染的大小 - 结果是很小的渲染。
我见过的所有来源,包括 w3schools.com、developer.mozilla.org 等。天真地假设我们都使用系统字体,并以一种草率的方式与字体名称混合定义大小:ctx.font = "30px宋体”;
事实上,̶,如果我使用的名称我的自定义字体文件放置在相同的文件夹̶(̶“̶c̶u̶s̶t̶o̶m̶.̶w̶o̶f̶f̶”̶)̶̶(或.otf)的̶它的工作原理,̶但是,如果我添加不起作用的像素或点大小(“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 表面上使用它。
三个.js r96.0
【问题讨论】:
标签: javascript fonts three.js html5-canvas