Mã thông báo nhị phân
Đối với chương trình nén cuối cùng của chương trình PostScript, biên giới cuối cùng là mã thông báo nhị phân cho phép bạn xóa hoàn toàn tên toán tử dài, với chi phí không còn có chương trình xóa ASCII.
Vì vậy, bắt đầu với một khối mã postcript được nén
[/T[70{R 0 rlineto}48{}49{}43{A rotate}45{A neg rotate}91{currentdict
end[/.[currentpoint matrix currentmatrix]cvx>>begin begin}93{. setmatrix
moveto currentdict end end begin}>>/S{dup B eq{T begin exch{load exec}forall
end}{exch{load exch 1 add S}forall}ifelse 1 sub }>>begin moveto 0 S stroke
Chúng tôi tìm kiếm tất cả các tên ở mặt sau của PLRM (Phụ lục F, trang 795-797)
appearance
in
vim dec meaning
<92> 146 'executable system name' binary token prefix
^A 1 add
^M 13 begin
^^ 30 currentdict
' 39 currentmatrix
( 40 currentpoint
2 50 cvx
8 56 dup
9 57 end
= 61 eq !)
> 62 exch
? 63 exec
I 73 forall
U 85 ifelse
d 100 load
h 104 matrix
k 107 moveto
n 110 neg
<85> 133 rlineto
<88> 136 rotate
§ 167 stroke
© 169 sub
Và sau đó nhập chúng vào tiền tố bởi một 146
byte (thập phân). vim trợ giúp để nhập byte tùy ý
Sau đó, trong vim, tệp cô đặc có thể được nhập trực tiếp, vì vậy:
[/ T [70 {R 0 ^V146 ^V133} 48 {} 49 {} 43 {A ^V146 ^V136} 45 {A ^V146 ^V110 ^V146 ^V136} 91 { ^V146 ^V30 ^V146 ^V57 [/. [ ^V146 ^V40 ^V146 ^V104
^V146 ^V39] ^V146 ^V50 >>
^V146 ^V13 ^V146 ^V13} 93 {.
^V146 ^V156
^V146 ^V107 ^V146 ^V30
^V146 ^V57 ^V146 ^V57
^V146 ^V13} >> / S { ^V146 ^V56 B ^V146 ^V61 {T ^V146 ^V13
^V146 ^V62 { ^V146 ^V100
^V146 ^V63}^V146 ^V73
^V146 ^V57} { ^V146 ^V62 {
^V146 ^V100 ^V146 ^V62
... bạn phải nhập một khoảng ^V
trắng ở đây để chấm dứt -62 và bắt đầu 1, nhưng bạn có thể sao lưu và xóa nó sau ...
1 ^V146 ^V1S} ^V146 ^V73}
^V146 ^V85
... phải nhập một khoảng trắng ở đây để chấm dứt ^V
-85 và bắt đầu 1, nhưng bạn có thể sao lưu và xóa nó sau ...
1 ^V146 ^V169} >> ^V146 ^V13
^V146 ^V107
... Chữ số thứ 3 của mã 3 chữ số chấm dứt mục nhập byte, vì vậy, 0
đây là bình thường, thuận tiện ...
0 S ^V146 ^V167
Mà sẽ trông như thế này trên màn hình (trong vim):
[/T[70{R 0<92><85>}48{}49{}43{A<92><88>}45{A<92>n<92><88>}
91{<92>^^<92>9[/.[<92>(<92>h<92>']<92>2>>
<92>^M<92>^M}93{.<92><9c><92>k<92>^^<92>9<92>9<92>^M}
>>/S{<92>8B<92>={T<92>^M<92>>{<92>d<92>?}<92>I<92>9}{<92>>
{<92>d<92>>1<92>^AS}<92>I}<92>U1<92>©}>><92>^M
<92>k0 S<92>§
Điều này thường có thể được bỏ qua hoàn toàn nếu mục đích chỉ là để hiển thị một hình ảnh. Ghostscript vẽ hầu hết mọi thứ lên màn hình mà không cần showpage
.
¡ 161 showpage
[ Điều này thực sự không hoạt động. Ghostscript đang cho tôi undefined
và syntaxerror
cho các mã thông báo này. Có lẽ có một số chế độ tôi cần kích hoạt. ]