javascript - html5 Canvas : maxWidth argument to fillText produces ugly results in Chrome

标签 javascript html google-chrome canvas

fillText 的 maxWidth 参数可用于限制文本呈现的最大宽度,但是,在 chrome 中,我有时会得到非常奇怪的结果。这是一个特别糟糕的例子,我需要将文本的宽度限制为几个像素。以上是对未指定 maxWidth 的 fillText 的调用。底部示例有一个 maxWidth。 “w”和“a”之间的空格太大。是否有任何技巧或解决方法来获得更好的结果?

"Iowa" rendered in chrome and firefox

示例代码如下:

var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");

ctx.font="8pt Arial";
ctx.fillText("Iowa", 10, 40);
ctx.fillText("Iowa", 10, 56, 21);

(编辑:更简单的重现) 要复制你可以去here并查看右下方的框。

更新:原来的问题说 firefox 也有问题。那是一个错误。这个问题似乎只存在于 chrome 中。

最佳答案

你的基本问题是 maxWidth 对呈现的文本执行缩放,但大多数文本不能很好地缩放到非整数大小......基本上,如果你要求 7.9px​​ 的字体,东西将不适合像素网格很好,看起来会很难看。

就避免它而言...除了使用更高的 DPI 显示(我知道这不是真正在你的控制之下),除了避免 API 之外你无能为力。 :(

关于javascript - html5 Canvas : maxWidth argument to fillText produces ugly results in Chrome,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14223851/

相关文章:

javascript - 在服务器端实现 Paper.js 螺旋光栅示例

ASP.Net ScriptControl - 添加 Javascript get_events 方法 : Possible?

根据数据属性查找元素的 jQuery 选择器不起作用

asp.net - 将纯 HTML 页面转换为 ASP .NET aspx 页面的最佳 "process"?

javascript - 更改 URL 后重新加载页面

javascript - 引用 Express API 的 javascript 数组中的子对象

javascript - 仅使用常量的静态 JavaScript 函数是否会被编译为常量

javascript - JQuery 点击并输入 keyup,不同的类

javascript - 有 sqlite admin chrome 扩展吗?

javascript - 在 Chrome 控制台的列表中显示所有对象方法?