Wow, there were so many masters of troff/groff answering my stupid question. Thanks a lot.
You are all right, ``mm'' macro of the newest groff has *NOTHING* wrong. However, current version of evince does its job as well. After one day's inverstigation, I found the problem is caused by the old ``mmt'' macro shipped with OpenSolaris. So, why does groff use the old ``mmt'' instead of its m.tmac. I found that when I run ``configure ; make ; make install'', if there are already macros under /usr/share/lib/tmac, groff will not generate a m.tmac file, instead, it always uses ``mmt'' under /usr/share/lib/tmac. As a workaround, I run ``groff -mgm hello.mm'' that generate an expected postscript file. The different between two ps file are: $ diff hello.ps ~/tmp/hello.ps 3c3 < %%CreationDate: Fri Nov 14 17:07:26 2008 --- > %%CreationDate: Fri Nov 14 11:24:46 2008 233,234c233,234 < /F0 10/[EMAIL PROTECTED] SF 524.18(-- --)0 10 R 2.5(-1-)277.006 58 S < (Hello w)69.336 106 Q(orld!)-.1 E 524.18(-- --)0 801.5 R 0 Cg EP --- > /F0 10/[EMAIL PROTECTED] SF 2.5(-1-)277.006 48 S(Hello w)69.336 96 Q(orld!) > -.1 E 0 Cg EP You can see that, the ``mmt'' version has a line: /F0 10/[EMAIL PROTECTED] SF 524.18(-- --)0 10 R 2.5(-1-)277.006 58 S this results in the two short bars I mentioned. Another workaround might be ``mv'' or ``rm'' /usr/share/lib/tmac and then build groff, from then on, groff will always use its mm macro package. The ``mmt'' macro shipped with Heirloom generates the two short bars as well. To me it seems that this macro has this issue for a long time. suprisingly, nobody has complained about or asked this issue. Thanks again Luke