这个问题至少不是政治性的!
在查看此处找到的希拉里徽标的SVG版本时,我注意到H的两个垂直栏中都有槽口。箭头横杆覆盖了这些槽口,因此在查看徽标时看不到它们。但是我很好奇为什么设计师可能会加入这些缺口。有人知道吗
这个问题至少不是政治性的!
在查看此处找到的希拉里徽标的SVG版本时,我注意到H的两个垂直栏中都有槽口。箭头横杆覆盖了这些槽口,因此在查看徽标时看不到它们。但是我很好奇为什么设计师可能会加入这些缺口。有人知道吗
Answers:
如果没有这些凹口,您很可能会看到底部形状的边缘与重叠形状的边缘相遇(无论如何,在屏幕上,打印时并不是真正的问题)。
您可以在此处查看示例和可能的伪像的说明:
几乎没有任何理由要使边缘完全对齐而导致类似的伪影,因此使用希拉里徽标中的“缺口”是一种很好的习惯。
了解栅格化和画家的算法可能会有所帮助。
将矢量图形(由多边形而不是像素定义的图形)渲染为像素的一种方法是在运行画家的算法时光栅化多边形。
画家的算法是一个自下而上的过程,其中您首先放下背景,然后在每一层颜色的背景上绘制,直到到达顶层。
沉积图层时,请注意其覆盖范围(通常存储在额外的通道,即alpha通道中),并使用它来将添加的颜色与已经存在的颜色混合。
如果您的新图层覆盖了50%的像素,并且是蓝色,则用蓝色对该像素的当前颜色进行平均,然后在该位置绘制颜色。
如果要创建具有透明度的图像,事情会变得有些复杂,但从根本上讲并不是这样。
栅格化是将多边形变成像素的过程。在这里,我们使用一些代数计算出多边形覆盖了给定像素的数量,然后计算了覆盖量。
如果多边形的两条边重合-恰好彼此重叠-但两条边都覆盖了给定的像素,则发生问题。
假设底部多边形为红色,顶部多边形为蓝色,背景为白色。
首先,我们将红色油漆。这与白色混合,导致50%白色50%红色。
然后,我们将其涂成蓝色。这与50%白色50%红色混合,我们得到25%白色25%红色50%蓝色。如果红色和蓝色在中间相遇,或者蓝色完全覆盖红色,则会发生相同的情况。
但是“实际上”蓝色多边形完全覆盖了红色多边形,那么为什么我们看到它呢?因为该算法会忘记子像素的定位细节。
只要一个多边形的覆盖率达到100%,这不是问题。
现在,这个问题不是根本的。您可以使用类似射线追踪的方法(在点处以N ^ 2的倍数进行过度渲染)进行多边形渲染,甚至可以使用类似纯矢量的方法(从下面的形状的几何形状中减去块状形状)他们,将其删除)。在任何情况下,“隐藏”颜色都不会泄漏到输出图像。
画家的算法并不是“隐藏的”几何图形可能泄漏的唯一情况。如果使用不透明的介质进行打印,则有时颜色层无法完全对齐。因此,当顶层应完全覆盖底层时,底层会泄漏。
因为您不知道矢量图像的输出方式,所以像这样的槽口可以使您制作出的图像对于不完善的打印/显示技术而言更加坚固。
蔡是对的。我以为我也会添加一个视觉答案。
发生这种情况的原因是它是SVG。与控制每个渲染像素的光栅图像不同,SVG的光栅化发生在浏览器中……因此浏览器做出了这些决定。
浏览器必须做出的决定之一是何时进行抗锯齿。当沿线的点落在像素上时,通常会执行此操作。然后它将反混淆该像素。因为它将渲染SVG的所有层,所以它将对每一层都执行此操作,这就是您可以开始获取边缘伪像的地方。当您使用SVG的缩放进行播放时尤其如此,因为这将导致SVG与不同的屏幕像素重叠。
这是绿色框与Chrome中的红色框重叠的屏幕截图。顶部是100%页面缩放,底部是放大。请注意渲染该边缘的区别:
如果我将其截屏并放大以显示栅格化,则可以更清楚地了解正在发生的情况:
理想的解决方案是使浏览器中的SVG光栅化器“更智能”,而不是呈现堆叠的内容,但是鉴于SVG元素可以在外部进行操作并实时运行(因为它只是XML文件),所以这不是一个实际的解决方案用于浏览器。
因此,设计师可以使用看到的凹口来做出决定。
顺便说一下,这在概念上类似于如何使用陷印处理打印中的套准。