Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
  �������   ������   ��������   ������  

���� PostScript

Emre Demiralp


Stock the chaff, the day will come to use it.
-Turkish Proverb-.

��������

�������

�����

����

��� ����������

��������

��� --- ������ � ����� ������ � PostScript. ������� ���� ���� --- �� ������� �������� ���� ������������ ���� ���������, � ���� ��������, ����������� ��� ��������, ���������� PostScript ���������� � ������������� ������ ���������� ����������. �� �� ���������� ��������� ������������� ����������� �� ���� ����, � ������ ���������� ����������� ����������� � ����������� ���������� � PostScript.

�������� ����, ������� �� PostScript, ���� ������� �������� ��� ���� �����. ������ ��� John Gaffney �� �������� Evans & Sutherland. ������� �� ��������� "Design System", � ����� �������������� ��������� Adobe Systems ��� ������ PostScript � �������� ������������ �� ��������� � ���������� ����������� ��� ������� �������. Adobe Systems ���� ���������� � 1982 ���� Chuck Geschke � John Warnock. C.Geschke � J.Warnock ������� ����� ������ � ���������� �����, ������� ����� � ������� ����� ������ Doug Brotz, Billi Paxton � Ed Taft.

������� �� �������� ����� �� �������� ������������ ���������� ����������, ���� � �� ������������ �������� ������������ �������� �������������. ��� ����������� ��������� �� �������� ������� ������, ������ ����������� ������������� ������� ����������� � ������� ����� ������� �����, ����������� ������������ �����������, ��������������� �� ��������� ������������, ������ ���������� �� ��������� "What You See Is What You Get". �� ����� ���� ������ WYSIWYG ��������� ���������� ����� ������� PostScript ��� ��������� ����� ���������� ��� ��� �������������� � ������� ��������, ��������, �������. � ���� ������ �� ��� ��� ������������ ��� ������ �������� ������ �������������� �����, ��������� � ��������, ������, ���������� �����������, �������������, �������������� � ���������, ���� ���� �� � �� ������� � ������. � ������ �������, ���� �� ������ ������� ��� ��������� ��� ���������������� �� PostScript, �� ������� ��� ���������.

������� PostScript ����������� ����������������. ����� ��� ��� ���� ������ ��������� ���������, �������� ���������������� ����� Internet. ��� ���������� "ghostscript", ��������� �� ����� Aladdin Enterprise. � ��� ���������� ����������� ��������� ������������ ��� �� �����, "ghostview". ������ GNU �������� ����� ���� ������ ghostscript. ��� �������� �� ���� ���������� Linux, � ��� ������������ Linux �������� �� � ������� ��������. ����� �� ����� ����� ���� � ghostscript � ��� ����������, ���� ������� �������� ����� ���� ��������� �� ������ ���������������.

�����������, �� �������������� ������ X Window � ������� ���� xterm. ���� �� ����� ������������ ghostscript, �� ������ ������� ��� ������ ������ ������ �� �����������, ������� ���������� ����� ������������� ������� ghostscript

Initializing... done. Ghostscript 2.6.2 (4/19/95) Copyright (C) 1990-1995 Aladdin Enterprises, Menlo Park, CA. All rights reserved. Ghostscript comes with NO WARRANTY: see the file COPYING for details.
GS>_


������������ � ���������� ����������� ����������� ������ ����.

����� ������� ������ ghostscript, ������ ������� ����� ����������� GS> ������� quit. EOF (Ctrl-D) ���� ����� �������� � ���� ��������.

Ghostscript ����� ����� ��������� �������, ����� �� �� �����. � ��������� ������� �� ��������� ���� �� ����� sample.ps. ��� �������, ������� ����� ��������� ghostscript, �������� � ���� �����. ������� �� �������� ���������� ����� ����� PostScript-����������. ��� ���������� ���� ��������� ��� ��������� �� ������ ����� ��������������� ��������� ghostscript, ���� �� �������� ��������� �������

gs sample.ps

� ���������� �� ����� ���������� (����, �������, ��������� ������� �����-�� �����������. �� ����� ���� PostScript ����� �������������� � ��� ������ �����, ��������, �������������� ����������, �������� �� ������ � �.�. �� ��������� � ��� � ������� ������� ���� �����) � ���� ghostscript. ���� ��������� ������� �����, ��� ���� ��������, �� ���� ghostscript ���������� ������ �������� � ������� ����������� showpage, ������ ������ ������� Enter ��� ������ ��������� ��������.

