SVG 过滤器中的小数

Decimals in SVG filters

我无法Chrome(和 Opera)使用半径为小数值的 SVG 滤镜。

转到 http://oreillymedia.github.io/svg-essentials-examples/ch11/fe_morphology.html 并尝试在半径字段中输入 0 或 0.5。在 Chrome 中没有变化,但在 Firefox 中腐蚀有效。

我有一个带有十进制逗号的语言环境,它起作用了吗?不过,如果使用逗号,它会被解释为 x,y。

这是一个已知问题吗?有什么解决方法吗?

零不是 radius 属性的有效值。引用规范:

radius = "number-optional-number"

The radius (or radii) for the operation. If two numbers are provided, the first number represents a x-radius and the second value represents a y-radius. If one number is provided, then that value is used for both X and Y. The values are in the coordinate system established by attribute ‘primitiveUnits’ on the ‘filter’ element. A negative value is an error (see Error processing). A value of zero disables the effect of the given filter primitive (i.e., the result is a transparent black image). If the attribute is not specified, then the effect is as if a value of 0 were specified.

半径值决定了用于处理图像的卷积矩阵的大小。根据定义,该矩阵必须具有整数个列和行。然而,规范并不清楚分数是否应该向上或向下舍入。

似乎 Firefox 总是向上取整,而 Chrome/Webkit 总是向下取整。

在任何情况下,小数值都没有意义,因此您应该始终使用整数。