javascript - Canvas 自定义字体渲染错误

标签 javascript canvas fonts font-face

在canvas元素中使用自定义@font-face,在DOM中渲染得很好,当通过canvas渲染时,它会垂直拉伸(stretch)文本。或者可能会水平挤压它,无法判断。

CSS:

@font-face {
    font-family: 'myFont';
    src: url('myFont.ttf');
}

Canvas 元素宽度通过 CSS 设置为其父元素(300x250px 正方形)的 100%,文本通过以下方式添加到 Canvas :

cContext.fillStyle = "rgba(255,255,255,1)";
cContext.font = '58px "myFont"';
cContext.fillText("1000", 22, 71);

enter image description here

最佳答案

 

var c = document.getElementById("square");
var ctx = c.getContext("2d");;
ctx.font = "40px Arial";
ctx.fillStyle = "#FF0000";
ctx.fillText("1000",40,80);

var c2 = document.getElementById("notsquare");
var ctx2 = c2.getContext("2d");;
ctx2.font = "40px Arial";
ctx2.fillStyle = "#FF0000";
ctx2.fillText("1000",40,60);
#square, #notsquare{
  border: 1px solid red;
  }
#notsquare{ 
  width: 300px;
  height: 400px;
  left:0px;
}
<canvas id='square' width='300' height='300' ></canvas>
<canvas id='notsquare' width='300' height='300' ></canvas>

来自@pointy 评论的示例。 要指定 canvas 元素的宽度和高度,您应该使用元素的属性而不是 css。

如果你想调整 Canvas 的大小,你应该在 JS 中这样做,如下所示 Resize HTML5 canvas to fit window

关于javascript - Canvas 自定义字体渲染错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29301375/

相关文章:

javascript - 将图标保留在帖子底部,并在框中显示动态文本

javascript - 这是常规的构造函数吗?

javascript - 在 IE10+ 上下载时 HTML Canvas 图像位深度发生变化

java - Java 中的字体字形 fallthrough

php - 在我的网站中使用 pfm/pfb 自定义字体

c# - 如何通过 javascript 填充 asp 下拉列表?

javascript - AngularJS 安全 token 与 session

javascript - 如何防止在 jquery 对话框表单中输入数据之前执行 javascript 代码

android - 在android中合并两个位图

Java JTextArea 字体