Десятичные дроби в фильтрах SVG

Я не могу заставить Chrome (и Opera) использовать фильтры SVG с десятичными значениями в радиусе.

Перейдите по http://oreillymedia.github.io/svg-essentials-examples/ch11/fe_morphology.html и попробуйте ввести 0 или 0,5 в поле радиуса. В Chrome нет изменений, но в Firefox эрозия работает.

У меня есть локаль с десятичной запятой, это играет роль? С запятой это интерпретируется как х, у, хотя.

Это известная проблема? Есть обходные пути?

1 ответ

Решение

Ноль не является допустимым значением для radius приписывать. Чтобы процитировать спецификации:

radius = "число-дополнительный-номер"

Радиус (или радиусы) для операции. Если указаны два числа, первое число представляет радиус х, а второе значение представляет радиус у. Если указано одно число, то это значение используется как для X, так и для Y. Значения находятся в системе координат, установленной атрибутом "primitiveUnits" в элементе "filter". Отрицательное значение - ошибка (см. Обработка ошибок). Нулевое значение отключает эффект данного примитива фильтра (т. Е. Результат представляет собой прозрачное черное изображение). Если атрибут не указан, то эффект такой, как если бы было указано значение 0.

Значение радиуса определяет размер матрицы свертки, которая используется для обработки изображения. По определению, эта матрица должна иметь целое число столбцов и строк. Однако в спецификации не ясно, следует ли округлять дроби в большую или меньшую сторону.

Похоже, что Firefox всегда округляется, а Chrome/Webkit всегда округляется.

В любом случае дробные значения не имеют смысла, поэтому вы всегда должны использовать целые числа.

Другие вопросы по тегам