Линейная функция SVG feComponentTransfer
работает не так, как я ожидал. Наклон -1 и пересечение 1, применяемые к изображению в градациях серого, должны инвертировать изображение: черный -> белый, белый -> черный, 25% серого -> 75% серого, 50% серого без изменений и т. д.
Мои ожидания основаны на http://www.w3.org/TR/filter-effects/#feComponentTransferElement, в котором говорится, что «C' = наклон * C + точка пересечения», где «C — исходный компонент (например, 'feFuncR'), C' — переназначенный компонент; оба в замкнутом интервале [0, 1].".
Следующий фильтр
<filter id="linear">
<feComponentTransfer>
<feFuncR type="linear" slope="-1" intercept="1" />
<feFuncG type="linear" slope="-1" intercept="1" />
<feFuncB type="linear" slope="-1" intercept="1" />
</feComponentTransfer>
</filter>
отображает черный в белый и белый в черный, но промежуточные значения отключены, например. 50 % серого соответствует 90 % серого, а 75 % серого соответствует 98 % серого. Простой пример см. на http://jsfiddle.net/Rpjs2/. Я получаю те же результаты в Firefox и Safari.
Это моя первая попытка использовать фильтры SVG, поэтому я подозреваю, что неправильно понимаю спецификации. Может ли кто-нибудь исправить меня?