天地有情

PostScript でEPSを作ろう

§1. あらまし

PostScript はプリンター制御言語の一種で,その高機能な制御言語を持ったプリンターがPS プリンターです.

PS プリンターを動作させるには,ポストスクリプト言語で記述された命令(プログラム)を送ります.
通常は PS 命令をアスキーコードで記述したファイルを作製し,そのファイルをプリンターへ送ると,印刷されます.

PS ファイルの内容を確認するために,いちいちプリンターに送って印刷するのは面倒です.
そのために,gs ( ghostscript ) という PS ファイルのビューワーソフトがあります.

§2. PS と EPS の違い

● EPSファイルフォーマットは encapsulate(カプセル化)された PostScript(PS) ファ イルを意味します.
PostScript リファレンスマニュアルに示されている条件を満たした PS ファイルが EPS ファイルです.

● 多くの EPS ファイルは,そのままプリンタに送っても何も印刷されません.
これは,EPS ファイルは単独で用いられることを前提にしておらず,他の PS ファイルの中にインクルードされて
使われることが前提となっている ことに起因します.

● EPS ファイルをプリンタに送っても何も印刷されません.ファイルの中で showpage というオペレータが
使われていないためです.

● PS ファイルは,1ページごとの記述の後に showpage を1回呼び出すようにプログ ラムされます.

● EPS ファイルは他の PS ファイルのページ記述の中に埋め込まれることが前提ですから,
これが EPS ファイルに通常 showpage がない理由です.

● EPS ファイルは PostScript の文書構造化規約(DSC)に則っており,パーセント記号2つで始まる行(DSC コメント)で
その文書構造を記述することになっています.中でも最も重要なのは次のコメントで,省略できません.

%%BoundingBox: llx lly urx ury      ----->※ 左下座標と右上座標を指定する

%%BoundingBox: は EPS ファイルが生成するグラフィックスの矩形の大きさを示すもので,
EPS ファイルを取り込むアプリケーションはこれを頼りにレイアウトを行います.

§3.EPSファイルの書式

EPSはJPEGやGIFなどのいわゆる画像ファイルとは異なり,「ページ記述言語」と呼ばれる
プログラミング言語の一種です. 基本は「キャンパスの上で仮想的な筆を動かして図を描く」という考え方をします.

一般的なEPSファイルのテンプレートを以下に示します.

 

01:   %!PS
02:   %%BoundingBox: llx lly urx ury
03:   %%Title: ファイル名.eps
04:   %%CreationDate: 2013/04/01
05:   %%DocumentFonts: (atend)
06:   %%Orientation: Portrait または Landscape
07:   %%Pages: 0
08:   %%EndComments
09:   %%BeginProlog
10:   /Times {/Times-BoldItalic findfont} def
11:   /Min {/Ryumin-Light-90ms-RKSJ-H findfont} def
12:   /Goth {/GothicBBB-Medium-90ms-RKSJ-H findfont} def
13:   /SET {scalefont setfont} def
14:   /nextline {currentfile 160 string readline pop show} def
15:   /cmtx matrix currentmatrix def
16:   /mydict 20 dict def
17:   %%EndProlog
18:   >>>>>>>>>>>> 図形仕様をここに記述 <<<<<<<<<<<
19:   %%EOF
 
 

説明:

● 1行目
%自体はコメント記号である.%!PSはPostScriptファイルであることを示す.
最初の行は %! ではじめるポストスクリプトファイルの開始行は %! の 2 文字で始めるという約束がある.
%! の後にさらにバージョン番号などを付加することもあります.例えば,eps ファイルでは
%!PS-Adobe-3.0 EPSF-3.0 などのように書いてあり,これは EPSF-3.0 という規格を満たしていることを表す.
EPSF の規格を満たしていないのに,上のような注釈行を付加するとAdobe Acrobat に付属している Distiller で
PS → PDF の変換をするときにエラーが出ることがある.ゆえに,先頭行は %! だけを付けるのが無難である.

● 2行目
%%で始まる文はDSC文である.%%BoundingBoxは必須 であるがその他はオプションである.
EPSとして必要な付加情報はすべてPSのコメントとして入る(「%%」で始まる行)

