text - 如何在 PostScript 中使页面上的旋转文本居中

标签 text rotation center ghostscript postscript

我使用以下 PostScript 代码将文本 Sample 放在每个 PDF 页面上:

<<
   /EndPage {
   exch pop 2 lt { 
     gsave
     /Arial-Bold 120 selectfont
     .5 setgray 100 100 moveto 45 rotate (Sample) show
     grestore
     true}
     {false}
     ifelse
   } bind
>> setpagedevice

这将文本放在 [100; 100]位置。但我需要将此文本居中(会计文本已旋转)。

如何在页面中心对齐此 45° 旋转文本?

最佳答案

您可以使用 false charpath flattenpath pathbbox获取文本的边界框。
如果当前点是 0 0当你这样做时,左下角的坐标将非常接近 0 0 ,所以右上角的坐标描述了文本的宽度和高度。因此,您只需移动到所需的中心点并通过相对移动到 (-width/2, -height/2) 进行备份。

由于旋转中心也是中心点,因此您需要在旋转之前在那里平移。

%!
/w 612 def
/h 792 def
/Helvetica-Bold 120 selectfont

w .5 mul h .5 mul translate
0 0 moveto
(Sample) false charpath flattenpath pathbbox % llX llY urX urY
4 2 roll pop pop % urX urY

0 0 moveto
45 rotate
-.5 mul exch -.5 mul exch % -wid/2 -ht/2
rmoveto
(Sample) show

为了更准确,请替换 4 2 roll pop pop
exch % llX llY urY urX
4 1 roll % urX llX llY urY
exch sub % urX llX urY-llY
3 1 roll % urY-llY urX llX
sub exch % urX-llX urY-llY

然后该点可以在任何地方(但确实需要有一个当前点,因为 charpath 会像 show 一样构建一条路径,即使 pathbbox 立即销毁它;所以你需要某种 moveto )。

关于text - 如何在 PostScript 中使页面上的旋转文本居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12717457/

相关文章:

c++ - 如何将文本文件读入类的 vector

jquery - 修复旋转父项内可拖动 div 的鼠标方向

html - 我如何将带有 Logo 的 HTML DIV 居中放置在左侧?

css - 带有复选框和文本的水平对齐标签

javascript - 在 Javascript 中将 .txt 文件拆分为数组

html - 导航文本干扰常规?

css - 在CSS中,能不能把TEXT的背景做成某种颜色呢?

c++ - GLM - 旋转使对象消失

ios - 如何为旋转的 UISlider 设置约束?

html - 如何在 div 中居中(背景)图像?