stringwidth
, как говорится, не возвращает высоту строки. (Во всех случаях, на которые я смотрел, второе целое число в стеке после выполнения stringwidth
было 0
- для строк, которые выполняются в горизонтальном направлении.) stringwidth
дает относительные координаты текущей точки после выполнения (string) show
,
У PLRM есть это, чтобы сказать о stringwidth
:
Обратите внимание, что ширина, возвращаемая stringwidth , определяется как движение текущего
точка. Это не имеет ничего общего с размерами контуров глифа.
Так что бы сработать, чтобы учесть высоту строки? Волшебные слова для чтения в PRLM: charpath
и pathbbox
. Попробуйте это:
%!
/Helvetica findfont 60 scalefont setfont
200 700 4 0 360 arc fill
200 700 moveto (test test) dup
true charpath pathbbox
3 -1 roll sub 2 div neg 3 1 roll sub 2 div exch
1 0 0 setrgbcolor
200 700 moveto rmoveto show showpage
Он вычисляет высоту строки (напечатанную красным цветом) и использует эту информацию, чтобы попытаться отцентрировать маленький заполненный круг (напечатанный черным цветом) в центре ее ограничительной рамки: