我试图在我的PostScript技能方面略微超越,并尝试用它们之间的30个角度编写12个短语。
我真的不知道如何命名问题,所以标题有点奇怪......
这是我到目前为止的地方:
%!
/Times-Roman findfont 20 scalefont setfont
/r 360 12 / def
306 396 translate
0 0 moveto
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
0 0 moveto
30 rotate
(text) show
showpage
但是这段代码存在一些问题:
text
都会覆盖中间的其他人任何帮助?
答案 0 :(得分:2)
您可以使用for或循环而不是显式编码每个步骤。
由于您从同一位置开始每行文本然后是,因此初始字形将部分重叠。对我来说,在这种情况下你想要发生什么并不明显,我可以立即想到两个选择:
1)将基础区域擦除为白色然后写入文本
2)以偏移量开始文本,使初始字形不重叠。
您可以使用charpath和pathbbox来确定文本边界框的坐标,然后将它们转换为矩形并用白色填充。
你可以通过确定初始字形的高度来做2,再次charpath pathbbox是你的朋友,然后乘以'n'(其中n是迭代次数),以给你一个圆的圆周近似值所有初始字形都适合。然后使用简单的几何体计算出该圆的半径,在绘制文本之前使用0 moveto而不是0 0 moveto。
答案 1 :(得分:2)
根据KenS的建议,translate
和showpage
之间的所有代码都可以替换为:
12 { 0 0 moveto (text) show 30 rotate } repeat
如果您想避免重叠,请使用以下内容:
12 { 50 0 moveto (text) show 30 rotate } repeat