有没有办法通过 PostScript 添加一个字符串,这样它就会被“...”截断,以免超过一定的宽度?
我正在查看一些旧的报告生成代码,并希望添加此功能。在现有报告中,太长的值在视觉上会覆盖其他数据。
我尝试在 PS 级别执行此操作的原因是,在现有代码中我看不到任何可以计算任何类型的精确宽度指标的内容。
我还没有写任何后记,所以也许这是微不足道的。 (?)
下面的评论:是的,本地化将是一个问题。所以我想用户定义的“省略号”字符串是有意义的。
以下是一些示例输出,显示当前如何打印字符串:
% Change font style and/or size
/Times-Roman-ISOLatin1 findfont 12 scalefont setfont
219 234 moveto (AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA_) show
可以修改它以省略事物吗?
最佳答案
你可以这样做(用省略号替换连接字符串前面的字符):
/concatstrings % (a) (b) -> (ab)
{ exch dup length
2 index length add string
dup dup 4 2 roll copy length
4 -1 roll putinterval
} bind def
/ellipsis_show {
1 dict begin
/width_t exch def
{dup stringwidth pop width_t lt {exit} if dup length 1 sub 0 exch getinterval} loop
(_) concatstrings
show
end
}def
% Change font style and/or size
/Times-Roman-ISOLatin1 findfont 12 scalefont setfont
0 0 moveto (foobar barfoo foofoo barbar) 100.0 ellipsis_show
concatstrings 复制自:http://en.wikibooks.org/wiki/PostScript_FAQ#How_to_concatenate_strings.3F
关于string - 后记:用省略号截断字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966532/