【问题标题】:Rotating text in postscript在 postscript 中旋转文本
【发布时间】:2020-05-19 19:02:51
【问题描述】:

我有以下后记代码:

/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 坐标和要显示的文本输出文本,还有一个用于旋转的变量。 出于某种原因,当我输出旋转大于 0 度的文本时,之后出现的所有其他文本都不起作用,我似乎无法弄清楚为什么会这样。 在上面的示例中,将显示“text1”和“text2”,但不会显示 3 和 4。

【问题讨论】:

    标签: postscript


    【解决方案1】:

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

    【讨论】:

    • 如果您只想旋转页面上的部分文本而不旋转页面上的其余部分,请在旋转前调用 gsave,在输出文本后调用 grestore。
    【解决方案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
    

    【讨论】:

      【解决方案3】:

      正如用户@pi3 在评论中所说:

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

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

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

      【讨论】:

        【解决方案4】:

        “旋转”命令和电流变换矩阵 (CTM) 用于旋转 Postscript 中显示的文本

        旋转: 45旋转 10 10 移动到 (后记)展示

        CTM 矩阵: [0.7071 0.7071 -0.7071 0.7071 0 0] 连续 10 10 移动到 (后记)展示

        【讨论】:

          猜你喜欢
          • 2013-11-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-31
          相关资源
          最近更新 更多