PostScript 入門
最終更新: [2010/01/01]
English version is where??
PostScript は Adobe社によって開発されたページ記述言語です
単純な PS ファイルの例
%!PS
100 100 moveto
500 500 lineto
stroke
showpage
|
- %!PS: PostScript ファイルであることを示す
- 100 100 moveto: ペン先を移動
- 500 500 lineto: ペン先を降ろして指定座標まで引く指定をする
- stroke: 実際に描線を描く
- 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
- _fontname: Courier, Courier-Bold, Times, Times-Bold など
- charpath: 文字の輪郭を描く
センタリング
描画する文字列を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