2

以下是用户手册中的代码:

> stops = mkStops [(gray, 0, 1), (white, 0.5, 1), (purple, 1, 1)]
> gradient = mkLinearGradient stops ((-0.5) ^& 0) (0.5 ^& 0) GradPad
> sq1 = square 1 # fillTexture  gradient
> sq2 = square 1 # fillTexture (gradient & _LG . lGradSpreadMethod .~ GradRepeat
>                                        & _LG . lGradStart .~ (-0.1) ^& 0
>                                        & _LG . lGradEnd .~ 0.1 ^& 0)
> sq3 = square 1 # fillTexture (gradient & _LG . lGradSpreadMethod .~ GradReflect
>                                        & _LG . lGradStart .~ (-0.1) ^& 0
>                                        & _LG . lGradEnd .~ 0.1 ^& 0)
>
> example = hcat' (with & sep .~ 0.25) [sq1, sq2, sq3]

这是我得到的:

在此处输入图像描述

这是手册中的内容:

在此处输入图像描述

他们不太匹配。

ghc 7.8.3, OS X 10.10
diagrams 1.2
output: SVG
4

1 回答 1

1

看起来 mac 的 svg 渲染器不支持传播方法。这是来自具有相同 svg 的 Chrome(OS X 10.9.5,Chrome 版本 37)的屏幕截图:

渐变

像 imagemagick 这样的工具根本不会渲染它们,但这是 SVG 后端中的一个错误,应该在下一个版本中修复。

我实际上一直在为另一个后端手动实现扩展方法,所以我们可能会在 svg 后端为此添加一个选项,以获得更好的兼容性。

Rasterific 和 Cairo 后端渐变应该(大部分)工作。(Cairo 的 svg 输出仍然不适用于 Safari,但它适用于 imagemagick)

于 2015-03-25T10:36:32.710 回答