PostScript ���������� �������� �������� �������. ����� �������, ��������� ������� ������ ����� ��������. ������� ����������� ���������. PostScript ���������� ��������� ���������� ��� ��������� ������ � ���������� ������. ��� ������ PostScript ���� ������ �����: ���� ���������, ���� ��������, ���� ���������� � ���� ��������� �������. ���� ��������� �������� ����� ������� PostScript, ���������� ���������� � ������������ ���������� ����������. ����������, ��������, �������������� ��������:

20 30 add 10 sub 

���� 40, ��� ��� 20 30 add ���� 50 � sub ���� 40, ������� 50 � 10. mul (���������) � div (�������) �������� ����� �� �������. ��� = ������������� � ����������, ������� ����������� ���� ������ �� ����� ��������� � ���������� � ����������� ���� ������ ��������� ������������� ��� �������� � �������� ����� ������. == ��������� ����������, �� ������� �������������� ������������� ������ ��������. ������� pop ������� ������� ������� ����� ���������. �� ���������� ���� ����� �������� � ����������� ������� ���� �����.

��� ������������ PostScript ��� ���������?

���������� ������� �������������� ��������� ��������, �� ������� �� ������. ���������� ����� �� �������� PostScript �������� � ���������� ��������, ������ ����� ��������� ������ �����. ����� ������ ���� ������������� �������� ������������� ����������� (0,0), �������������� � ������������ ������� �������� ����� 612 � 792, ��������������. ��� ������� ������������� ������� ������ letter. ����� ���������� ������� ������ �������:

note: 540 �� 720, ���

legal: 612 �� 1008, ���

a4: 595 �� 842.

��� --- ������� ������� gs. ������� a4 ������ ������ ������ ����� �� A4, ��������.

����������� ������� �������� ��������� � ����� ������������� �� ����� gs_statd.ps. �� ��������� � �������� /usr/lib/ghostscript (��� Slackware). �� ������ ���������� ����� ������������� ������� ������ ������������ � ������������� ����� �����. ����� �� ��������, ��� �� ����������� ������ �� ��������� letter.

��������� ��� ����� ������ ������� ������ --- ��������� ������ � ������ �������. ��� �������� ��� ������ �������

x y moveto

��� xy ���������� �������������� � ������������ ���������� �������, ��������������. xy �������� ������� � ���������� � ���������� ��������. ��� ������, �������������� ��������� PostScript ������ ���������� �� ��������� ������ ������ ����������������, �����, ��� C ��� FORTRAN. moveto --- �������, ���������� ������ � ����� � ������������ (x,y).

��������� PostScript ���������� ����, ��������� ������� ��������������� �������� �� ����. ����� ������ �������. ��� ������� �� ����� ���������� ��� �������� � �������� ����� ����������. ��������� ����� ���������� �� ����, � �������� �������� ��, ��� ������ � ������� ���� C, ������� �� �������� �� ���� ���������������. � ���������� ������, ��� ������ �������, ��������� ����������, �������� ����� �� ����������.

������ �� ������ � ��������� �����. ������ � ��������: � �������. ���, ��� �����, ����� ��� ����������, --- ��������� ��������� �������:

xx yy lineto

��� xxyy �������� ��������� ����� �������. ��� ������ --- ������� ��������� �������, xy. ��� ��� ��� ������� ������������ ������� �� ����� (x,y) �� ����� (xx,yy). ����� �� ������������� �������� ���������, ����� ��������� ��� ������� ����������� ������� newpathstroke.

������ ������� PostScript ��������� ��� ��������� ��������������. ��� ����� �������, ��������� ��� ��������� ������. ���������, ������� ������� � ���� sample1.ps, ����� ��������� ���:

newpath
100 100 moveto
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto stroke

���� �� �������� ������ ������� �� ��������� �������, ��� �� ����� ���� �� �����������. �� ����� �������� �� �� ����� �������, �������� ����� ��������� �������, ��� ��� ����������� ����.

PostScript, ��� � ������ ����� ����������������, ����� �������� ��� ������� ������������. ���, ��� ������� � ������ �� �������� ��������, ��������������� ��������������� ��� �����������.

newpath
% ������������� �������
100 100 moveto
% ��������� ��������������
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto stroke

