主要浏览器的子像素精度的当前状态是什么?

我正在研究一个需要高度准确性的绘图应用程序,我想知道哪个主要的浏览器平台(包括HTML Canvas元素和Flash)为绘制的元素提供了最佳的子像素布局精度Canvas或Flash中的矩形,浏览器中绝对定位的DIV)和文本。

在这个网站和其他网站上有很多与此相关的post(见底部的列表),但是很多都是相当老的,没有一个总结了目前的情况。

我的理解是,Flash具有对子像素定位的本机支持,使用缇来将对象定位到像素的二十分之一,并且当使用TextLayoutFramework时,这种准确性也延伸到文本。 至less有一个报告,但是,这不能在Chrome中正常工作。 任何人都可以确认吗?

我对浏览器情况的理解是,Firefox 14+支持在页面布局和canvas内的文本和绘制元素的子像素定位,但是我无法确定这是多么准确。

我了解Chrome(截至v21)根本不支持子像素定位。

我了解IE9不支持子像素定位,但是从IE下面链接的MS博客上可以看出IE10会。

我不知道是否有任何Mac / PC的差异,我不知道平台和/或浏览器Flash的准确性是否有所不同。

我理解这样一个总结性的问题可能会引起一些争论,但是我相信这个具体的问题足以让人们提供有用的答案,并且希望这个线程能够成为目前定位精度状态的参考。

一些参考:

http://blogs.msdn.com/b/ie/archive/2012/02/17/sub-pixel-rendering-and-the-css-object-model.aspx

Chrome Canvas中的子像素渲染

http://johnblackburne.blogspot.co.uk/2011/11/twips.html

http://ejohn.org/blog/sub-pixel-problems-in-css/

Sub Pixel CSS定位

https://productforums.google.com/forum/?fromgroups=#!topic/chrome/pRt3tiVIkSI

目前,你可以期待最好的四舍五入和子像素支持来自Mozilla与IE作为亚军。 IE可能最终被调整得更好,但是他们的发布周期太长,以至于Mozilla可能会保持领先。

至于做子像素布局,你可能会追逐一缕,因为子像素的优势提高了抗锯齿问题,而不是屏幕位置的准确性。 无论是否支持子像素,您的图像都不会比真实位置的像素更精确。

一些浏览器不能正确缩放的原因与子像素支持无关,这是因为他们没有正确记住确切的位置和舍入。 换句话说,它们过早地将这个位置变成了四舍五入,导致图像错位。

简短的回答:
不,这是不可能的/logging。
而且即使通过实验确定,未来也不保证保持不变。

很长的回答:
在亚像素精度方面,浏览器/操作系统/硬件之间关于如何捕获/呈现input的方面存在很大的差异。 在大多数现代浏览器上启用了h / w加速function后,在不同操作系统上运行不同浏览器的不同PC之间的渲染数量会有很大的变化。 因此,通过共同采样的渲染输出的略微不同的变化,甚至可以识别每个独特的用户。

而不是担心在底层框架的差异,如何devise您的绘图应用程序的UI独立于这些问题。 我现在可以想到的几种方法是:

  1. 允许在缩放/放大级别下编辑图像。

  2. 为元素devise一个alignment网格方法。

更新:
“缩放”操作将您的自定义实现,而不是底层框架的function。 因此,如果您需要像素精度达到像素1/10的数量级,则需要将10x_zoom()作为您的Web应用程序的一部分来实现,该应用程序将呈现数据

第一个像素 – > 10×10像素在(0,0),
第二个像素 – > 10×10像素从(11,11)开始。

这样,人们可以对数据有一个非常放大的视图,但是框架并没有意识到这一点,并且对屏幕上的像素(在我们的例子中现在是图像像素的十分之一)是精确的。

另外一个重要的事情要注意,这个操作会消耗大量的内存,如果一次完成整个图像。 因此,仅在“缩放窗口”中对图像的可见部分进行这样的处理将会更快,并且更less的内存密集处理。

一旦在您的绘图web应用程序中实现,框架中的子像素不准确性可能不会成为用户的问题,因为他总是可以切换到这些模式并提供准确的input。