如何使HTML5 MeasureText()和FillText()一致的跨浏览器

时间:2012-09-17 20:46:33

标签: html5 canvas cross-browser render

我在使用HTML5 Canvas进行文字渲染时出现问题,您可以在http://jsfiddle.net/qcVAV/看到。

似乎Firefox和Internet Explorer会测量文本并对其进行一致填充,但Chrome不会。

在提供的链接中,您将看到Internet Explorer和Firefox显示相同,并且measureText调用显示提供的文本测量为1679.在Firefox中有额外的精度。但是,对于Chrome,文字的测量值为1651。

我尝试添加css reset http://cssreset.com - 因为我认为也许css可能会把事情搞砸。

我还能做些什么(如果有的话)才能让文字一致地呈现?

1 个答案:

答案 0 :(得分:2)

抱歉,你在这里运气不好!

文本不仅在每个浏览器上进行不同的测量,它的缩放和渲染方式也大不相同!尝试将字体大小乘以4并将比例缩小为4,结果可能会让您感到惊讶。某些浏览器中的字距调整将会关闭,而且在应用缩放时,Opera看起来很糟糕。

使measureText保持一致的唯一方法是预先计算。

使fillText保持一致的唯一方法是使用图像而不是文本。 It's must faster, anyway

如果文字非常动态,这些都是站不住脚的,但是如果你只是写一篇文章说,你的应用中不到100个不同的文字,那么图像可能是你最好的选择。