PostScript 入門

最終更新: [2010/01/01]
English version is where??
PostScript は Adobe社によって開発されたページ記述言語です

単純な PS ファイルの例

%!PS

100 100 moveto
500 500 lineto
stroke
showpage
  1. %!PS: PostScript ファイルであることを示す
  2. 100 100 moveto: ペン先を移動
  3. 500 500 lineto: ペン先を降ろして指定座標まで引く指定をする
  4. stroke: 実際に描線を描く
  5. showpage: ページ表示(生成)

図形描画

_x _y moveto
_x _y lineto
_rx _ry rlineto
stroke

線種・線幅

_w setlinewidth
_c setlinecap
_j setlinejoin

色の扱い

_r _g _b setrgbcolor

スタック型言語

dup, exch, pop

EPS (Encupsulated PS)

BoundingBox

他の PostScript 文書への貼り込みが可能な EPS (Encapsulated[カプセル化された] PostScript) (解説PDF, PS-FAQ) での領域設定. プリアンブル中に指定する.
%%BoundingBox: _x0 _y0 _x1 _y1

文字の扱い

/_fontname findfont _size scalefont setfont
_X _Y moveto (_string) show

センタリング

描画する文字列をdupし,その描画幅をstringwidthで取得(横・縦)し,縦分はpopで取り出す.横幅を2 div して neg で反転させ,その分rmovetoで相対移動(yの移動分には0を指定).(2 div negは-2 divとしても同じ)
/Helvetica findfont 20 scalefont setfont
100 50 moveto
gsave 0 -10 rmoveto 0 30 rlineto stroke grestore
(Hello) dup stringwidth pop 2 div neg 0 rmoveto
.4 .4 1 setrgbcolor
show

ページ指定

各ページの始まる前に以下のようにページ番号を示す.
%%Page: _page_title _pageno
ページの終わりでは showpage を実行する
showpage
冒頭コメント部には総ページ数を示しておく.
%%Pages: _pages
または冒頭でページ数が不明の場合は先に以下のように示しておき,文書終わりに続く%%Trailer後に「%%Pages: _pages」として示す.
%%Pages: (atend)
(※atendのスペルをattendと誤っていたので修正….) 文書の終わりに以下を入れておかないと,GSviewではページを戻ったり,文書の終わりを認識しない?らしい.
%%EOF
%%Trailerタグはこの後に続く

座標変換

_tx _ty translate
_sx _sy scale

画像の貼り込み

読み込み処理の設定とそれに続く画像データで表現します.
/readstring {                       % 色データの1行読み用の定義
  currentfile exch readhexstring pop
} bind def                          % currentfile で後ろのデータを指定
/rstr _width_ string def            % データ用一時文字列を用意(赤)
/gstr _width_ string def            %                         (緑)
/bstr _width_ string def            %                         (青)
gsave
_width_ _height_ scale              % ←任意のサイズに拡大
_width_ _height_ 8                  % ←画像のパラメータ
[_width_ 0 0 -_height_ 0 _height_]  % ←画像を 1x1 に変換
{rstr readstring}                   % ←読み込み処理(赤)
{gstr readstring}                   %               (緑)
{bstr readstring}                   %               (青)
true 3 colorimage
...RRRRRRRRR...GGGGGGG...BBBBBB.... % 以下1行毎に RGB データを
.....RRRRRRRRR...GGGGGGG...BBBBBB.. % 個別に16進で並べていく.
........RRRRRRRRR...GGGGGGG...BBBBB % しきたりで32個毎ぐらいに改行
   ...
grestore
showpage

プリアンブル


定義

/_defname _defbody... def

座標

左下隅が (0,0)

辞書

_itemnum dict

ページ記述言語の衝撃?


リンク


参考文献


||Doc||

oshiro@mibai.tec.u-ryukyu.ac.jp