● 10~16行目
文字列を指定したいときに便利なように定義(bind)してあるが,オプションである.

● 18行目
ここに PostScript コードを記述する.

● 19行目
ファイルの終端を示す.

§4.EPSファイルの一般事項

● ファイルの拡張子は .eps である.
● 長さ単位は pt(point)がデフォルトである.mm への単位変換は 2.8346 2.8346 scale 文を記述する.
● ファイルには showpage は記述しない.
● ファイル冒頭には %%BoundingBox: DSC文を必ず記述する.
● ファイルの末尾には clip 命令を記述するとよい.
● カレント状態のpushとpopは gssaveとgrestore で行う.


§5.GSviewと閲覧

EPSファイルをViewするには GSview を利用します.
EPSファイルをクリックするとGSviewが起動して表示してくれます.ただし,%%BoundingBox
指定通りの外形サイズにするには メニューから[Media] → [User Define] を選択してサイズを設定します.

§6.Ghostscriptによる起動と閲覧

次の手順で起動と閲覧ができます.

(1) コンソールを開き,gswin32c と入力する.
(2) gs が起動し,GS> プロンプトが表示される.次のrunコマンドを入力する.
(3) (xxx.eps) run
(4) Ghostscript Image ウインドウ開き,EPSファイルが表示される.
(5) 終了は quit コマンドを入力する.

§7.簡単なサンプル集

■ 線を引く
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-1.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments

newpath
2 setlinewidth
10 10 moveto
210 10 lineto
210 210 lineto
10 210 lineto
closepath
stroke
clip

%%EOF

example-1


■ 塗りつぶし
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-2.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments

newpath
3 setlinewidth
10 10 moveto
210 10 lineto
210 210 lineto
10 210 lineto
closepath
gsave
1 0 0 setrgbcolor
fill
grestore
0 0 0 setrgbcolor
stroke
clip

%%EOF

example-2


■ 円を描く
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-3.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments

newpath
2 setlinewidth
110 110 80 0 360 arc
stroke
clip

%%EOF

example-3


■ 文字の設定(欧文の場合)
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-4.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments
%%BeginProlog
/Times {/Times-BoldItalic findfont} def
/SET {scalefont setfont} def
%%EndProlog

newpath
50 110 moveto
Times 24 SET %---> Times,SET はマクロ定義
(Hello World) show
clip

%%EOF

example-4


■ 文字の設定(和文の場合)
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-4.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments
%%BeginProlog
/Min {/Ryumin-Light-90ms-RKSJ-H findfont} def
/Goth {/GothicBBB-Medium-90ms-RKSJ-H findfont} def
/SET {scalefont setfont} def
/nextline {currentfile 160 string readline pop show} def
%%EndProlog

newpath
20 100 moveto
Min 36 SET
nextline 富士の高嶺
clip

%%EOF

※ 文字化け防止のため nextline を使用します.この場合は ``(富士の高嶺) show'' でも可.

example-5


■ 白抜き文字
%!PS
%%BoundingBox: 0 0 220 220
%%Title: example-4.eps
%%CreationDate: 2013-04-04
%%DocumentFonts: (atend)
%%Orientation: Portrait
%%Pages: 0
%%EndComments
%%BeginProlog
/Min {/Ryumin-Light-90ms-RKSJ-H findfont} def
/Goth {/GothicBBB-Medium-90ms-RKSJ-H findfont} def
/SET {scalefont setfont} def
%%EndProlog

newpath
40 100 moveto
Goth 48 SET
(日の出) false charpath stroke
clip

%%EOF

※ show の代わりに false charpath stroke を使います.

example-6


スポンサーサイト
  1. 2013/04/04(木) 18:27:56|
  2. PostScript
  3. | トラックバック:0
  4. | コメント:0
<<pdflatex(日本語対応)備忘録 | ホーム | PSTricksでEPS作成>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://konoyonohana.blog.fc2.com/tb.php/18-e1a4b3fb
この記事にトラックバックする(FC2ブログユーザー)