在postscript中旋转文本

时间:2010-03-17 01:58:33

标签: postscript

我有以下附言代码:

/outputtext {
   /data exch def
   /rot exch def
   /xfont exch def
   /Times-Roman findfont
   xfont scalefont
   setfont
   /y1 exch def
   /x1 exch def
   x1 y1 moveto
   rot rotate
   data show
} def


% x y fontsize rotation (text) outputtext
20 300 12 0 (text1) outputtext
20 400 12 90 (text2) outputtext
20 500 12 90 (text3) outputtext
20 600 12 0 (text4) outputtext
showpage

该功能只是根据x,y co-ords和要显示的文本输出文本,还有一个用于旋转的变量。 出于某种原因,当我输出旋转度> 0度的文本时,之后的所有其他文本将无效,我似乎无法弄清楚为什么会出现这种情况。 在上面的示例中,将显示“text1”和“text2”,但不会显示3和4。

4 个答案:

答案 0 :(得分:3)

Postscript中的rotate命令旋转整个坐标空间,而不是单独的绘图操作。 90 rotate将所有进一步的操作放在工作表的顶部。

答案 1 :(得分:2)

找到它,需要做一个负旋转(所以如果旋转90度,则需要旋转-90度)

需要以下内容:

 rot neg rotate

因此功能变为:

/outputtext {
   /data exch def
   /rot exch def
   /xfont exch def
   /y1 exch def
   /x1 exch def
   /Times-Roman findfont
   xfont scalefont
   setfont
   x1 y1 moveto
   rot rotate
   data show

   rot neg rotate
} def

答案 2 :(得分:1)

@ pi3用户在评论中说:

如果您只想旋转部分文本,而不要旋转页面上的其余文本,请在旋转之前调用gsave,在输出文本之后调用grestore

我相信@ pi3给出的答案应该不仅仅是评论,所以让我粘贴一些示例代码:

newpath
200 100 moveto
gsave
90 rotate
(Lorem Ipsum Dolor Sit Amet) show
grestore

答案 3 :(得分:0)

"旋转"命令和当前转换矩阵(CTM)用于旋转Postscript中的显示文本

<强>旋转: 45旋转 10 10 moveto (后记)节目

CTM矩阵: [0.7071 0.7071 -0.7071 0.7071 0 0] concat 10 10 moveto (后记)节目