国際化対応言語環境の利用ガイド

既存 prolog ファイルのカスタマイズと新しい prolog ファイルの追加

prolog ファイルは、主に次の 2 つに分類されます。

PostScript ファイルのカスタマイズ

PostScript ファイルには、次の種類があります。

ロケールに依存する prolog ファイル

prolog.ps ファイルは、特殊なフォントを設定するために使用されます。アプリケーションでは、あらかじめ定義されたこのような PostScript フォント名を使って印刷を行ないます。この prolog ファイルには、少なくとも、Desk Set Calendar マネージャや mp で使用する次のフォント名が定義されていなければなりません。

次の例では、これらのフォントを使って、指定された特定の文字セットを印刷します。

100 100 moveto
/LC_Times-Roman findfont 24 scale font setfont
(Any text string in your locale) show 

Solaris 地域対応化キットには、日本語環境向けのサンプル prolog.ps ファイルが含まれています。このファイルは、/usr/openwin/lib/locale/ja/print/ ディレクトリにも含まれています。

次の例では、既存の prolog.ps に対する合成フォントの追加や変更について説明します。

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

ここでは、LC_Base-Font という合成フォントを作成するものとします。

LC_Base-Font は、Foo-Fine と、Base-Font と呼ばれるベースフォントを合成したフォントです。Foo-Fine フォントには、ローカル文字セットが含まれています。フォントの追加や変更を行う場合には、PostScript の詳細についての知識は必要ありません。

prolog.ps ファイルを作成する際には、サンプルファイルが参考になります。サンプルの prolog.ps ファイルでは、makecodeset12 makeEUCfont という 2 つのルーチンを作成する必要があります。makecodeset12 では、ローカルのフォントエンコーディング情報を設定します。このルーチンはロケールによって異なります。makeEUCfont では、ベースフォントとロケールフォントを結合して合成フォントを作成します。 makecodeset12makeEUCfont の作成には、PostScript についてよく理解していることが必要です。

prolog.ps ファイルのサポートは、後方互換性を維持するために提供されるものです。したがって、特定のロケールの印刷ニーズのために新しい prolog.ps ファイルを作成しないでください。その場合には、mp.conf を使用してください。

prolog.ps ファイルのパスは次のとおりです。

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

共通 PostScript prolog ファイル

共通 prolog ファイルの名前は mp.common.ps です。

他のすべてのページレイアウト prolog ファイルにこのファイルが含まれていなければなりません。

mp.common.ps ファイルは /usr/lib/lp/locale/C/mp/ ディレクトリにあります。このファイルには、フォントのエンコーディングを標準エンコーディングから ISO 8859–1 エンコーディングに変換する PostScript ルーチンが含まれています。この .reencodeISO ルーチンは、フォントのエンコーディングを変換するために印刷レイアウト prolog ファイルから呼び出されます。通常は、この prolog ファイルをカスタマイズする必要はありません。独自の prolog ファイルを作成する場合は、環境変数 MP_PROLOGUE を使って、変更された prolog ファイルが含まれているディレクトリをポイントする必要があります。

印刷レイアウト prolog ファイル

印刷レイアウト prolog ファイル (mp.*.ps ) には、印刷のページレイアウトを制御するルーチンが含まれています。これらの prolog ファイルでは、印刷ページのヘッダーやフッターに、ユーザー名、印刷日付、ページ番号を印刷するだけでなく、その他の情報を提供することができます。たとえば、prolog ファイルには、印刷可能領域や、印刷のランドスケープやポートレートモードを指定できます。

印刷レイアウト prolog ファイルには、次のものがあります。

prolog ファイルには、一定の標準関数が定義されていなければなりません。これらの関数は、新しい印刷ページの開始や終了、または新しい列の終了で呼び出されます。これらの関数の実装では、印刷出力の印刷属性が定義されます。

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

User

mp を実行しているユーザーの名前。この情報はシステム passwd ファイルから取得されます。

MailFor

印刷する記事のタイプを保持するための変数。この変数の値には、次のものがあります。

  • “Listing for” - 入力がテキストファイルの場合

  • “Mail for” - 入力がメールファイルの場合

  • “Article from” - 入力がニュースグループからの記事の場合

Subject

メールやニュースのヘッダーからとられた件名。- s オプションを使用すれば、通常のテキストファイルの他に、メールファイルやニュースファイルに対しても件名を強制的に指定できます。

Timenow

ヘッダーやフッターに表示する印刷時刻。この情報は localtime() 関数からとられます。

印刷レイアウト prolog ファイルには、次の関数が実装されています。これらの関数ではサブ関数を使用できます。

endpage

