Solaris 8 のソフトウェア開発 (追補)

共通プロローグファイル

共通プロローグファイルには、次のものがあります。

上記のファイルは印刷レイアウトプロローグファイルで、mp.common.ps は他のプロローグファイルの前に挿入される共通プロローグファイルです。

共通プロローグファイルである mp.common.ps は、/usr/lib/lp/locale/C/mp/ ディレクトリにあり、それには、StandardEncoding から ISOLatin1Encoding にフォントを再度符号化する PostScript ルーチンが含まれています。reencodeISO ルーチンが印刷レイアウトプロローグファイルから呼び出され、フォントのエンコーディングが変更されます。通常、このプロローグファイルには、カスタマイズは必要ありません。ユーザーが自分のプロローグファイルを作成している場合は、修正されたプロローグファイルがあるディレクトリを指すように環境変数 MP_PROLOGUE を設定します。

印刷レイアウトプロローグファイル

印刷レイアウトプロローグファイルである mp.*.ps ファイルには、印刷時にページレイアウトを制御するルーチンが入っています。これらのプロローグファイルは印刷ページのヘッダーとフッターで使用するユーザー名、印刷日、ページ番号に加えて、他の情報も設定できます。たとえば、有効な印刷領域のサイズや、使用する用紙の縦横の向きが指定できます。

一連の標準的な関数については、プロローグファイルごとに定義する必要があります。これらの関数は、新しい印刷ページの開始、印刷ページの終了、あるいは新しいカラムの終了時に呼び出されます。これらの関数の実装内容によって、印刷出力の印刷属性が定義されます。

次の PostScript 変数は mp(1) バイナリによって実行時に定義されます。すべての印刷レイアウトファイルはこれらの変数を使用して、user namesubjectprint time などの動的な情報を印刷できます。変数から取得したこの情報は、通常印刷ページのヘッダーやフッターに記載されます。

User

システムの passwd ファイルから取得される、mp を実行しているユーザーの名前

MailFor

印刷する記事の種類の名前を保持するため使用される変数。この変数の値には、次のものがあります。

  • 「Listing for」―入力がテキストファイルである時

  • 「Mail for」―入力がメールファイルである時

  • 「Article from」―入力がニュースグループの記事である時

Subject

メールやニュースのヘッダーから引用された主題。「-s」オプションを使用すると、メールやニュースのファイルや標準テキストファイルにも主題が強制できます。 

Timenow

ヘッダーやフッターに記載される印刷時刻。この情報は localtime() 関数から取得されます。

次は、印刷レイアウトプロローグファイルに実装されている関数です。これらの関数にはすべて副関数が使用できます。

endpage

使用法 : page_number endpage

印刷ページの下端に達した時に呼び出されます。この関数はページのグラフィックのコンテキストを復元し、showpage を発行します。プロローグファイルによっては、ヘッダーとフッターの情報はカラムごとではなくページごとでしか表示されません。ヘッダーとフッターでグレースケールの模様を表示する副関数を呼び出すように、この関数を実装することも可能です。

newpage

使用法 : page_number newpage

新しいページの開始時に実行されるルーチンやコマンド。ルーチンの機能には、ランドスケープモードの設定、印刷グラフィックコンテキストの保存、ページ座標の変換などがあります。

endcol

使用法 : page_number col_number endcol

ヘッダーやフッター情報の表示。新しい印刷位置への移動など。

新規に印刷レイアウトプロローグファイルを追加するときは、印刷レイアウトプロローグファイル内で次の変数を明示的に定義する必要があります。

NumCols 

<1 印刷ページのカラムの数> 

PrintWidth 

<印刷領域のインチでの幅> 

PrintHeight 

<印刷領域のインチでの高さ> 

ロケール依存プロローグファイル

ロケール依存プロローグファイルは /usr/openwin/lib/locale/$LANG/print/prolog.ps で、通常は PostScript ファイルです。このファイルには、PostScript プロローグ情報といくつかの追加の PostScript ルーチンを定義する組み込み Type1 フォントを入れることができます。プロローグファイルの主な目的の 1 つに、前もって mp(1) で定義され使用される一連のフォント名に対し、別名でロケールのフォントを設定することがあります。

/usr/bin/mpprolog.ps でも動作するよう、このファイルに対するサポートが提供されています。このファイルが存在するときは優先され、下位互換性を維持するために mp.conf ファイルが走査されることはありません。

以降の mp.conf ファイルに関する節は、『OpenWindows Localization Guide』から引用したものです。

prolog.ps とは

prolog.ps ファイルの目的は、非汎用フォントを設定することです。アプリケーションは、前もって定義されたこれらの PostScript フォント名を使用して印刷します。プロローグファイルは、Desk Set Calendar マネージャと mp に対し、少なくとも次のフォント名を定義しなくてはなりません。

これらのフォントは、次の使用例でローカル (地域) の文字セットを印刷できなければなりません。

prolog.ps ファイルの例

ローカライゼーションキットには、日本の環境向けに、prolog.ps のサンプルが用意されています。また、このファイルは/usr/openwin/lib/locale/ja/print/ ディレクトリにもあります。

既存の prolog.ps ファイルへの複合フォントの追加および変更方法

たとえば次の例では、LC_Base-Font という複合フォントが定義されます。

%
(Foo-Fine) makecodeset12 
(Base-Font) makeEUCfont
%

LC_Base-Font は Foo-Fine と Base-Font というベースフォントの複合フォントです。Foo-Fine は、ローカルのキャラクタセットがあるフォントです。フォントの追加や変更を行うために、PostScript に精通している必要はありません。

prolog.ps ファイルの作成方法

実際の例を調べてみることが、学習への早道といえます。prolog.ps の例では、makecodeset12makeEUCfont の 2 つのルーチンを書く必要があります。Makecodeset12 がローカルフォントのエンコーディング情報を設定します。このルーチンはロケールによって異なる場合があります。MakeEUCfont はベースフォントとローカルフォントを組み合わせて、複合フォントを形成します。プロローグファイルの作成者は makecodeset12makeEUCfont を書くために、PostScript に精通している必要があります。

prolog.ps ファイルに対するサポートは、下位互換性を維持する目的でのみ継続されています。ロケールで印刷するために新たに prolog.ps ファイルの作成はせず、代わりに mp.conf を使用します。

prolog.ps の場所

パスは次のとおりです。

/usr/openwin/lib/locale/$LANG/print/prolog.ps