������ �� ����� ��������� � ���� xterm ������� gs sample1.ps, � �������� ������� ���� ghostscript, � ������� ����� ��������� �������� �������������. ����� ����������� GS> �� �� ����� ������ ������� (sample1.ps) run.

������� stroke ��������� �������������� ���������� ������. ��� ��������������� ��������� � ���� ghostscript ��� ���� �������� ������������� �������� 200 �� 150 ��������.

������ �� ������� ���� ������������� ��� ���������������. �� ����� ������������ � ����� �����������.

��������� ���������, ��� �� �������, ������� �����������. �� ������ ��������� ����� ������, ��������� �� ��������, ��� ������ ������ movetolineto.

���� ��� ��� �������, ������� ��� ��������������� ��������: rmovetorlineto. ��� ��������� �� ��� ��������� � ������������ ���:

x y rmoveto
x y rlineto

��� xy ������ �������������� � ������������ ���������� ����� ��������� � �������� ������ ������ ��������. 'r' � rmovetorlineto �������� relative (�������������). ����� �������, ������ ������� ���������� ������ �� x ������ ������ � �� y ������ ����� �� ��� �������� ���������. ������ ������� �������� ����������, ������ ��� � ������ �������, � �� ������ ���������� ������.

��� ������������� ������� ���������� ��� ��������� �������� ������� �����, ������ �� ��������� ������ �������. ������, ������������ ����� ������ ������� � ����� ����� ���������. ��� �������� ��������

x setlinewidth

��� x ������ ������� ����� � ��������. �������� ���� ������� ������������ �� ���������� ��������� ������� �����.

����������, ��������� �� PostScript �� ���������� ����������� ��������. ����� �������� ���� ����������. ��� ����� ���� �������

x y r a b arc

��� x, y, r, ab ������ �������������� � ������������ ���������� ������ ����, ������ ���� � ���� ����� ������������� ������������ �������������� ��� � ������ �� ������ � ������ � ����� ����, ��������������. ���� ���������� ������ ������� �������. ���� ��������� ����� ���� �� ��������� � ���������� �������, �� �� ������� �� ��� �������� �������. ��� ���������� ������� ���������� �� ��������� ������ ��������� ���������:


3 setlinewidth
200 200 moveto
100 200 100 0 75 arc
stroke
300 300 moveto
400 500 200 20 50 arc
stroke

������� ��� ����� ���� ������������� � �������� ������ � ������ ����, ���� �� ����� �������� ��������������� �������. ������, ���� � ������ ������ �������� ����� �������. ����� ��������� PostScript ������ ������� ��������� �������. � ������ ������ ������� �������� ��������� � ������� ���. ����� ������ ������� ��������� �������� ����� ������� ���������� �������. ���� �� �������� ������� newpath, �� PostScript �������� ��������� ������� � �������, ��� ��������� �������� ������. ����� �������, � ���������� ��������� ����� ������� ����� �������� ������ �� ������� newpath. ��� ���� ����� ��������� ����� ��� ��, �� ��� ������� �������.

������ ���������� ���������� newpath. �� �������������� ������� ������. ����� �� �������������� ����������� ������, ����������� �������� � �������� �������.

������� arc ����� ������������ ��� ��������� ������ ����������. ��� ����� ���������� ��������� � �������� ���� ���� ������ ��� 0 � 360, ��������������. arc ����� ����� ��������� �������� �������. ��� ����� ����� ��������� � �������������� ��������� PostScript. ������������ ����� ��������� ������ ������� �� �������������� � ������������ ���� ��������

x y scale

��� xy ������, ��������������, ������������ ��������������� �� ����������� � ���������. ���� ��� ����� 1, �������� ������� ������� �� �����. �������� ������� ����������� �� ��������� ������� scale. ��������� ������� scale �� ������� �������� ����������, � ������������� � ���. ���� ������ ������� ������ ������������ ��������������� x1, y1, � ������ --- x2, y2, �� ����� ���������� ������ ������� ������������ ������ ����� x1*x2, y1*y2. ��� ��� ����� �� ��������, ����� �� �������� ������������� �������� �� �������. PostScript �� ��������� �������, ��� ��������������� ���. ��������� ���������, ������� ������� � ���� sample4.ps, �������� ������ ��� ���������� ���������������.

3 setlinewidth
200 200 100 0 360 arc
stroke
newpath
2 1 scale
200 300 50 0 360 arc
stroke
newpath
1 4 scale
100 150 40 0 360 arc
stroke