使用方法 - page_number endpage

印刷ページの終わりに達したときに呼び出されます。この関数はページのグラフィックコンテキストを復元し、「showpage」を出します。prolog ファイルによっては、ヘッダーやフッターの情報が、カラムバイカラムではなく、ページバイページモードのときだけ表示されることがあります。この関数の実装方法によっては、ヘッダーやフッターのグレイスケールロゼンジを表示するサブ関数を呼び出すこともできます。

newpage

使用方法 - page_number newpage

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

endcol

使用方法 - page_number col_number endcol

新しい印刷位置への移動など、ヘッダーやフッター情報を表示するときに使用します。

新しい印刷レイアウト prolog ファイルを追加する際には、次の変数を prolog ファイルに明示的に定義する必要があります。

NumCols

印刷ページのカラム数。デフォルトは 2 です。

PrintWidth

印刷領域の幅をインチ単位で指定します。デフォルトは 6 です。

PrintHeight

印刷領域の高さをインチ単位で指定します。デフォルトは 9 です。

.xpr ファイルのカスタマイズ

これらのファイルは、デフォルトで /usr/lib/lp/locale/C/mp/ に格納されています。.xpr ファイルは、mp.common.ps. を除き、それぞれの PostScript prolog レイアウトファイルに対応しています。MP_PROLOGUE 環境変数を定義することによって、代わりの prolog ディレクトリを定義できます。

これらのファイルでは、キーワード/値ペアが使用されます。# で始まる行はコメントとみなされます。特に断りがない限り、それぞれのトークンはスペースで区切られます。.xpr ファイルの 3 つの主要なセクションは、次のキーワードペアで囲まれます。

3 つの領域では、一定のキーワード/値ペアが使用できます。以下に各領域について説明します。

STARTCOMMON/ENDCOMMON キーワード

STARTCOMMON キーワードと ENDCOMMON キーワードの間にあるすべてのキーワード/値ペアは、印刷ページの一般的なプロパティを定義するためのものです。以下の説明では、キーワードの有効な値を「/」で区切ります。

ORIENTATION 0/1

「0」は印刷をポートレートモードで行うことを、「1」は印刷をランドスケープモードで行うことをそれぞれ示します。

PAGELENGTH unsigned-integer

論理ページ当たりの行数

LINELENGTH unsigned-integer

行あたりの文字数 (単一カラム文字)

NUMCOLS unsigned-integer

物理ページ当たりの論理ページ数

HDNGFONTSIZE unsigned-integer

ヘディングのフォントポイントサイズ (デシポイント単位)

BODYFONTSIZE unsigned-integer

本体のフォントポイントサイズ (デシポイント単位)

PROLOGDPI unsigned-integer

現在の .xpr ファイルが作成されているインチ当たりドット数スケール

YTEXTBOUNDARY unsigned-integer

この y 座標では、ページまたは論理ページにおけるテキスト印刷の境界 (カラム) を設定します。この境界は、テキスト印刷が正しい領域内で行なわれているかどうかを確認するための追加のチェックとして使用されます。この境界は Complex Text Layout や EUC の印刷に必要です。対応するフォントから得られる文字の高さ情報が正しいとは限らないからです。

STARTTEXT unsigned-integer unsigned-integer

物理ページの最初の論理ページで実際のテキスト印刷が行なわれるデシポイント x/y ポイント

PAGESTRING 0/1

1 は、ヘディングのページ番号の前に「Page」文字列を付加する必要があることを示します。

0 は、ページ番号だけを表示することを示します。

EXTRAHDNGFONT font string 1, font string 2, ... font string n

「font string 1」から「font string n」は X Logical Font Description です。キーワード EXTRAHDNGFONT と、コンマで区切ったフォント名リストを分離するトークンは " です。スペースやタブではありません。これらのフォントは、ヘディングの印刷時に、組み込まれているフォントよりも優先して使用されます。通常、EXTRABODYFONT は、 /usr/openwin/server/etc/XpConfig/C/print/models/<model name>/fonts ディレクトリに設定されているプリンタ常駐フォントを割り当てるために使用されます。

fonts.dir ファイルには、プリンタ常駐フォントの XLFD が含まれています。

通常、フォントは .xpr ファイルに次のように指定されています。

 "-monotype-Gill Sans-Regular-r-normal- -*-%d-*-*-p-0-iso8859-2" 

%d」(存在する場合) は、 mp(1) によって、.xpr ファイルに指定されているヘディングフォントのポイントサイズで置き換えられます。x 解像度と y 解像度は * で指定され、平均幅のフィールドは 0 に設定されています。これは、可能な限りスケーラブルなフォントを選択することを示します。特定のフォント名を指定することもできます。

