Nhị phân PostScript 50, 113 ASCII
Điều này sử dụng đầu ra đồ họa. Hexdump của chương trình sử dụng mã thông báo nhị phân:
$ 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
Tải về để dùng thử . Sử dụng Ghostscript, văn bản được hiển thị có thể được chuyển đến chương trình như sau:
gs -st=helloworld textRect_binary.ps
Đầu ra đồ họa trông như thế này:

Mã tương tự sử dụng mã thông báo ASCII trông như thế này:
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
Chiến lược là sử dụng xyshowđể xác định nơi chúng ta di chuyển sau khi hiển thị từng nhân vật trước khi hiển thị nhân vật tiếp theo. Chúng ta đang bắt đầu ở góc dưới bên trái, di chuyển theo chiều kim đồng hồ, tức là đầu tiên lên, sau đó phải, sau đó xuống bên trái. Chúng tôi luôn di chuyển 9 đơn vị, vì vậy trước tiên chúng tôi có một chuyển động tương đối 0 9, sau đó 9 0, sau đó 0 -9, sau đó -9 0. Chúng ta có thể nhận được từ một cặp số này đến số tiếp theo với chuỗi exch neg.
Chúng ta cần xây dựng một mảng để xyshowchứa các cặp số này, một cặp cho mỗi ký tự. Điều này có nghĩa, nếu chúng ta có helloworldchuỗi ví dụ, có 10 ký tự, chúng ta muốn tăng hai lần, sau đó ba lần phải, sau đó xuống hai lần và ba lần trái. Chúng ta có được các giá trị này (hai và ba) bằng cách chia độ dài chuỗi cho 8, một lần làm tròn xuống sàn, một lần lên trần.
Vì vậy, chúng tôi sao chép 0 9hai lần, sau đó chuyển sang tọa độ x / y tương đối bằng cách sử dụng exch neg, sao chép ba lần đó, v.v.
Mã nhận xét này cho thấy những gì xảy ra trên ngăn xếp:
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