6060 /alttextsubspace () def
6161 /extratext () def
6262 /extratextsubspace () def
63+ /extratextsplit () def
64+ /extratextlinegaps 1.2 def
6365 /extratextcolor (unset) def
6466 /extratextxalign (left) def
6567 /extratextyalign (above) def
@@ -364,7 +366,20 @@ begin
364366 add
365367 } if
366368 /textascent exch def
367- /textwidth extratext stringwidth pop extratext length 1 sub extratextgaps mul add def
369+
370+ extratextsplit () ne {
371+ extratextsplit length 1 ne {
372+ /bwipp.extratextsplitBad (The extratextsplit option must be a single character) //raiseerror exec
373+ } if
374+ /textlines [
375+ extratext { extratextsplit search { exch pop exch } { exit } ifelse } loop
376+ ] def
377+ } {
378+ /textlines [ extratext ] def
379+ } ifelse
380+
381+ /textwidth 0 textlines { stringwidth pop 2 copy lt {exch} if pop } forall extratext length 1 sub extratextgaps mul add def
382+ /textheight textlines length dup textascent mul exch 1 sub extratextlinegaps mul add def
368383
369384 /extratextxpos extratextxoffset pixx textwidth sub 2 div add def
370385 extratextxalign (left) eq { /textxpos extratextxoffset def } if
@@ -375,10 +390,16 @@ begin
375390 /textxpos 0.0 def
376391 /extratextgaps pixx textwidth sub extratext length 1 sub div def
377392 } if
378- /textypos extratextyoffset textascent add 1 add neg def
393+ /textypos extratextyoffset textheight add 1 add neg def
379394 extratextyalign (above) eq { /textypos extratextyoffset pixy add 1 add def } if
380- extratextyalign (center) eq { /textypos extratextyoffset pixy textascent sub 2 div add def } if
381- textxpos textypos moveto extratextgaps 0 extratext ashow
395+ extratextyalign (center) eq { /textypos extratextyoffset pixy textheight sub 2 div add def } if
396+
397+ 0 1 textlines length 1 sub {
398+ /i exch def
399+ textxpos textypos textascent extratextlinegaps add i mul add moveto
400+ extratextgaps 0 textlines dup length i sub 1 sub get ashow
401+ } for
402+
382403 } if
383404
384405 grestore
0 commit comments