¶ ³ eps_plot User’s Manual ver.2 µ ´ Fortran90/95 Graphic Subroutine Package eps plot User’s Manual 第 1 章 概要説明 § 1 eps plot について 1. eps plot の概要 eps plot の目的は、eps 形式の Postscript ファイルの作成である。 eps plot の実体は、Fortran90/95 のモジュールであり、その内容は画像作成のためのサブルーチンおよ び関数の集合体である。これらは利用者が Fortran プログラムを作成し、その中からこれらのプロシジャ を呼び出すことにより eps ファイルを出力する。 2. 利用目的 eps plot は、 時系列を含む多量のデータ、あるいは計算結果の出力から、適度の見やすさを持った一連 の図を次々に作成することに適している。具体的な用途としては、以下のようなことを想定している。 · 理工系の論文、レポートに使用する図の作成 · 授業、講演等の配布プリント、スライド・プレゼンテーションに使用する図の作成 3. 作成した eps ファイルの利用方法 以下のような例が考えられる。 (1) そのまま、MS-Word 等に貼り付ける (MS-office なら 2003 以降のバージョンが必要)。 (2) ghostscript を使い、TEX に挿入する。 (3) adobe photoshop (element)、imagemagick あるいは ghostscript 等の画像処理ソフトを使い、bmp、jpeg 等のピクセル画像データに変換して利用する (PowerPonit で使うならこの方が確実)。 4. 動作環境 eps plot は Fortran モジュールであるため、Fortran90 以降のコンパイラが動作する環境が必要である。 本プログラムは以下の環境で開発を行った。 · OS · · · Linux(Fedora7,Fedora8) · OS · · · Windows2000、WindowsXP Postscript プリンターは必要としない。 5. バージョン eps plot は、 「eps plot vxx.yy .f90」というファイル名で提供される。xx はバージョン名で、引数の配置 や処理内容など、使用法が変更されるごとに更新される。yy は、バグフィックスなどの修正であり、それ までの使い方に変更はない。これを適当な名前にリネームして使用されたい。 6. 利用条件 eps plot は Fortran プログラムなので、利用にあたっては Fortran コンパイラが必要である。その際、コ ンパイラ側の利用条件に違反しない限り、eps plot の利用はフリーである。ただし、それは著作権の放棄 を意味するものではない。また eps plot を利用することによって起きたいかなる損害に対しても、作者は 責任を負わない。 1 eps plot User’s Manual § 2 eps plot の特長 Postscript ファイルを作成するアプリケーションをネットで検索すれば、一般的な psplot をはじめとし て、すぐに十種類以上を見つけ出すことができる。 それにもかかわらず、なぜ eps plot を作成したかとい うことに答えることが、eps plot の特長を表すことになる。 1. 日本語が扱える 目的が論文の図を作成するだけならば、タイトル等が英語で記述できれば十分である。しかしながら現 実には、日本人のみを対象として発表や記述を行う機会が多く、その際に日本語が表示できないことは大 いに不利である。しかしフリーな Postscript アプリケーションのうち、日本語に対応しているものは一部 にしかすぎない。これが eps plot 作成に至った最大の理由である。 2. 基本サブルーチンの呼び出し形式は Calcomp 系プロッタ *1 に上位互換である eps plot は、Calcomp プロッタのサブルーチンのうち、 「plot」 、 「plote」 、 「symbol」 、 「number」 の基 本サブルーチンに対して上位互換である。*2 したがって、これらの 4 つのサブルーチンを主体に記述され た Fortran 作画プログラムは、わずかな手直しだけで動作する。*3 それ以外のサブルーチンは、環境の違い から手直しをせざるを得なかったが、使用頻度は上記の基本サブルーチンよりは低いだろうし、使い方は Calcomp と似ているので、元の Calcomp ユーザならば、それほど違和感なく使用できるであろう。*4 3. 図形にハッチや点線が指定できる 常にカラーが使えるわけではなく、投稿論文などでは白黒指定である。そのため、区別のために図形に ハッチ (斜線) を入れられることは大変に重要である。また、点線も任意に引くことができる。 4. 文字列・図形の任意配置 文字列の配置位置を指定し、中央置きや、右詰めにしたりすることができる (実は結構便利)。 これらが eps plot 作成に至った主な理由であるが、以下の理由もある。 5. Fortran から呼び出すコンパイラ形式のアプリケーションである 出力データを表示するために別フトを起動する必要がないため、プログラムの修正が容易になるという 利点がある (ただし、凡例の位置を移動したり、表題の文字のフォントや大きさを修正したりといった作 業には、このようなコンパイラ方式よりも、対話型の図形作成アプリケーションの方が適している)。 6. 横軸に時間軸が使える 当研究室では野外の観測データを扱うので、時間変化のグラフを描く機会が多い。その場合横軸は時刻 となるが、これは 10 進法ではないし、月や年に至っては等間隔ですらないので、目盛を入れるのに苦労 する。そこで eps plot では、時間目盛を作成する機能と、不等間隔の時系列データをプロットする機能と を追加した。時刻データは Excel との互換性を考慮し、Windows の Date 型を使っている。 7. 色の指定が色名で入れられる 線や塗りつぶしに使う色は、HTML で使う 140 の色名を使用できる。たとえばオレンジ色を使いたい ならば、call pencolor(RGB_orange) と指定すればよく、RGB 値や HSB 値を覚える必要はない。 *1 *2 *3 *4 Calcomp とは 2-30 年前の一時期、メインフレームでよく使われた機械式プロッタであり、その命令群を使ったプログラムが 標準的に近い形で流布した。計算機の主力がパソコンに移った後も、Calcomp 風の命令群に相似の作図アプリケーションが あり、個人的にはその関係のプログラムが数多くある。 ただし呼び出し形式が同じと言うだけで、中身は全く別である。念のため。 このマニュアルの表紙の図も、1974 年に発行された「曲線と曲面 (森正武 著)」に掲載されているサンプルプログラムを、2-3 行の手直しだけで作製したものである。 Calcomp のプロッタ命令系がすばらしい、とは言わない。しかし、いまさら新しい命令を覚えるのは、正直めんどい。 2 eps plot User’s Manual § 3 eps plot の位置づけ 1. 70 年代 70 年代までの汎用計算機の出力は、ドット・インパクト方式のラインプリンタが主体であった。そのた め、図形出力には専用の機械式プロッタ装置が必要であった。HP(ヒューレット・パッカード) などの複数 のメーカーからプロッタ装置が提供され、装置ごとにプロッタ制御プログラムも異なっていたが、日本で 一番よく使われたのは CALCOMP 系のプロッタ命令であった。 機械式プロッタでは、利用者は複数のインクペンを購入し、プロッタのスロットに配置する。すなわち 個々のペンは固有の色や線幅は決まっていて変えようがない。プロッタは命令に従ってその中からペンを 選択して描画を行うのである。 2. 80 年代 80 年代になると、汎用計算機の出力はレーザプリンタ方式に変わる。これは印字だけでなく、機械式プ ロッタよりもはるかに高速に作図ができるため、図形出力はプリンタ・プロッタ方式が主体になる。 プリンタ・プロッタでは、一本の仮想ペンを想定して、その線幅などを変えればよく、複数のペンを想 定する必要はない。 CALCOMP 系のプロッタ命令も、過去の資産を継承しつつ、このプリンタ・プロッ タ方式に対応して変化する。 しかしこの時点では、すべての図形出力をプリンタ・プロッタ方式に移行することはできなかった。そ の理由の一つは (これは現在でも当てはまるが)、カラー・レーザプリンタが非常に高価だったことによる。 そのためカラーでの図形出力は、従来の機械式プロッタを使わざるを得なかった。 もう一つの理由は計算機利用の主力が汎用機から PC に移行したことによる。PC 用のプリンタは、 DOS 用のドライバーに統一性が不足しており、印字はともかく、作図はプリンタの制御コードを直接書か ざるを得なかった。これはプリンタの機種ごとに異なっており、汎用性に大いに欠けてプリンタ・プロッ タ方式の普及を妨げた。 このような理由により、80 年代に PC で作図を行うためには、以下の方法が行われた。 ◦ ソフトウェアメーカが提供する作図ソフトを購入する · · · 金がかかる上に、使える機種や利用目的が限 定される。ソフトウェアごとに使い方が全く異なるので覚えなければならないことが多い。 ◦ PC 用の簡易型機械式プロッタを使う · · · 日本では GRAPHTEC や LOGITEC の商標で販売された。本 研究室でもこれを使用したが、とにかく遅いし、正確な図は無理である。 ◦ MAC 使いになる · · · Macintosh + Adobe 社の Postscript + Postscript printer の組み合わせは強力な作図 環境を提供した。しかしこのシステムはかなり高価につく上、Apple 社のコンセプトがユーザによるプロ グラミングに対して消極的であったため、一部の PC ユーザにはひどく嫌われた。ただ、プログラミング を行わない化学系、生物系の研究室では、現在でも MAC が優勢である。 3. 90 年代以後 90 年代にはいると、Windows、Linux などが普及し、プリンタの制御コードの違いなどはこれらのプ ラットフォームで吸収してくれるので、ユーザはプリンタの機種を気にせず、汎用性のあるプログラムを 書けるようになった。同時にプリンタの価格も低下して、機械式プロッタはほぼ消滅した。 一方、ghostscript などの Postscript のエミュレーションソフトの登場により、高価な Postscript printer を 使わずとも Postscript による描画が可能になった。また、Microsoft 社と Adobe 社の提携により、Windows から PDF などの Postscript 利用が一般的になった。このような状況から、Postscript を図形記述言語とし て扱うよりも、図形記述コマンド群としてとらえ、アプリケーションで Postscript のコマンドを生成する という方式が確立した。eps plot もそうしたプログラムの一つである。 3 eps plot User’s Manual § 4 eps plot の準備 動作には各種ソフトウェアのインストール等の準備が必要である。これは環境によって異なる。 1. Postscript Viewer (1) Linux の場合、Postscript Viewer が標準に付属しているディストリビューションであれば、特に必要で ない。 そうでない場合は、「gv」をインストールしなければならない。 (2) Windows の場合、「gsview」をインストールしておく必要がある。 これらはよく利用されるフリーソフトであり、インストール方法についてはインターネットで容易に検 索できるので、ここでは省略する。たとえば「gsview」のインストールに関しては、 http://www.fan.gr.jp/~ring/doc/gs7.06.html#download などを参考にすればよい。 2. 漢字フォント設定 漢字コードに関しては、Windows 機で使われる Shift-JIS、Unix 機で使われる EUC、Linux 機で利用 の多い UNICODE(utf8) に対応し、JIS にも一部対応している。*5 データのコード変換は、Terapad 等のフ リーのエディタで簡単にできるので、コードの違いは大きな問題ではないだろう。*6 eps plot で日本語 (漢字) を使うためには、さらにいくつかの設定が必要である。以下に Windows の場 合の設定方法を示す。 (1) 「gsview」のインストール時に、Japanese、Chinese、Korean language を使うというチェックボック スにチェックを入れた上ておく。 インストール後に gsview を起動して、 option → advanced configure option の項に、「-dWINKANJI」を追加する。 (2) 使用する漢字コードに対応した CMAP ファイル (漢字コードと Postscript コードとの対応表) が必要で ある。これらは、Windows 上で「gsview」を使うならば、 「c:/gs/gs8.54/Resource/Cmap」(gs8.54 の 数字はバージョンによって変わる) の中にあるはずなので確認する。 · JIS コードならば、「H」および「V」 · Shift-JIS コードならば、「RKSJ-H」および「RKSJ-V」 · EUC コードならば、「EUC-H」および「EUC-V」 · UNICODE(utf8) ならば、「UniJIS-UTF8-H」および「UniJIS-UTF8-V」 もし存在しない場合は、adobe から配布されている最新の製品から取り出すか、ネットで検索したサイト から DL しするかして上記の場所に入れておく。 (3) Windows は Postscript で標準で使用する「Ryumin-Light」や「GothicBBB-Medium」を持っていない ので、他のフォントで代替する必要がある。 http://www.geocities.jp/tanaken_1018/tex/dvipdfmx.html などを参考に、 「c:/gs/gs8.54/lib」にある、CIDFmap というファイルを書き換えて、代替フォントを 指定する。*7 同時に使える書体は、Postscript での標準は 2 書体、拡張が 3 書体である。5 種類の書体を使 い分けたい場合は、それらのフォントを CIDmap で指定しなければならない。*8 *5 *6 *7 *8 JIS(ISO-2022-JP) の 2 バイト漢字コードには対応しているが、エスケープ・シークエンスによる、1 バイト、2 バイトのコー ド切り替えには対応していないので、アスキー文字は混在できない。 『全角文字 + 特殊な半角文字 (「Ã」 、 「-」 、 「_」 、 「|」)+ 全角文字』だと文字化けしていわゆるトーフが出ることがあるが、そ れは Postscript 側の問題であり、eps plot 側では対処できない。 指定したフォントによっては描画位置がずれることがある。通常は MS-Gothic と MS-Mincho を指定する。 フリーの IPA フォント 5 書体が、Linux と Windows で使える。 4 eps plot User’s Manual § 5 eps plot の実行 1. プログラムの作成 ユーザは主プログラムを含む Fortran プログラムを作成して (たとえば mysource.f90 とする)、その 中で eps plot のモジュール副プログラムを呼び出す。このとき、主プログラムの program 文につづいて、 use 文 use eps_plot を記述する。 プログラム例は command reference にある。 2. コンパイルと実行 このプログラムを、eps plot パッケージに続けてコンパイルする。たとえば Intel Fortran for Linux なら、 ifort eps_plot.f90 mysource.f90 -r8 「eps_plot.f90」には、eps plot モジュールのファイル名を場所も含めて指定する。 生成した a.out を実行すれば、eps ファイルが作成される。デフォルトでは、eps_plot.eps と言う ファイル名で上書き出力されるので、以前に出力した図が必要ならファイル名をリネームしておくか、 plots の呼び出し時に新出力ファイル名を指定しなければならない。 可能ならば、統合環境、make ファイル、ライブラリー化などにより操作を簡略化できる。 3. eps ファイルの閲覧 Linux ならば、gv または viewer で eps ファイルを見ることが出来る。 Windows ならば、前述した Postscript 対応ソフトのどれかで、eps ファイルを見ることができる。 ただ し、Bounding Box によるクリッピング (後述) に対応していないソフトもあるので、「ghostview」で見る のが確実である。 4. eps ファイルの印刷 Postscript Printer で印刷するのであれば、漢字フォントはプリンタ側で持っているので、特に準備はい らず、そのままプリンタに送ればよい。 Postscript Printer がなければ、Postscript 対応アプリケーションで読み込んでから印刷する。その際、漢 字が使われているならば、適当な代替フォントが指定されていなければならない。 5. Tex の利用 作成された eps ファイルは、「LATEX」ならばそのまま \usepackage[dvipdfm]{graphicx} として \includegraphics で文書中に取り込むことができる。 ただし、これは eps plot に限らないが、LATEX の dviout ではきれいに出力できないので、結果は pdf 形式に変換した方がよい。そのためには acrobat (reader ではない方) を購入するか、dvipdfmx 等のパッケージを DownLoad しておく必要がある。 その方 法については、「LATEX 2ε 美文書作成入門-第 3 版」(奥村晴彦) などの TEX 関連書籍を参照するか、ネッ トで検索すれば容易にわかる。 6. eps ファイルの画像データとしての利用 eps による図を、Word や PowerPoint 等で文書の一部として取り込むときは、アドインを使うよりは、 出力枠の大きさに合わせて eps ファイルを出力し、Photoshop (Element) などの画像処理ソフト、あるいは Gsview や ImageMagick 等の画像形式変換フリーウェアで、jpeg 等のピクセルデータ形式にラスタライズ した方が、通常のピクセル画像と同様に扱えるので、扱いやすい。 5 eps plot User’s Manual § 6 プログラム上の注意点 1. public な名前 eps plot モジュールは、デフォルトで名前を private として、参照可能な名前を冒頭でまとめて public 宣言している。ユーザー変数や手続き名は、これらの名前を避けて命名する必要がある。 すでにユーザ側のプログラムでこれらと同一の名前を使用し、簡単には変更ができないときは局所名を 使う。例えば、symbol という名前をすでにユーザが使っていたならば、use 文で、 use eps_plot, symbol_eps => symbol とすれば、eps plot の symbol を、symbol_eps という手続き名で利用できる。 2. 種別 eps plot の数値変数の種別は、基本整数型および基本実数型である。例外は時刻の指定関係で、倍精度 実数型 (種別 r 8)、長整数型 (種別 i 8) が使われる。 しかし現在の PC では、乗算などは 4 バイト実数 ×4 バイト実数よりも、8 バイト実数 ×8 バイト実数 の方がむしろ速い。したがってできれば 8 バイト実数で計算を行いたい。ただし、このとき一部だけを 8 バイト化すると引数の整合ができずにエラーが起きる可能性がある。メモリに余裕があれば、コンパイ ラ・オプション (intel fortran ならば-r8) を使って、基本数値型の精度を上げるべきである。 3. 時刻、時間の表現 時刻、時間を表すために、次の 3 種類の表現を使用している。 (1) Windows Date 形式 (倍精度実数型) Windows Date 型は、1899 年 12 月 30 日の UT 零時を基点として、日単位に表した時刻である。これ は、紀元前 4713 年 1 月 1 日の UT12 時を基点とするユリウス日 JD (Julian Day) から、2415018.5 を引い たものに等しい。それでもかなり大きな数になるから、秒までを正確に表すためには 4 バイト実数では精 度が不足で、8 バイト実数を使わなければならない。 Excel の時刻データを ”.csv” 形式で扱うには便利であるが、「時間」を表現するには不向きな形式であ るので、暦関係の計算にはこれだけでは不都合である。 (例) real(r_8) :: wdate (2) 年、月、日、時、分、秒形式 (大きさ 6 の基本整数型配列) 西暦年 (4 ケタ)、年、月、日、時、分、秒をそれぞれ格納した配列である。これは時間の表現に適して いるため。「時刻」+「時間」=「時刻」のような計算ができる。 (例) integer :: idate(6)=(/2008,4,1,0,0,0/) (3) 年、月、日、時、分、秒を連続して並べた形式 (長整数型) *9 西暦年 (4 ケタ)、年、月、日、時、分、秒 (それぞれ 2 ケタ) を連続して表記した 14 ケタの整数である。 (例) *9 integer(i_8) :: ldate=20080401000000_i_8 (2) および (3) の形式は、組み込み関数 date_and_time と部分的に対応させている。 6 eps plot User’s Manual 第 2 章 eps plot の描画 § 1 eps plot の描画画面 1. 長さの単位 計算機関係の規格は USA 主導の元に決められたので、インチを長さの基本単位とするものが多い。 た とえばレーザ・プリンタの解像度は、1/300 インチ、1/600 インチなどインチを基準にしている。1 インチ は約 2.54 cm である。Adobe 社の Postscript も当初からインチを基準にしており、デフォルトの長さの単 位は 1pt (ポイント) = 1/72 インチである。これは約 0.035cm にあたる。 ただ、インチは日本ではなじみが薄いので、eps plot では calcomp と同様に、センチ (cm) を単位とし て長さを表現する。 このため、eps plot → Postscript → レーザプリンタのドライバと変換されるうちに、 変換の誤差により線幅などが期待と微妙に異なる結果となることがある。 2. 座標系 Postscript の座標系は、初期には描画面の左下隅を原点にとり、原点から右向きに x 軸、上向きに y 軸 をとる。それ以後は、原点の移動、図形の拡大縮小、座標の回転を行うことができる。これを Postscript のユーザ座標系という。eps plot はその単位を cm に変換した上で、サブルーチンのコールにより上記の 移動、拡大縮小、回転を行い、ユーザ座標系の上で作図を行っている。 それより低位にあるものが、プリンタやディスプレイに描画されるときの座標系であり、デバイス座標 系という。デバイス座標系は、各デバイスにより異なるが、Postscript ファイルからデバイス座標系への 変換は、Postscript とデバイスドライバにより行われるので、ユーザはこれを意識する必要はない。 3. 用紙 (描画面) の大きさ Postscript の描画面は、デフォルトではレターサイズ(8.5 インチ ×11 インチ)であるが、このサイズよ りを超える図形を書けば描画面も拡大するので、ユーザは特に用紙の大きさ制限を意識することはない。 ただし、eps plot では、一応上限を設けている。その大きさは横 3000pt(105.8cm)、たて 4000pt(144.8cm) でほぼ A0 用紙の大きさである。これ以下であれば、任意の大きさの用紙 (描画面) を指定できる。 逆に、図形の描画範囲がレターサイズより小さい場合は、用紙サイズはレターサイズのままである。し かしこれでは、図を利用するにあたって必要な部分を切り抜かねばならず、たいへん不便である。そこで eps ファイルでは、Bounding Box という枠を指定して、その中に書かれた図形だけをクリッピングして利 用できる。eps plot では、描画の開始の plots 命令で、この Bounding Box の大きさを指定する。 4. Bounding Box の指定上の注意点 eps ファイルの特長は、ベクトルデータであるため、任意の倍率で拡大・縮小を行ってもラスタデータ のようにフォントが崩れたり、パターンが崩れたりしないことにある。しかし実際には、eps ファイルに 出力する図形の大きさは、最終的に出力する大きさに合わせた方がよい。なぜなら、図形を拡大・縮小す ると線の幅も同時に拡大・縮小されるため、その結果線が見えにくかったり、逆に太すぎて目立ちすぎた りすることが起きるからである。 また、図形のまわりの空白部分はできるだけ減らした方がよい。なぜなら、これらの図形を TEX やワー プロに貼り付ける際に、後から余白を加えて位置を調整することは容易だが、図形ファイルの空白を削る ことは一般に困難だからである。 すなわち Bounding Box の大きさは、最終的な図形がちょうど納まるように設定することが望ましい。 7 eps plot User’s Manual これ以下の4節では、描画パラメータの説明を行う。 eps plot での描画には、4 つのスタイルがある。 ◦ 「ペン書き」により、線を引く。 ◦ 「ブラシかけ」により、図形の塗りつぶしを行う。 ◦ 「ハッチ」や「点」で構成された、テクスチャを貼り付ける ◦ 「文字」や「数字」を記入する。 これらの各スタイルでのパラメータについて以下で説明する。 § 2 ペンによる描画 1. ペンの属性パラメータの種類 eps plot は、ユーザが使うペンとして、50 本の (仮想) ペンを用意している。 各ペンは、以下の属性に ついてのパラメータ値をそれぞれ保持している。 (1) penmode · · · 実線、点線、破線などの線種 (2) pencolor · · · 線の色 (3) penwidth · · · 線の幅 (4) linecap · · · 線の両端の形状 (5) linejoin · · · 二本の線の、接続の形状 (6) miterlimit · · · linejoin できまる形状を、制限するパラメータ 2. ペンの選択 仮想ペンを選択するには、1から 50 までのペン番号 n を指定して、サブルーチン newpen を call する。 call newpen(n) option の引数として、ペン属性にパラメータを与えることができる。そのとき、ペン番号 n の属性パラ メータは、指定された値を以後も保持する。*1 3. penmode penmode のパラメータ値は、1 から 20 までの整数値をとる。 そのうち 1 から 10 までは、あらかじめ Fig.1 のように、破線パ ターンが入っている。ユーザはこの penmode を指定することに より、ペンの線種を破線や点線、また実線にと変えることができ る。なお penmode の初期値は、すべてのペンで 1 である。すなわ ち penmode を指定せずに線を描画すれば、それは実線になる。 penmode の変更は、サブルーチン newpen の call 時に、option 引数 penmode にパラメータ値を与えることによって行う。また、 ペン番号を 0 とするか、サブルーチン penmode を call してパラ メータを指定すると、すべてのペンの penmode を一度に変更で penmode 10 9 8 7 6 5 4 3 2 1 きる。 penmode の 11 から 20 までは、初期には 1 と同じ実線が指定さ Fig.1 れている。ユーザはこれらのパラメータに、サブルーチン penmodeset(あるいはその別名の dashs) を call することにより、任意の破線パターンを定義して使用することができる。 *1 塗りつぶし色やフォントなどは、option 引数で与えたパラメータ値は保持されない 8 eps plot User’s Manual 4. pencolor pen の色は、plots の呼び出し直後はすべて黒である。以下の方法で、pen の色を変更できる。 (1) 基本整数型で RGB 指定 ディスプレイのように、R(赤)、G(緑)、B(青) の三原色を 0 から 255 までの 256 段階に分ける。これを 基本整数型の数に、最下位ビットから順に 1-8 ビットを B、9-16 ビットを G、17-24 ビットを R の順に代 入した値で色を指定する。すなわち、ある色の 256 段階の R、G、B 値をそれぞれ (R),(G),(B) で表せば、 icolor = (R) ×256 × 256+ (G) ×256+ (B) という値がその色に対応する。 あるいは、(R),(G),(B) を 16 進数でそれぞれ rr,gg,bb と書けば、icolor = z’00rrggbb’ である。 (10 ) あらかじめ決められた定数で指定 HTML で定められた色に関しては、その色に対応する定数が定義されているので、その定数名で指定す ればよい。色名の前に「RGB_」を加えたものが、対応する定数名である。たとえば orange(z’00FFA500’) であれば、「RGB_orange」と指定する (Fortran の定数なので、大文字、小文字は問わない)。 付表 1 に、HTML で定められた色名を示した。 これらの方法での pencolor の変更は、サブルーチン newpen の call 時に、option 引数 pencolor にパラ メータ値を与えることによって行う。また、ペン番号を 0 とするか、サブルーチン pencolor を call して パラメータを指定すると、すべてのペンの pencolor を一度に変更できる。 (2) 色相 (Hue)、彩度 (Saturation)、明度 (Brightness) を指定 色相、彩度、明度について、それぞれ 0 から 1 までの値を与えて色を指定する (HSB カラー指定 · · · HSV カラーともいう)。 この方法は (1) の方法と比べて、 · newpen での引数指定ができず、pencolor を call しなければならない (すべての pen 色が変わる)。 · ブラシによる塗りつぶしができない。 という問題がある。そこで、これらを回避するため、あらかじめ RGB カラーに変換して、番号を付け て登録しておく方がよい。登録番号としては、-3 から-32 までの 30 個が用意されている。いったん登録 してしまえば、その登録番号を (1) の方法で使うことができる (登録の方法は pencolor の説明を参照)。 (3) R、G、B をそれぞれ指定 R(赤)、G(緑)、B(青) について、それぞれ 0 から 255 までの値を与えて色を指定する。互換のために設 けられた方法であり、(2) と同様の問題があるため、(1) の方法を使った方がよい。 5. penwidth eps plot では、線の幅は 0.01cm の整数倍で指定する。penwidth のパラメータ値は、この 0.01cm の倍数にあたる整数である。 plots を call した直後には、各ペンの penwidth のパラメータ値 は、そのペン番号と同じ値が設定される。すなわち 1 番ペンが penwidth=1 → 0.01cm、50 番ペンが penwidth=50 → 0.5cm、とい うように設定される (Fig.2)。 penwidth の変更は、サブルーチン newpen の call 時に、option 引数 penwidth にパラメータ値を与えることによって行う。また、 ペン番号を 0 とすれば、すべてのペンの penwidth を一度に変更 penwidth 8 7 6 5 4 3 2 1 Fig.2 できる。 単独で penwidth を変更するサブルーチンはない。これは、後に述べるプリンタ・プロッタモードでは、 newpen の呼び出しが penwidth の変更と同値になるため、混乱を防ぐために設けていないからである。 9 eps plot User’s Manual 6. linecap linecap=0(default) linecap とは、線分を引いたときにその端点の形状を指定するためのパ ラメータであり、0,1,2 のいずれかの値をとる。plots を呼び出した直後 linecap=1 の初期値は 0 である。 それぞれの形状を Fig.3 に示す。Fig.3 では違いを明らかにするために 線幅を太くし、線分を描く時に指定する両端の座標に灰色の円を描き、そ linecap=2 の間を灰色の線分で結んである。この灰色の部分は実際には描かれない。 linecap の変更は、サブルーチン newpen の call 時に、option 引数 linecap Fig.3 にパラメータ値を与えることによって行う。 penwidth と同様に、単独で パラメータを変更するサブルーチンはない。全部のペンの端点形状を一度に変えたいならば、newpen を call するときに、ペン番号を 0 にすればよい。 7. linejoin linejoin とは、線分を連続して引いたときにその接合点の形状を指定するためのパラメータであり、0,1,2 のいずれかの値をとる。plots を呼び出した直後の初期値は 1 である。それぞれの形状を Fig.4 に示す。 図中にもあるように、Postscript では左から、マイター接続、ラウンド接続、ベベル接続と名付けられて いる。 linejoin=0 (miter join) linejoin=1(default) (round join) linejoin=2 (bevel join) Fig.4 linejoin の変更は、linecap と同様に、サブルーチン newpen の call 時に、option 引数 linejoin にパラメー タ値を与えることによって行う。 8. miterlimit マイター接続の場合、接続の角度が小さくなると角の部分が不 自然に長く突き出すようになる。Postscript ではこれを避けるた miterlimit=max(l/w) めに、ある程度角度が小さくなると、自動的にベベル接続に切り 替わるようになっている。その切り替わる値を指定するためのパ ラメータが miterlimit である。他の接続の時は機能しない。 l w miterlimit は、Fig.5 のlとwの比の最大値として指定され、l/w がその値を超えるとベベル接続に切り替わる。。plots を呼び出 Fig.5 した直後の初期値は 10 である。miterlimit の変更は、linecap と同様に、サブルーチン newpen の call 時 に、option 引数 miterlimit にパラメータ値を与えることによって行う。 6. から 8. までの図と説明は、いわゆる「青本 (Blue book)」*2 によった。 *2 「Postscript チュートリアル & クックブック」アスキー出版局:pp118-120 10 eps plot User’s Manual 9. ペンの二種類の使用法 前述したように、CALCOMP 系のプロッタ・プログラムにはペンの使い方に関して、機械式プロッタ方 式と、プリンタ・プロッタ方式の二系統のバリエーションがある。これらの方式の違いは、とくに newpen 命令の使い方に現れる。 (1) 機械式プロッタ方式 機械式プロッタ方式でプログラムを組む場合、plots で描画開始を宣言した直後に、プログラムで使う ペンの種類をすべて newpen を call して宣言する。たとえば 1 番ペンを線幅 0.2 ミリの黒の実線、2 番ペ ンを線幅 0.3 ミリの赤の点線にするならば、 call newpen(1,pencolor=RGB_Black,penmode=1,penwidth=2) call newpen(2,pencolor=RGB_Red,penmode=2,penwidth=3) これらをサブルーチン化して call する。なお、一つのプログラムで複数の図を書く場合、パラメータの値 は plots を call するたびに初期化されるので、まとめてサブルーチン化するなどして、そのつど設定す る必要がある。 これ以後のプログラムでは、ペンの属性変更は一切行わない。newpen はペンの交換のためにだけ call し、オプション引数はつけない。またサブルーチン penmode、pencolor、penwidth は使わない。 この方式は、同種のグラフにそれぞれ異なる要素の複数の折れ線を書く場合に有効である。例えば 1 番 ペンで軸を書き、2-5 番ペンでそれぞれの要素に対応した折れ線を書くように設定すれば、プログラム本 体ではペンを交換するだけですむ。また、見やすさなどの理由で折れ線の線種や色を変える場合でも、属 性の設定部分だけを変更すればプログラム本体は変更せずにすむからである。 (2) プリンタ・プロッタ方式 プリンタ・プロッタ方式でプログラムを組む場合、ペンごとの属性指定は行わず、線幅以外の属性はす べてのペンで同一にしておく。すなわち色の変更や線種の変更はサブルーチン penmode、pencolor を call して、すべてのペンに対して同時に行う。 線幅については、初期値としてペン番号と penwidth が一致しているので、これを変更しないでおく。 こうすると、newpen を call することが線幅を変更することと同値になる。 たとえば線幅 0.2 ミリで青の破線を書きたいならば、次のように組む。 call call call call newpen(2) penmode(4) pencolor(RGB_Blue) pline(・・・ これを call newpen(2,penmode=4,pencolor=RGB_Blue) のように option 引数で指定してしまうと、 色や線種の変更が他のペンには適用されず、newpen 命令が単に線幅の変更という意味ではなくなる。 この方式は、複数の異なった種類の図形を次々に書いていく場合などに有効である。属性の変更の影響 がすべてのペンに一様に及ぶため、前に行った属性の指定を記憶しておく必要がないからである。一方 で、ペンを交換するたびにすべての属性を宣言しなければならないため、プログラムが冗長になるおそれ がある。 過去のプロッタ・プログラムを eps plot で修正、変更する場合は、どちらの方式で組まれているかを確 認し、その方法に沿って書き換えなければならない。 新規に eps plot でプログラムする場合はどちらの方式でもかまわないが、両方式を混在させることはプ ログラムのメインテナンスの面から得策ではない。 11 eps plot User’s Manual § 3 ブラシによる図形の塗りつぶし ブラシによる塗りつぶしは、図形を描画する手続きを呼び出して、オプション引数で色を指定すること により行う。塗りつぶしだけを行う単独の手続きはない。 色の指定方法は、すべて pencolor の項で説明した (1) または (10 ) の基本整数型でなければならない。 1. 背景色の設定 特殊な塗りつぶしとして、Bounding Box 内をすべて塗りつぶして背景色とすることができる。これは plots の call 時に、オプション引数 backcolor で行う。 call plots(10.0,5.0,backcolor=RGB_DarkBlue) これにより背景色が DarkBlue(z’0000008B’) に設定される。デフォルトは白色 (z’00FFFFFF’) である。 2. eps plot で用意された図形の塗りつぶし 円、楕円、長方形、二等辺三角形、および多角形については、eps plot で描画ルーチンが提供されているので、それを呼び出すときにオプ ション引数 fillcolor に塗りつぶす色を指定する。fillcolor の値が、 z’00FFFFFF’ > = fillcolor > = 0 ならば RGB 色空間の指定された色、 −3 > = fillcolor > = −30 ならば、ユーザによって定義された色になる。 fillcolor=-1 と fillcolor=-2 は特別な意味を持つ。 ◦ fillcolor=-1 → 図形の境界を引いた pencolor ◦ fillcolor=-2 → 背景色 Fig.6 では以下のようにして、円、正三角形、正方形を順に塗りつぶしている。 call call call call Fig.6 pencolor(RGB_White) pcircle(2.5,2.5,1.2,fillcolor=-1) ptriangle(1.0,1.5,2.0,sqrt(3.0),fillcolor=RGB_Orange) prect(0.5,0.5,2.0,2.0,fillcolor=-2) この場合の pencolor は白、背景色は DarkBlue である。 これら以外の fillcolor 値に対しては、塗りつぶし色は透明であるが、 これは指定しないことと同値ではない。円および楕円の一部を描く場合、 fillcolor も次に述べる hatch も指定しなければ、結果は Fig.7 の左側 のように円弧または楕円弧となる。しかし、透明塗りつぶし、たとえば fillcolor=-99 を指定すると、結果は右側のように扇形になる。 call pcircle(0.0,1.6,1.5,-60.0,60.0) call pcircle(2.0,1.6,1.5,-60.0,60.0,fillcolor=-99) Fig.7 3. 複数の点を結ぶ線分の塗りつぶし 複数の座標点を連続した線分で結ぶには、サブルーチン pline を call する が、このときオプション引数の fillcolor または hatch を指定すると、始点 と終点を結んで多角形を作り、その内部を塗りつぶすことができる (Fig.8)。 real :: x(4)=(/0.5,2.5,0.5,2.5/), y(4)=(/0.5,0.5,2.5,2.5/) .. . call pline(x,y,4,fillcolor=RGB_Cyan) 円弧、楕円弧と同様に、fillcolor=-99 などを指定すれば透明塗りつぶしと なり、始点と終点を結んだ、塗りつぶしのない多角形となる。 12 Fig.8 eps plot User’s Manual § 4 テクスチャの貼り付け テクスチャの貼り付けは、ブラシと同様に図形を描画する手続きを呼び出して、オプション引数でテク スチャ・パターンを指定することにより行う。テクスチャの貼り付けだけを行う単独の手続きはない。 テクスチャの貼り付けには、hatch(斜線の貼り付け) と dot(点群の貼り付け) の 2 種類があるが、どちら もオプション引数 hatch でテクスチャ番号を指定する。 1. ハッチの貼り付け ハッチの貼り付けは、塗りつぶしと同様に図形を呼び出すときのオプション引数 hatch でハッチのパ ターン番号を指定することによって行う。パターンは以下の 50 種類が、あらかじめ用意されている。 hatch=49 hatch=50 hatch=41 hatch=42 hatch=43 hatch=44 hatch=45 hatch=46 hatch=47 hatch=48 hatch=33 hatch=34 hatch=35 hatch=36 hatch=37 hatch=38 hatch=39 hatch=40 hatch=25 hatch=26 hatch=27 hatch=28 hatch=29 hatch=30 hatch=31 hatch=32 hatch=17 hatch=18 hatch=19 hatch=20 hatch=21 hatch=22 hatch=23 hatch=24 hatch= 9 hatch=10 hatch=11 hatch=12 hatch=13 hatch=14 hatch=15 hatch=16 hatch= 1 hatch= 2 hatch= 3 hatch= 4 hatch= 5 hatch= 6 hatch= 7 hatch= 8 Fig.9 Fig.10 の左側の図は円にハッチパターン 1 を貼り付けたものであ る。また右側の図のように、fillcolor と hatch を同時に指定し て、塗りつぶした上にテクスチャを貼り付けることも可能である。 call pcircle(1.25,1.25,1.0,hatch=1) call ptriangle(2.55,0.5,2.0,sqrt(3.0), & & fillcolor=RGB_Yellow,hatch=13) Fig.10 13 eps plot User’s Manual 2. ハッチ・パターンの定義 破線パターンとは異なり、ハッチパターンには種々のバリエーションがあり、Fig.9 に用意されたパター ンだけでは、ユーザの要求を満たすことはできない場合がある。 そのような場合には、ユーザがサブルー チン hatchset を呼び出して、パターンを定義する必要がある。 hatchset の引数は、(1) パターン番号、(2) 斜線の線種、(3) 斜線の色、(4) 斜線の線幅、(5) 斜線同士の 間隔、(6) 第一の斜線が水平となす角 (x 軸から左まわり)、(7) 第二の斜線が水平となす角、である。 (1) のパターン番号については、1 から 60 までの値を指定する。(2)-(4) はペンと同じ内容で基本整数型 である。(5)-(7) は基本実数型で単位は cm と度である。第二の斜線の必要がない場合は、(7) に負の値を 指定する。色指定については、-1 · · · ペンの色、-2 · · · 背景色、も指定できる。 (2) から (7) までは、オプションであり、指定されたパラメータが、(1) で指定さ れたパターン番号のパラメータに置き換えられる。なお、パターン番号の 51-60 番 には、初期には 1 番と同じパラメータが設定されている。 この設定も plots が call されるたびに初期化されるので、そのたびに設定し直 す必要がある。 call hatchset(51,1,RGB_Red,3,0.2,30.0) call prect(0.4,0.4,1.7,1.7,hatch=51) Fig.11 3. ドットの貼り付け ドットのテクスチャの貼 り付けも、ハッチと同様に オプション引数 hatch でド ットのパターン番号を指定 hatch= -7 hatch= -8 hatch= -9 hatch=-10 hatch=-11 hatch=-12 hatch= -1 hatch= -2 hatch= -3 hatch= -4 hatch= -5 hatch= -6 することによって行う。パ ターンは Fig.12 の 12 種類 が、あらかじめ用意されて いる。 Fig.12 ただし、ドットの場合はパターン番号が負の数になる。 4. ドット・パターンの定義 ドットパターンについても、ユーザはサブルーチン dothset を呼び出して、 必要に応じてドットパ ターンを定義することができる。 dotset の引数は、(1) パターン番号、(2) 点の色、(3) 点の半径、(4) 点同士の間 隔、(5) 点列が水平となす角 (x 軸から左まわり)、である。 (1) のパターン番号については、1 から 20 までの値を指定する。負の数で指定し てもよい (絶対値が取られる)。(2) はペンと同じ内容で基本整数型である。(3)-(5) は基本実数型で単位は cm と度である。色指定には、-1、-2 も使える。 この設定もやはり plots が call されるたびに初期化されるので、そのたびに設 Fig.13 定し直す必要がある。 call plots(..........................,backcolor=RGB_DarkBlue) call dotset(11,-2,0.02,0.1,40.0) call prect(0.4,0.4,1.7,1.7,fillcolor=RGB_White,hatch=-11) 14 eps plot User’s Manual § 5 文字、数字の記入 1. 文字列 (英数字) の記入 (1) 基本型 文字列の記入は、Calcomp 系プロッタ命令との互換のために、サブルーチン symbol(あまり適切な名前 ではないが) を call することによって行う。 call symbol(x,y,h,str,ang,n) ここで x,y は文字列を書き始める位置、h は文字の高さ、str は書くべき文字列、ang は文字列の x 軸か らなす角度、n は実際に記入する文字数である。ただし eps plot では後の 2 個の引数は option としてい る。これは多くの場合文字列の角度は 0 であることによる。また文字数については、最後の空白を除いた 文字列を出力する場合が多く、この場合 Fortran90 では文字数を数えるよりも trim 関数を使った方が便 利だからである。すなわち、str=’abcÃÃÃ’ のときに abc の部分だけを出力したいならば、 call symbol(x,y,h,trim(str)) と記述すればよく、call symbol(x,y,h,str,0.0,len_trim(str)) とする必要はない。 (2) 開始位置 Calcomp 系プロッタ・サブルーチンでは、各文字は大き さの等しい長方形のマス目に納まるように書かれ、最初の 7 文字の左下隅の座標を、symbol サブルーチンの x,y で指 4 定した。しかし、postscript では、開始位置は左下隅ではな 1 8 string 0 5 2 く、base line である。すなわち「y」や「g」などは開始位 置の下側にはみ出して書かれる。さらに文字幅は一定では 9 6 h 3 Fig.14 なく、書体によってはリガチャ (合字) もある。 そこで eps plot では、location という option 引数により、文字列の配置位置を指定することができるよ うにした。Fig.14 の 0-9 の数字のある黒点が、それぞれの location での x,y の位置となる。たとえば、 call symbol(x,y,h,’string’,location=2) とすると、文字列「string」は x,y がその左右の中心となるように、x,y のだいたい上側に書かれる。 また、location を指定しなければ、x,y は Fig.14 の白丸の位置になるように書かれる。 (3) 背景板 図形を描画してから文字を書き足すとき、前に書いた図 形に文字が重なって、読み取れなくなる場合がある。また、 グラフなどのハッチパターンに重ねて文字を書き入れたい 場合がある。 このような場合に、symbol サブルーチンの option 引数 string として、 「,boardcolor=-2」と指定すると、文字列より少 し大きめの長方形を背景色で塗りつぶし、その上に文字を Fig.15 書くので、読みとりが容易になる。 boardcolor として、背景色以外の色も指定することができる。Fig.16 は背景板の大きさを示すため に、,boardcolor=RGB_bisque と指定している。*3 *3 h の符号を反転させても、背景色の背景板が描かれる。この場合他の色の指定はできない。 15 eps plot User’s Manual (4) 欧文フォント *4 plots が call 欧文フォントについては、Table 2 にある、Postscript の基本 35 フォントが利用できる。 された直後のフォントは、5 番の Helvetica であり、その後のフォントの指定は以下の方法で行う。 (i) サブルーチン pfont を、table 2 のフォントの左側の番号を引数として call する。たとえば、 call pfont(16) とすれば、その後のフォントは Helvetica-Narrow-Bold に変わる。*5 すなわちフォントの値は保持される。 (ii) サブルーチン symbol を call する際に、option 引数の font に上のフォント番号を指定する。 call symbol(x,y,h,str,font=13) この場合フォント変更は一時的であり、symbol 内の引数 str にしか適用されない。次の文からは、それ までに使っていたフォントがまた適用される。 (5) コード系 英数字のコード系は ascii コード系である。ascii コード系の表を Table 3(a) に示す。 フォント番号 (13) の symbol と、フォント番号 (14) の ZapfDingbat は ascii コードではなく、特別 な記号コードである。これらの記号表を、Table3 (2)、および Table3 (3) に示す。 たとば symbol フォントの θ を出力するためには、以下のどちらかの方法による。 ・対応するアスキーコードで指定する。· · · call symbol(x,y,h,’q’,font=13) ・内部コードを文字型に変換して指定する · · · call symbol(x,y,h,char(z’71’),font=13) (6) 継続出力 直前に出力した文字列に続けて、別の文字列を出力するためには、座 標指定 x,y のどちらかを 999.0 以上にする。 call call call call symbol(x,y,h,’A’) symbol(999.0,999.0,h,char(z’c7’),font=13) symbol(999.0,999.0,h,’B=’) symbol(999.0,999.0,h,char(z’c6’),font=13) A∩B=∅ Fig.16 2. 数の記入 (1) 基本型 数値型の内部式の値を出力するには、Calcomp 系プロッタ命令との互換のために、サブルーチン number を call することによって行う。 call number(x,y,h,b,ang,n) symbol と、引数 x、y、h および ang の意味は同じである。ang、n が省略できることも同様である。 b は値を出力する数値式である。Calcomp では実数型のみであったが、eps plot では整数型も許される。 n は出力のケタ数で 9 > = 0 のときは、小数点に加え小数点以下 n ケタ = −9 の範囲で指定する。n > =n> まで出力する。n < 0 のときは整数部を出力し、n ケタに足りないときは、前に n ケタに達するまで 0 を 補う。n を指定しないときは、ゼロでないケタ数まで出力される。 (2) 開始位置、(3) 背景板、(4) 欧文フォント、(6) 継続出力 これらの指定方法とその意味は symbol と同じである。なお背景板は数字だけだと下端が余る。 (5) のコード系については number では意味がないので、option 引数として指定できない。 *4 *5 といっても、実際使うのは Helvetica とその斜体、Helvetica-Narrow とその斜体と、Symbol 程度であろう あるいは、call pfont(’Helvetica-Narrow-Bold’) でもよい。 16 eps plot User’s Manual 3. 漢字 (全角文字) の記入 (1) 基本型 漢字は、symbol で使う漢字コード系を、文字型で指定することにより出力される。 call symbol(x,y,h,’ 全角文字’,ang,n,code=’sjis’) 日本語文字列は、code=で指定された漢字コードで記述されていなければならない。異なる場合は文字 化けやエラーを引き起こす。 n は出力する文字の数である。これを指定しないですますには、ascii 文字と同様に文字列の語尾の 1 バイト空白文字からなる部分文字列を、trim で削除してやればよいが、このとき全角空白は trim では削 除できないことに注意する必要がある。 (2) 漢字コード系 code=で指定できるコード系は、以下の通りである。なお、大文字、小文字は区別されない。 ◦ ’ascii’ · · · ascii コード系 デフォルトの 1 バイトコード系。漢字は出力できない。 ◦ ’jis’ · · · JIS 漢字コード系 *6 シフト・イン、シフト・アウトによる 1 バイト ↔ 2 バイトの変更には対応していない。2 バイトのいわ ゆる生 JIS だけである。かつては汎用機でよく使われたコード系であるが、PC の普及によりほとんど使 われなくなった (しかし昔の CALCOMP のプログラムでは使われている可能性がある)。なお、postscript はこの JIS 漢字コード系を基本としており、これはしばしば問題を引き起こす。 ◦ ’sjis’ · · · SHIFT-JIS 漢字コード系 Windows で使われる、2 バイト漢字コード系。 ◦ ’euc’ · · · EUC 漢字コード系 UNIX で使われる、2 バイト漢字コード系。現在では次の utf コード系に移行しつつある。 ◦ ’utf8’ · · · UTF-8 漢字コード系 UNICODE コード系の 1 種で、3 バイト漢字コード系。多言語化により、Linux はこの漢字コードの採 用が増えている。 (3) 互換型 CALCOMP 系の漢字出力プログラムとの互換のため、次の形でも漢字出力ができる。 call kanji(x,y,h,’ 全角文字’,ang,n,code=’sjis’) ここでは code=は optional 引数で省略することができ、そのときのコードは ascii コードではなく、あ らかじめ決められたデフォルトの漢字コードとなる。 デフォルト漢字コードは、plots の optional 引数として指定できる。すなわち、 call plots(・・・・,code=’sjis’) と指定すれば、デフォルトコードは SHIFT-JIS になり、code=指定なしに kanji をコールすると、出力文 字列 (第 4 引数) は SHIFT-JIS コードで記述されていると解釈される。また、plots のコール文以外では デフォルト・コードは指定できない。 なお、plots のコール文で code=と指定しないと、デフォルト・コードは utf8 となる。 *6 E-mail で使われるコード系。 17 eps plot User’s Manual (4) 漢字フォント 日本語 postscript では、以下の基本 5 書体が左端の font 番号を指定することにより、Postscript ptinter で印刷できる。 (font=-1) → Ryumin-Light · · · 明朝体 (font=-2) → GothicBBB-Medium · · · ゴシック体 (font=-3) → FutoMinA101-Bold · · · 太明朝体 (font=-4) → FutoGoB101-Bold · · · 太ゴシック体 (font=-5) → Jun101-Light · · · 丸ゴシック体 Postscript printer がない場合には、各自の所持する True Type font でこれらの書体を代替して出力する ことになる。*7 そうなると Linux では前述した IPA フォント以外ほとんど選択肢がなく、それ以外のフォ ントを使うならば Windows 上で動作させなければならない。*8 日本語化 Ghostscript をインストールすると、Ryumin-Light が「MS 明朝」に、GothicBBB-Medium が 「MS ゴシック」に置き換えられる。それ以外のフォントを使いたければ、 ・まずフォントフォルダ (WindowsXp ならば、c:YWINDOWSYFonts) で、True Type フォントを右ク リックして*.ttc ファイルを探し、左クリックして字形を確認することにより、使うフォントを決める。 ・§4 -2 で説明したように、c:YgsYgsx.xxYlibYCIDFmap をエディタで開き、「MS 明朝」「MS ゴシッ ク」の場合を参考にしつつ、他のフォントの置き換えを定義する。 といった手順が必要である。 eps plot では、plots が call された直後の漢字フォント番号は-2 である。漢字フォントを変更するに は、欧文フォントの場合と同様に、pfont を call するか、symbol または kanji の option 引数で-1 から-5 までの番号を与えてフォントを指定する。 また、日本語フォントと欧文フォントは独立に指定され、互いに影響されない。 (5) 漢字コードとアスキーコードの混在 日本語の多バイト文字とアスキーの 1 バイト文字が混在する文字列を、symbol で code に ascii 以外 を指定するか、kanji で出力した場合、1 バイト文字は日本語のフォントで出力される。ただし特定の組 み合わせ、たとえば『全角文字 + 特殊な半角文字 (「Ã」、 「-」、 「_」、 「|」)+ 全角文字』だと文字が正しく 出力されず、いわゆるトーフが出ることがある。これは eps plot ではなく、postscript の方の問題である。 したがって、文字を分割した上で継続出力を行うぐらいしか、避ける方法はない。 *7 *8 ただし、単独の True Type フォント (*.ttf) ではうまくいかないことがあり、フォント・コレクション (*.ttc) が望ましい。 Microsoft 社は、たとえ同じ PC であっても、Windows のフォントを Linux で使用することを禁止している。 18 eps plot User’s Manual § 6 多角形の相対配置指定 多角形 (polygon) の描画には 2 つの方法がある。 1. ユーザ座標での指定 これは、ふつうにユーザ座標で頂点の位置を指定して、順に結んで元の点にもどる、という描画法であ る。pline あるいは plinec を call して描画する。 2. 相対配置指定 この描画法は 3 つのステップからなる。 (1) 多角形の形状を、頂点の座標を配列に格 7 8 9 4 5 6 納することによって定める。この場合頂点の 相対位置が問題なので、ユーザ座標とは対応 する必要はない。 (2) 図形を配置する点を、ユーザ座標系の点 (x,y) で指定する。 (3) その点が、図形のどの場所にあたるかを (0) 引数 location で指定する。 Fig.17 に、location による (x,y) の割付 を示す。たとえば location=1 とした場合、 座標 (x,y) がその左下に来るように図形が 配置される。 1 2 3 location に負の値を与えた場合、図形は 横方向に反転されて描画される。 Fig.17 引数 location を省略した場合、(x,y) が 二次元図形の重心となるように図形は配置される。この場合、図形を反転させたければ、location=0 と 与えればよい。 19 eps plot User’s Manual 第 3 章 付表 § 1 カラーネーム ◦ 上表の HTML では 140 の色名が規定されているが、fuchsia と magenta、aqua と cyan はそれぞれ同 じ色なので、実質 138 色である。 ◦ gray と grey とは、英語の表記が統一されていないので、どちらで綴ってもかまわない。 Table 1(a) カラーネーム表 (1) aliceblue cyan antiquewhite darkblue aqua darkcyan aquamarine darkgoldenrod azure darkgray beige darkgreen bisque darkkhaki black darkmagenta blanchedalmond darkolivegreen blue darkorange blueviolet darkorchid brown darkred burlywood darksalmon cadetblue darkseagreen chartreuse darkslateblue chocolate darkslategray coral darkturquoise cornflowerblue darkviolet cornsilk deeppink crimson deepskyblue 20 eps plot User’s Manual Table 1(b) カラーネーム表 (2) dimgray lightcyan dodgerblue lightgoldenrodyellow firebrick lightgreen floralwhite lightgrey forestgreen lightpink fuchsia lightsalmon gainsboro lightseagreen ghostwhite lightskyblue gold lightslategray goldenrod lightsteelblue gray lightyellow green lime greenyellow limegreen honeydew linen hotpink magenta indianred maroon indigo mediumaquamarine ivory mediumblue khaki mediumorchid lavender mediumpurple lavenderblush mediumseagreen lawngreen mediumslateblue lemonchiffon mediumspringgreen lightblue mediumturquoise lightcoral mediumvioletred 21 eps plot User’s Manual Table 1(c) カラーネーム表 (3) midnightblue royalblue mintcream saddlebrown mistyrose salmon moccasin sandybrown navajowhite seagreen navy seashell oldlace sienna olive silver olivedrab skyblue orange slateblue orangered slategray orchid snow palegoldenrod springgreen palegreen steelblue paleturquoise tan palevioletred teal papayawhip thistle peachpuff tomato peru turquoise pink violet plum wheat powderblue white purple whitesmoke red yellow rosybrown yellowgreen 22 eps plot User’s Manual § 2 フォント Table 2(a) フォント表 (フォント名) Fonts and font numbers -5: HGゴシックM (Jun101-Light) 15: Helvetica-Narrow -4: DF平成明朝体W7 (FutoMinA101-Bold) 16: Helvetica-Narrow-Oblique -3: HGゴシック (FutoGoB101-Bold) 17: Helvetica-Narrow-Bold -2: MS-ゴシック (GothicBBB-Medium) 18: Helvetica-Narrow-BoldOblique -1: MS-明朝 (Ryumin-Light) 19: NewCenturySchlbk-Roman 0: <Symbol> 20: NewCenturySchlbk-Italic 21: NewCenturySchlbk-Bold 1: Times-Roman 22: NewCenturySchlbk-BoldItalic 2: Times-Italic 23: AvantGarde-Book 3: Times-Bold 24: AvantGarde-BookOblique 4: Times-BoldItalic 25: AvantGarde-Demi 5: Helvetica 26: AvantGarde-DemiOblique 6: Helvetica-Oblique 27: Palatino-Roman 7: Helvetica-Bold 28: Palatino-Italic 8: Helvetica-BoldOblique 29: Palatino-Bold 9: Courier 30: Palatino-BoldItalic 10: Courier-Oblique 31: Bookman-Light 11: Courier-Bold 32: Bookman-LightItalic 12: Courier-BoldOblique 33: Bookman-Demi 13: <Symbol> 34: Bookman-DemiItalic 14: <ZapfDingbats> 35: ZapfChancery-MediumItalic 23 eps plot User’s Manual Table 2(b) フォント表 (数字と記号) Fonts and font numbers -5: (1234597890+-*/,.%) 15: 1234597890+-*/,.% -4: (1234597890+-*/,.%) 16: 1234597890+-*/,.% -3: (1234597890+-*/,.%) 17: 1234597890+-*/,.% -2: (1234597890+-*/,.%) 18: 1234597890+-*/,.% -1: (1234597890+-*/,.%) 19: 1234597890+-*/,.% 0: <1234597890+-*/,.%> 20: 1234597890+-*/,.% 21: 1234597890+-*/,.% 1: 1234597890+-*/,.% 22: 1234597890+-*/,.% 2: 1234597890+-*/,.% 23: 1234597890+-*/,.% 3: 1234597890+-*/,.% 24: 1234597890+-*/,.% 4: 1234597890+-*/,.% 25: 1234597890+-*/,.% 5: 1234597890+-*/,.% 26: 1234597890+-*/,.% 6: 1234597890+-*/,.% 27: 1234597890+-*/,.% 7: 1234597890+-*/,.% 28: 1234597890+-*/,.% 8: 1234597890+-*/,.% 29: 1234597890+-*/,.% 9: 1234597890+-*/,.% 30: 1234597890+-*/,.% 10: 1234597890+-*/,.% 31: 1234597890+-*/,.% 11: 1234597890+-*/,.% 32: 1234597890+-*/,.% 12: 1234597890+-*/,.% 33: 1234597890+-*/,.% 13: <1234597890+-*/,.%> 34: 1234597890+-*/,.% 14: <1234597890+-*/,.%> 35: 1234597890+-*/,.% 24 eps plot User’s Manual § 3 コード Table 3(a) ascii コード表 ASCII Code Table 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 20 30 0 40 @ 50 P 60 ‘ 70 A0 p B0 C0 ! 1 " 2 # 3 $ 4 % 5 & 6 ’ 7 ( 8 ) 9 * : + ; , < = . > / ? A Q B R C S D T E U F V G W H X I Y J Z K [ L \ M ] N ^ O _ a q b r c s d t e u f v g w h x i y j z k { l | m } n ~ o ¡ – ¢ † £ ‡ ⁄ · ¥ ƒ ¶ § • ¤ ‚ fi fl ` ´ ˆ ˜ ¯ ˘ ˙ ¨ D0 — E0 Æ F0 æ ª Ł ł ı Ø ø ' „ “ ” « ‹ › » … ‰ ˚ ¸ Œ œ ˝ ¿ ˛ ˇ º ß Table 3(b) SYMBOL コード表 Symbol Code Table 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0 ! 1 ∀ 2 # 3 ∃ 4 % 5 & 6 ∋ 7 ( 8 ) 9 ∗ : + ; , < − = . > / ? ≅ Π Α Θ Β Ρ Χ Σ ∆ Τ Ε Υ Φ ς Γ Ω Η Ξ Ι Ψ ϑ Ζ Κ [ Λ ∴ Μ ] Ν ⊥ Ο _ π α θ β ρ χ σ δ τ ε υ φ ϖ γ ω η ξ ι ψ ϕ ζ κ { λ | µ } ν ∼ ο € ° ϒ ± ′ ″ ≤ ≥ ⁄ × ∞ ∝ ƒ ∂ ♣ • ♦ ÷ ♥ ≠ ♠ ≡ ↔ ← ≈ … ↑ → ↓ ↵ ℑ ∇ ℜ ℘ ⊗ ⊕ ∏ ∅ √ ∩ ⋅ ∪ ¬ ⊃ ∧ ⊇ ∨ ⊄ ⊂ ⇔ ⇐ ⊆ ⇑ ∈ ⇒ ∉ ⇓ 〈 〉 ∫ ⌠ ∑ ⌡ 20 30 40 50 60 70 A0 B0 C0 ℵ D0 ∠ E0 ◊ F0 25 eps plot User’s Manual Table 3(c) ZapfDingbat コード表 ZapfDingbat Code Table 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 20 ✁ ✑ ✂ ✒ ✃ ✓ ✄ ✔ ☎ ✕ ✆ ✖ ✇ ✗ ✈ ✘ ✉ ✙ ☛ ✚ ☞ ✛ ✌ ✜ ✍ ✝ ✎ ✞ ✏ ✟ ✡ ✱ ✢ ✲ ✣ ✳ ✤ ✴ ✥ ✵ ✦ ✶ ✧ ✷ ★ ✸ ✩ ✹ ✪ ✺ ✫ ✻ ✬ ✼ ✭ ✽ ✮ ✾ ✯ ✿ ❁ ❑ ❂ ❒ ❃ ▲ ❄ ▼ ❅ ◆ ❆ ❖ ❇ ◗ ❈ ❘ ❉ ❙ ❊ ❚ ❋ ❛ ● ❜ ❍ ❝ ■ ❞ ❏ ❡ B0 ⑤ ⑥ C0 ➀ ➁ ❢ ⑦ ❣ ❤ ❥ ❦ ❧ ♣ ⑧ ⑨ ⑩ ❶ ❷ ❸ ♦ ♥ ❹ ❺ ♠ ① ② ③ ④ ❻ ❼ ❽ ❾ ❿ ➂ ➒ ➃ ➓ ➉ ➙ ➋ ➛ 30 ✐ 40 ✠ 50 ✰ 60 ❀ 70 A0 ❐ ➄ ➔ ➅ → ➆ ↔ ➇ ↕ D0 ➐ ➑ E0 ➠ ➡ ➢ ➣ ➤ ➥ ➦ ➧ F0 ➱ ➲ ➳ ➴ ➵ ➶ ➷ 26 ➈ ➘ ➊ ➚ ➌ ➜ ➍ ➝ ➎ ➞ ➏ ➟ ➨ ➩ ➪ ➫ ➬ ➭ ➮ ➸ ➹ ➺ ➻ ➼ ➽ ➾ ➯
© Copyright 2024 Paperzz