��� ����� ��������, ��������������� ������ �� ��� �������, ������� ������� �����. ������� ������� �������� �������� � ���������� ��������� ������.

PostScript �������� ��� ��� ������� ��� ��������� ���. ���� �� ���, arcn, ���������� �� arc ������ ������������ ���������: ��� ������ ���� �� ������� �������. ������ ������� ������ ���� ����������, ���������� ����������� � ���� ������ ������. ��� �������� ���:

x1 y1 x2 y2 r arcto xt1 yt1 xt2 yt2

��� xt1, yt1, xt2, yt2 ������ �������������� � ������������ ���������� ����, � ����� ����������� �������� ����� ���������� x0, y0, x1, y1x1, y1, x2, y2. r ������ ������ ����. ���� ������ �� ����� � ������� ����� �� ��������� � ������� ����, �� � ������� ����������� ������� �� ������� ����� �� ������ ����. � ����� ��������� ������� ���������� ����� (xt2, yt2).

� PostScript ���� ����� ������� ��������� ������ �����, ������� ����� ������������ ��� ������������ ��� ������������� ������ ������. ��� --- ������� curveto, ������� ������������ ���:

x1 y1 x2 y2 x3 y3 curveto

��� ������ ���������� � ������� �����, ���������� ������� ����������� �� (x0, y0). ������ � ��������� ����� �������� ����������� � ������� ����� (x0, y0)(x1, y1). ������������� ��� � ����� (x3, y3) � �������� ������� �� (x2, y2) �� (x3, y3). �� ��������� ���������, ��� ��� ������ ����� �������� � ���������� ����� ������.

�����

PostScript ����� ��������� ������, ���������� ������������ ��� DTP. ���� ����� �������� �������� �������, ��������� ����� ����������� �������� �� �����, ��� �������� ������. ���������� ��������� ���������.

/Times-Roman findfont
15 scalefont
setfont
100 500 moveto
(I love PostScript!) show
/Times-Italic findfont
20 scalefont
setfont
100 450 moveto
(I love PostScript!) show
/Times-Bold findfont
25 scalefont
setfont
100 400 moveto
(I love PostScript!) show
/Helvetica findfont
30 scalefont
setfont
100 350 moveto
(I love PostScript!) show
/Courier findfont
35 scalefont
setfont
100 300 moveto
(I love PostScript!) show
/Helvetica-Bold findfont
40 scalefont
setfont
100 250 moveto
(I love PostScript!) show
showpage

��� ����� ������ �� ���������, ������� findfont ������������ ��� ��������� ������� � ��������� ��������� ������. ��� ������ ���������� � ������� '/', � �������� � �������� ��������� ������� ('/' ��������� �������������� �������� ��� �������� �� ���� "��� ����"). ����� �� �������� � ������������ �������� ��������, � ��� ������ ����� �����. ����� ������ ������ �� �������������� �������� scalefont. ����������� ��������������� �������� ����� ���� ��������. ����� ��������������� ������, ������� setfont ������ ����� ������� � ������������� � ���������. ����� ��������� ������� �������� moveto � ���������������� �����������, ������� show ������ ����� ��� ������ � ���� ���������, ������������ � ������� ������. ������� showpage ��������� ����� �����������. ����������� ��������� ���������� ������ ������� ���� � ������� ��� ������ ������ � ���� �� ������ � ������ ������ ��������. ��������� ��������� PostScript ������� ������ ����� �����, ����������� � �������� ������� ������ Linux. ����� ����� ����������� ����� ������ ��� ������, ��� ���, � ��������, �������� ��������� ����� ������ ������� �����.

����

���� PostScript �������� ��������� �������� ��������� ����� ��� �������� ������� ��������. ������ � ���������� � �������� ����� �����. PostScript �� ��������� ���������� ������ ����. ������� ����� ���� ���������� �������� ��� �����-�����. ��� ��������� ����� � PostScript ����� ������������ ����� ������� ���������. ������ ���������� �� ������� ����� RGB. � ���� ������� ������ ���� ������������ �� ���� �������� ������: ��������, �������� � ������. ���������� ����� �������� ���������� ���������� �������������, ������������ �������� ����� 0 � 256. �������� ������������� ����� ���� ������� ������, ������� �� ���� ������ ����� �������, ��������, 111.223. ����� �������, ������� �������� ���:

x y z setrgbcolor

