>       When we get around to fixing the PS output, it is important
> to use the PS string measuring functions to determine how long a certain
> overbar should be depending on the string.  This will guarantee that
> the overbar are drawn in the right place and length.

Here's a sample postscript program for whoever does this.  It shows a
couple ways of measuring text and managing overbars.

%!PS-Adobe

/getobar {
    gsave
    findfont exch scalefont setfont
    newpath 0 0 moveto (X) true charpath pathbbox
    /ury exch def
    /urx exch def
    /lly exch def
    /llx exch def
    ury lly sub
    grestore
} def

/setobar {
    /fontX exch def
    /overbarwidth fontX 10 div def
    /overbarheight overbarwidth 2 mul fontX add def
} def

/cbar20 20 /Courier getobar def
/hbar20 20 /Helvetica getobar def
/tbar40 40 /Times-Roman getobar def

/obshow {
  /s exch def
  /sl s stringwidth pop def
  gsave
    gsave
      newpath 0 0 moveto (X) true charpath pathbbox
    grestore
    /ury exch def
    /urx exch def
    /lly exch def
    /llx exch def
    /overbarwidth ury lly sub 10 div def
    overbarwidth setlinewidth
    0 ury lly sub overbarwidth 2 mul dup == add rmoveto sl 0 rlineto stroke
  grestore
  s show
} def

/obvshow {
  /s exch def
  /sl s stringwidth pop def
  gsave
    overbarwidth setlinewidth
    0 overbarheight rmoveto sl 0 rlineto stroke
  grestore
  s show
} def

gsave

/Helvetica findfont 20 scalefont setfont
100 100 moveto
(XSIGNAL) obshow

/Courier findfont 20 scalefont setfont
200 100 moveto
(XSIGNAL) obshow

/Times-Roman findfont 40 scalefont setfont
300 100 moveto
(XSIGNAL) obshow

grestore

0 100 translate

/Helvetica findfont 20 scalefont setfont
hbar20 setobar

100 100 moveto
(XSIGNAL) obvshow

/Courier findfont 20 scalefont setfont
cbar20 setobar

200 100 moveto
(XSIGNAL) obvshow

/Times-Roman findfont 40 scalefont setfont
tbar40 setobar

300 100 translate 0 rotate 0 0 moveto
(XSIGNAL) obvshow

showpage

Reply via email to