Postscript中的宽虚线

3
下面的代码绘制了一条宽的虚线曲线。曲线太宽,导致虚线重叠。在黑色虚线重叠的某些位置,输出结果看起来似乎有问题。我在Mac OS X上的预览和Ghostscript中进行了测试。有人可以解释一下吗?
%!
50 0 translate
500 dup scale
0.3 setlinewidth
[0.05 0.03] 0 setdash
0.1 0.1 moveto 0.2 2 0.6 -1.0 1 1 curveto
stroke
showpage

enter image description here


你可能想尝试使用eofill和/或eoclip来看看它们是否有帮助。默认情况下,PostScript使用"绕组"规则来确定填充的内容/位置。然而,奇偶规则也可能出现问题,并且我不确定它实际上能够修复您的程序。它(几乎)肯定会改变填充的内容,但结果可能仍然与您真正想要的不同。 - Jerry Coffin
@Jerry,没错。如果默认的填充规则是非零环绕,则为什么我们会在重叠部分看到那些白色部分呢? - lhf
我可能应该写得更多——在我看来,上面的填充似乎是基于奇偶规则的,尽管PS默认应该使用非零环绕(例如,基于两个白色部分重叠的黑色四边形)。因此,第一步应该是设置确保它使用非零环绕而不是奇偶。 - Jerry Coffin
@JerryCoffin 的做法是将 stroke 替换为 strokepath fill - luser droog
@luserdroog,这差不多做到了,但我仍然得到了一些奇怪的几何形状。谢谢。 - lhf
描边很难做好。请参阅将在SIGGRAPH 2020上展示的论文“将描边基元转换为填充基元”。 - lhf
1个回答

4

对我而言,这看起来像是一个bug。Acrobat Distiller生成的PDF文件中,短划线段不会展现eofill行为。JAWS PostScript解释器也没有表现出这种情况。可能Mac OS/X预览使用Ghostscript来渲染预览的PostScript文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接