EXTRABODYFONT font string 1, font string 2, ... font string n

これらのフォントがページ本体の印刷に使用されることを除けば、EXTRAHDNGFONT と同じです。

XDISPLACEMENT signed/unsigned int

ページに適用する x 座標変位を指定します。ページの内容は、この変位分だけ x 方向にシフトされます。この値は +ve でも -ve でもかまいません。

YDISPLACEMENT signed/unsigned int

内容が y 方向にシフトされることを除けば、x 変位と同じです。

これらのキーワードは、プリンタのマージン幅が標準的でないためにページの内容をシフトしたいときに有効です。

STARTPAGE/ENDPAGE

このセクションのキーワード値ペアは、STARTPAGE ENDPAGE キーワードで囲まれた部分です。このセクションには、物理ページに適用する描画やヘディングの情報を指定します。物理ページには多数の論理ページが含まれていることがありますが、これらのキーワードで囲まれる描画ルーチンは物理ページに 1 度だけ適用されます。

有効な描画エンティティは、LINE と、 ARC. XDrawLine() および XDrawArc() 関数です。これらの関数は、キーワードの値に対して実行されます。

このセクション内の寸法は PROLOGDPI 単位でマップされます。 傾きは度数で表されます。

LINE x1 y1 x2 y2

線をつなぐ両端を無符号の x/y 座標で定義します。

ARC x y width height angle1 angle2

x と y は共に円弧の基点を表す無符号の整数です。幅と高さはそれぞれ円弧の幅と高さを表す無符号の整数です。

USERSTRINGPOS x y

ヘディングに印刷するユーザー情報の位置を表す無符号の座標です。

TIMESTRINGPOS x y

ヘディングに印刷する印刷時刻の位置を表す無符号の座標です。

PAGESTRINGPOS x y

ページに印刷するページ文字列の位置を表す無符号の座標です。

SUBJECTSTRINGPOS x y

ページに印刷する件名の位置を表す無符号の座標です。

STARTFORCEDPAGE/ENDFORCEDPAGE

mp-n オプションを指定すると、STARTPAGE/ENDPAGE セクションに指定したデコレーションはいっさい印刷されません。しかし、-n オプションを指定しても、 STARTFORCEDPAGE/ENDFORCEDPAGE セクションのデコレーションは印刷されます。

STARTCOLUMN/ENDCOLUMN

このセクションの各エンティティが NUMCOLS の回数だけ物理ページに適用されることを除けば、すべてのキーワードは STARTPAGE/ENDPAGE と同じです。

たとえば、NUMCOLS が 3 なら、物理ページの印刷可能域が 3 つに分割され、線や円弧、エンディングの指定がページごとに 3 回印刷されます。

STARTFORCEDCOLUMN/ENDFORCEDCOLUMN

mp-n オプションを指定すると、STARTCOLUMN/ENDCOLUMN セクションに指定したデコレーションはいっさい印刷されません。しかし、-n オプションを指定しても、 STARTFORCEDCOLUMN/ENDFORCEDCOLUMN セクションのデコレーションは印刷されます。

新しい .xpr ファイルの作成

.xpr ファイルの STARTCOMMON/ENDCOMMON セクションでキーワードの値が指定されていないと、mp(1) プログラムは次の値をデフォルトとして使用します。

STARTPAGE/ENDPAGE および STARTCOLUMN/ENDCOLUMN で囲まれる他の 2 つのセクションでは、デフォルト値は必要ありません。

新しい .xpr prolog ファイルを作成する際には、デフォルトと異なる値だけを指定します。

デコレーションなしのページを作成する場合は、ページ当たり 4 つの論理ページをポートレート形式で作成します。

この場合には、他の 2 つのセクションを定義する必要はありません。

印刷ページにデコレーションを入れない場合は、これらのパラメータを設定する必要はありません。PROLOGDPI キーワードを指定しなければ、すべての解像度は 300 dpi (デフォルト) で表されます。ターゲットプリンタの解像度がこれと異なる場合は、プリンタの解像度に合わせて .xpr ファイルが自動的に拡大縮小されます。

.xpr ファイルを作成する際には、用紙のサイズがあらかじめわかっていなければなりません。解像度が 300 dpi のプリンタの場合、米国で使用される 8.5x11 インチの用紙の合計サイズは 2550X3300 です。ほとんどのプリンタでは、用紙の左上隅に印刷することはできません。通常、用紙の周囲にはマージンが必要です。つまり、0,0 から印刷しようとしても、ページの左上隅には印刷されません。新しい .xpr ファイルを作成する場合には、この点に注意してください。