The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
%!PS-Adobe-2.0 EPSF-1.2
%%BoundingBox: 56 74 216 217
%%Creator: Gisle Aas (Copyright 1998), Reini Urban (Copyright 2012)

%require "common.ps"
%require "box.ps"
%require "rect.ps"
%require "mws.ps"
%require "ptr.ps"
%require "sv.ps"
%require "he.ps"

/myhe {
   1 dict begin
     /strtab exch def
     M
     strtab { currentpoint 3 3 newbox } if
     gsave currentpoint 3 box grestore
     /Courier 8 SF
     gsave 50 2 rmoveto (he) rshow grestore
     5 -13 rmoveto
     /Helvetica 11 SF
     [(next) (hek) (val)]
     strtab { dup 2 (refcnt) put } if
     {
       gsave
       show
       grestore
       0 -15 rmoveto
     } forall
     strtab not {
        -5 13 rmoveto
        gsave
        42.5 7.5 rmoveto
        currentpoint 165 ptr1
        grestore
        gsave
        65 10 rmoveto currentpoint translate 0.5 dup scale
        0 0 sv
        grestore
     } if
   end
} def

0.7 dup scale

100 300 false myhe
100 230 true myhe
100 160 false myhe

180 215 (foobar) hek

% pointers
142.5 207.5 180 207.5 ptrn
142.5 277.5 200 277.5 200 240 180 240 180 216 ptrn
142.5 137.5 180 137.5 180 202 ptrn

/Helvetica 10 SF
154 187 M (2) show

gsave
red
/Courier-Bold 10 SF
100 115 translate
90 rotate
22.5         6 M (%hash2) cshow
22.5  70 add 6 M (strtab) cshow
22.5 140 add 6 M (%hash1) cshow
grestore