编程语言
首页 > 编程语言> > javascript – Lion上Safari 5.1中的画布上的字体透明度问题?

javascript – Lion上Safari 5.1中的画布上的字体透明度问题?

作者:互联网

在某些机器上随机出现问题时,canvas元素中的文本将无法在Lion中的Safari 5.1上完全呈现.我的意思是,字母看起来没有透明的背景.这只发生在某些机器上,有时刷新后文本会被清除.我只是使用fillText,它应该只是渲染Arial.

任何人都有同样的问题并能够提出解决方法吗?我试图通过投掷3D变换(旋转等)来触发重绘,但没有运气.

这里的截图(抱歉质量,这是我发送的,但你应该得到的想法)的方式正确的渲染,有时是糟糕的safari渲染:

解决方法:

这是带有ATI GPU的Mac上的硬件加速问题.

我们在画布上运行相同的代码:我们在装有ATI显卡的Mac上遇到了问题;相反,在MacMini上(配备英特尔GPU),绘图非常完美.

如果在Debug – >下选中“禁用Canvas Accelerated Drawing”.在Safari菜单中绘制/合成标志,您将注意到文本周围不再出现透明度错误.

Safari 6.0(在Mac OS X 10.7.4上)显示相同的透明度问题.

– 更新 –
经过多次调查,我们可以说这不是GPU问题,而是Apple问题:在LCD显示器上应用“字体平滑”(AppleFontSmoothing设置).

在我们的观察中,我们测试了两台机器:
1 – 带飞利浦液晶显示屏的Mac Mini
2 – iMac(带有自己的液晶显示器)

第一台机器没有显示问题,因为系统算法无法将显示器识别为LCD显示器.
但是使用命令defaults -currentHost强制AppleFontSmoothing写入-g AppleFontSmoothing -int 2,即使在Mac Mini上也会出现问题.

如果您不希望应用程序再显示问题(保持画布硬件加速),则可以在画布对象上设置’webkitFontSmoothing’属性:

var canvas = document.getElementById('my-canvas');
canvas.style.webkitFontSmoothing = "antialiased"

标签:javascript,html5,safari,canvas,osx-lion
来源: https://codeday.me/bug/20190903/1794921.html