rad*_*tao 4 text center postscript rotation ghostscript
我放了文本示例使用以下 PostScript 代码
\n\n<<\n /EndPage {\n exch pop 2 lt { \n gsave\n /Arial-Bold 120 selectfont\n .5 setgray 100 100 moveto 45 rotate (Sample) show\n grestore\n true}\n {false}\n ifelse\n } bind\n>> setpagedevice\n
Run Code Online (Sandbox Code Playgroud)\n\n这会将文本置于 [100; 100]位置。但我需要将此文本居中(会计文本被旋转)。
\n\n如何在页面中央对齐45\xc2\xb0 旋转文本?
\n您可以使用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
Run Code Online (Sandbox Code Playgroud)
为了获得更高的准确性,请替换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
Run Code Online (Sandbox Code Playgroud)
然后该点可以在任何地方(但确实需要有一个当前点,因为charpath
就像构建一条路径一样show
,即使pathbbox
立即销毁它;所以你需要某种moveto
)。
归档时间: |
|
查看次数: |
2103 次 |
最近记录: |