设置画布文本的字体粗细

foo*_*les 3 javascript canvas

我正在尝试使用 Canvas 元素在图像上写入文本。

我已将字体粗细设置为 900,但在移动设备上它不显示。

在桌面上它很好,甚至在响应模式下测试它看起来也很好,但是当我让它上线时,较重的字体粗细并没有出现在我的手机上。

我尝试了Debug JS的注释中的代码片段,修改了一些特定的画布元素来调试它,我发现由于某种原因,它只ctx.font存储字体大小和字体名称,但不存储字体粗细。

我添加了这个词bold,它会存储它,但不会bolder存储数字值。

有谁知道这里发生了什么事吗?

我提供了一个代码片段和调试的屏幕截图,显示了它如何存储字体值。

截屏

function main() {
  // Put template on canvas
  ctx.drawImage(img, 0, 0, size, size);

  ctx.font = "bold 110px 'Saira Condensed', sans-serif";
  ctx.textAlign = "center";
  ctx.fillStyle = "#ffffff";
  ctx.fillText(number, 325, 290);
}
Run Code Online (Sandbox Code Playgroud)

Kai*_*ido 5

Chrome 和 Safari 还要求设置font-style才能使用font-weight的数值:

const canvas = document.querySelector( "canvas" );
const ctx = canvas.getContext( "2d" );
// add 'normal' font-style
ctx.font = "normal 900 24px Unknown, sans-serif";
ctx.fillText( "bold", 50, 50 );

ctx.font = "24px Unknown, sans-serif";
ctx.fillText( "normal", 150, 50 );
Run Code Online (Sandbox Code Playgroud)
canvas { background: white }
Run Code Online (Sandbox Code Playgroud)
<canvas></canvas>
Run Code Online (Sandbox Code Playgroud)