Binarny PostScript 50, 113 ASCII
Wykorzystuje to wyjście graficzne. Hexdump programu używającego tokenów binarnych:
$ hexdump -C textRect_binary.ps
00000000 74 5b 30 20 39 5b 74 92 62 34 92 36 92 38 92 10 |t[0 9[t.b4.6.8..|
00000010 32 92 19 5d 7b 92 2c 7b 32 92 19 7d 92 83 92 3e |2..]{.,{2..}...>|
00000020 92 6e 7d 92 49 5d 39 20 39 92 6b 91 c7 39 92 8e |.n}.I]9 9.k..9..|
00000030 92 c3 |..|
00000032
Pobierz, aby spróbować . Za pomocą Ghostscript tekst do renderowania można przekazać do programu w następujący sposób:
gs -st=helloworld textRect_binary.ps
Wyjście graficzne wygląda następująco:

Ten sam kod używający tokenów ASCII wygląda następująco:
t[0 9[t length
4 div dup
ceiling
2 copy]{cvi{2 copy}repeat
exch neg}forall]9 9 moveto/Courier 9 selectfont
xyshow
Strategia polega xyshowna określeniu, w którym miejscu poruszamy się po pokazaniu każdej postaci przed pokazaniem następnej postaci. Zaczynamy w lewym dolnym rogu, poruszając się zgodnie z ruchem wskazówek zegara, tj. Najpierw w górę, potem w prawo, potem w dół, a następnie w lewo. Zawsze poruszamy 9 jednostek, więc najpierw mamy względny ruch 0 9, a 9 0potem 0 -9potem -9 0. Możemy przejść od jednej pary tych liczb do następnej z sekwencją exch neg.
Musimy zbudować tablicę dla xyshowtych par liczb, po jednej dla każdej postaci. Oznacza to, że jeśli mamy helloworldprzykładowy ciąg znaków, który ma 10 znaków, chcemy iść dwa razy w górę, następnie trzy razy w prawo, następnie dwa razy w dół i trzy razy w lewo. Otrzymujemy te wartości (dwa i trzy) dzieląc długość struny przez 8, raz zaokrąglając do podłogi, raz do sufitu.
Tak więc kopiujemy 0 9dwa razy, a następnie przełączamy się na względne współrzędne x / y za pomocą exch neg, kopiujemy te trzy razy i tak dalej.
Ten skomentowany kod pokazuje, co dzieje się na stosie:
t[0 9 % t [ 0 9
[t length % t [ 0 9 [ length
4 div dup % t [ 0 9 [ length/4 length/4
ceiling % t [ 0 9 [ length/4=height width
2 copy] % t [ 0 9 [height width height width]
{%forall % t [ 0 9 ... x y height_or_width
cvi % t [ 0 9 ... x y height_or_width_integer
{2 copy} % t [ 0 9 ... x y height_or_width_integer {2 copy}
repeat % t [ 0 9 ... x y .. x y
exch neg % t [ 0 9 ... x y .. y -x
}forall] % t [0 9 ... -9 0]
9 9 moveto/Courier 9 selectfont
xyshow