dc-*_*dc- 3 javascript safari html5 canvas osx-lion
在某些机器上随机出现问题时,canvas元素中的文本将无法在Lion中的Safari 5.1上完全呈现.我的意思是,字母看起来没有透明的背景.这只发生在某些机器上,有时刷新后文本会被清除.我只是使用fillText,它应该只是渲染Arial.
任何人都有同样的问题并能够提出解决方法吗?我试图通过投掷3D变换(旋转等)来触发重绘,但没有运气.
这里的截图(抱歉质量,这是我发送的,但你应该得到的想法)的方式正确的渲染,有时是糟糕的safari渲染:

这是带有ATI GPU的Mac上的硬件加速问题.
我们在画布上运行相同的代码:我们在装有ATI显卡的Mac上遇到了问题; 相反,在MacMini上(配备英特尔GPU),绘图非常完美.
如果在Safari菜单中的Debug - > Drawing/Compositing标志下选中"Disable Canvas Accelerated Drawing",您会发现文本周围不再出现透明度错误.
Safari 6.0(在Mac OS X 10.7.4上)显示相同的透明度问题.
- 更新 -
经过多次调查,我们可以说这不是GPU问题,而是苹果问题:在LCD显示器上应用"字体平滑"(AppleFontSmoothing设置).
在我们的观察中,我们在两台机器上进行测试:
1 - Mac Mini和飞利浦LCD
2 - iMac(带有自己的LCD显示器)
第一台机器没有显示问题,因为系统算法无法将显示器识别为LCD显示器.
但是使用命令强制使用AppleFontSmoothing,defaults -currentHost write -g AppleFontSmoothing -int 2即使在Mac Mini上也会出现问题.
如果您不希望应用程序再显示问题(保持画布硬件加速),则可以在画布对象上设置'webkitFontSmoothing'属性:
var canvas = document.getElementById('my-canvas');
canvas.style.webkitFontSmoothing = "antialiased"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
806 次 |
| 最近记录: |