��� x,yz �������� ���������� ������������� ��� �������, ������� � ����� ���������, � setrgbcolor --- �������. ����� �������, 1 0 0 setrgbcolor ������� ������� ����, � 0 1 0 setrgbcolor --- �������. ������ ������������� ������, ����� ��� ��������� ������������� ����� 1. ������� ��������� ����� ������ �� ��� ������� ��������� �� ��������� ����� �����. ��� ���� ������ ��������� ����������, � �������� ����������� �����. ��������� ��������� �����, �� ����� ��������� ����������� ������� �������.

������ �������� ��������� ����� ���������� �� ������������������� ������� �����. �� ���������� �������� CMYK. ������ ������� ����� --- �������, ���������, ������ � ������. ������ �������� ���������� ������ �� ���� � ������������ � ���������� �������������, ������������ �� 0 �� 1. ����� �������, ��������������� ������� �������� ���:

w x y z setcmykcolor

��� w, x, y, z --- �������� ������������� �������, ���������, ������ � ������ ���������, ��������������. ��� ������� ����� ���������� ����������� �� ��������� ����� �����, ����� ���� ��������� ��������� ���������. ��� ������� ����������� �� ����� ������� ���� ������� � PostScript ���������.

������ ������� �������� ���:

x y z sethsbcolor

��� x, y, z �������� ������������� ���� ������� �����. ������ ������������� �������, ������������� ��������� ����� � �������. ������ ������������� ������������, � ������ --- ������� �����. ��������, �� �������� � ������������� ������ HSB (hue-saturation-brightness, ����-������������-�������), ����� ����������� ���������� � ���������� xfig.

����� ������ ������� ������������� � PostScript --- fillclosepath. ��������� ������, ������� �������������� ���������� � ���� sample6.ps, �������� ������ �������� ��������� � ������������� � PostScript.

1 1 0 0 setcmykcolor
100 100 moveto
300 100 lineto
300 250 lineto
100 250 lineto
100 100 lineto
stroke
1 0.5 0.8 0 setcmykcolor
5 setlinewidth
200 200 moveto
400 300 lineto
300 300 lineto
closepath fill
stroke
1 0 0 setrgbcolor
3 setlinewidth
200 200 moveto
100 200 100 0 75 arc
stroke
newpath
400 500 200 20 50 arc
stroke
0 0 1 0.2 setcmykcolor
3 setlinewidth
200 200 100 0 360 arc
stroke
1 0 0 setrgbcolor
newpath
2 1 scale
200 300 50 0 360 arc
gsave fill grestore stroke

stroke
0 1 0 setrgbcolor
newpath
1 4 scale
100 150 40 0 360 arc
gsave fill grestore stroke

����� closepath ��������� �������� ������, �������� �������� ����� ��������, � ������� fill ������ ��� ������� ������������ ��������� ������� ������������� ������.

PostScript ����� ����� ������������ ������� ������. ��� �������� ��������

x setgray

��� x ������ ������������� ������, ��� �������� ����� �������� �� 0, ���������������� �������, �� 1, ���������������� ������. ��������� ���������, ������� ������� ��� ������ sample7.ps, �� ������� ���������.

0.2 setgray
10 setlinewidth
100 700 moveto
200 0 rlineto
stroke
newpath
0.3 setgray
100 600 moveto
200 0 rlineto
stroke
newpath
0.4 setgray
100 500 moveto
200 0 rlineto
stroke
newpath
0.5 setgray
100 400 moveto
200 0 rlineto
stroke
newpath
0.6 setgray
100 300 moveto
200 0 rlineto
stroke
newpath
0.7 setgray
100 200 moveto
200 0 rlineto
stroke
newpath
0.8 setgray
100 100 moveto
200 0 rlineto
stroke

������, ��� ��������� ���� �����, �� ������������� ���������, � ����������� ���������� � PostScript, ��������� ������ ����� ������� � ���������� ���������. ��������� ������ ���� ����� ��������� ����� �������� � ����� PostScript. ��� ������� � ������������ � ��������� ����� ��������� �������.

����� ����������� Oliver Thilmann �� ��� ������ �������� ����������� �� ����������� � ������������� ���� ������.


�������: Boris Tobotras

��� ����������:
  • �������� ����� Adobe Systems Inc., �������������� ������������� Addison-Wesley: PostScript Language
    (��� ����: Tutorial and Cookbook, Language Reference, Program Design)


© 1998 Emre Demiralp
This website is maintained by Miguel A Sepulveda.