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

第 7 章 mp による印刷フィルタの拡張

この章では、 mp による印刷フィルタの拡張について説明します。この章の内容は次のとおりです。

UTF-8 用の印刷

Solaris 9 環境で拡張された mp(1) 印刷フィルタは、UTF-8 で作成されたプレーンテキストファイルを含むさまざまな入力ファイル形式を印刷できます。この mp(1) は、Solaris システムで利用できる、TrueType と Type1 のスケーラブルフォントと、X11 のビットマップフォントを使用します。さらに、このユーティリティは、プリンタ常駐のフォントを使用することによって、 X 印刷サーバークライアントとして動作することもできます。

このユーティリティの出力は、標準的な PostScript であり、任意の PostScript プリンタへ送ることができます。さらに、X 印刷サーバークライアントとして動作している mp(1) は、任意のページ記述言語を出力することができます。mp は印刷サーバーによってもサポートされます。

このユーティリティを使うには、以下のように入力します。

system% mp filename | lp

また、このユーティリティは stdin ストリーム (標準入力) を受け付けるので、フィルタとしても使うことができます。

system% cat filename | mp | lp 
:

このユーティリティを、ラインプリンタの印刷フィルタとして使用することもできます。たとえば、以下の一連のコマンドは、印刷サービス LP に対して、プリンタ lp1mp 形式のファイルのみを受け付けるように指示しています。このコマンドは、プリンタ lp1 をポート /dev/ttya にインストールします。詳細については、lpadmin(1M) のマニュアルページを参照してください。

system# lpadmin -p lp1 -v /dev/ttya -I MP
system# accept lp1
system# enable lp1

lpfilter(1M) を使用して、次のようにこのユーティリティをフィルタとして追加できます。

system# lpfilter -f lp1 -F pathname 

このコマンドは、pathname で指定した名前のフィルタ記述ファイルにより、コンバータ (この場合は、mp) が使用可能であることを LP に伝えます。pathname の内容は次のとおりです。

Input types: simple 
Output types: MP
Command: /usr/bin/mp

このフィルタは、/usr/bin/mp を使用して、デフォルトのファイル入力を PostScript 出力に変換します。

UTF-8 テキストファイルを印刷するには、次のコマンドを使用します。

system% lp -T MP UTF-8-file

詳細については、mp のマニュアルページを参照してください。

mp 印刷フィルタの拡張概要

Solaris 9 リリースでは、mp 印刷フィルタが拡張されています。最新の mp は、内部的に次の 3 つのモードで動作します。そして、特定のロケールに対応する出力ファイルを生成し、国際テキストを印刷します。

次の各項では、特定の印刷方法をどのようなときに使用し、それぞれの方法でどのような構成ファイルやサポートファイルが mp によって使用されるかについて説明します。

mp でロケール固有のフォント構成ファイル mp.conf を使用する場合

コマンド行に -D オプションも -P オプションも指定しないと、この印刷方法がデフォルトとして使用されます。ただし、/usr/openwin/lib/locale/$LANG/print /usr/lib/lp/locale/$LANG/mp ディレクトリに prolog.ps ファイルがある場合は除きます。 prolog.ps ファイルがあると、mp はファイルに組み込まれている PostScript フォントを使って印刷します。ロケールに prolog.ps がある場合でも、-M オプションを指定すれば、prolog.ps ファイルは無視され、mp.conf ファイルがあれば代わりに使用されます。

この方法では、/usr/lib/lp/locale/$LANG/mp/mp.conf フォント構成ファイルが使用されます。代わりのフォントを使って印刷する必要がなければ、通常はこのファイルを変更する必要はありません。このファイルでは、TrueType、Type 1、または PCF フォントが使用できます。/usr/lib/lp/locale/C/ には、このモードの印刷と次の印刷方法で共通に使用される .ps 印刷ページレイアウトファイルが含まれています。これらのファイルのカスタマイズ方法については、既存 prolog ファイルのカスタマイズと新しい prolog ファイルの追加を参照してください。

mp でロケール固有の PostScript プロローグファイルを使用する場合

コマンド行に -D オプションも -P オプションも指定せず、かつ/usr/openwin/lib/locale/$LANG/print/prolog.ps が存在する場合は、出力の先頭に prolog.ps ファイルが付加されます。.ps プロローグページの印刷スタイルによっては、出力の先頭にレイアウトファイルがさらに付加されることがあります。

この印刷方法では、PostScript フォントファイルだけが使用されます。prolog.ps ファイルのカスタマイズについては、mp が Xprt (X Print Server) クライアントとして動作する場合を参照してください。

mp が Xprt (X Print Server) クライアントとして動作する場合

この方法では、 X Print Server によってサポートされるネットワークに接続された任意のプリンタ向けの出力を mp で印刷できます。このコマンドでは、PostScript や、PCL の多くのバージョンがサポートされます。

-D-P コマンドオプションを使用し、かつ環境に XPDISPLAY 変数が設定されていない場合は、印刷サーバー起動スクリプトが、このクライアントが動作するマシンのポート 2100 で Xprt サーバーを起動します。このスクリプトは、mp が終了すると印刷サーバーを停止します。XPDISPLAY が設定されていると、mp クライアントは XPDISPLAY で動作する印刷サーバーに接続しようとします。ただし、サーバーが動作していなくても、サーバーを起動しません。

/usr/lib/lp/locale/C/mp ディレクトリには、Xprt クライアントとして動作する mp 用の .xpr 印刷ページレイアウトファイルが含まれています。これらのファイルは 300 dpi プリンタ用のサンプルです。ターゲットプリンタの dpi 値が異なる場合は、ターゲットプリンタの解像度に合わせてこの値が自動的に変換されます。

構成ファイルの地域対応化

構成ファイルを使用することによって、フォントエントリまたはフォントグループエントリの追加や変更を柔軟に行うことができます。

システムのデフォルト構成ファイルは、/usr/lib/lp/locale/$LANG/mp/mp.conf です。$LANG は、印刷が行われるロケールのロケール環境変数です。ユーザーは、-u config.file path オプションを指定することによって独自の構成ファイルを指定できます。

互換性のために 1 文字としてエンコードされた合字または変形グリフを表示書式と呼びます。 mp.conf ファイルは、主に、あるロケールの中間コードポイントを、そのコードポイントの印刷に使用されるフォントのエンコーディングでの表示書式に対応付けるために使用されます。

中間コードポイントは、ワイド文字か、PLS (Portable Layout Services) レイヤの出力です。ただし、CTL (Complex Text Layout) 印刷では、中間コードポイントは PLS の出力でなければなりません。mp(1) が生成するデフォルトの中間コードポイントは PLS 出力です。

サポートされているフォント形式は PCF (Portable Compiled Format)、TrueType、Type1 です。システム常駐とプリンタ常駐の両方の Type1 フォントがサポートされます。mp.conf 構成ファイルの形式と内容については、次の点に注意してください。

次の項目はそれぞれ mp.conf ファイルの別々のセクションに定義されます。

フォント別名の定義

mp.conf ファイルのフォント別名定義セクションには、印刷に使用する各フォントの別名を定義します。 各行の形式は次のとおりです。

FontNameAlias font-alias-name font-type font-path 			
font-alias-name

フォントの別名には、通常、フォントのエンコーディング/スクリプト名と、フォントが Roman、Bold、Italic、BoldItalic (R、B、I、BI) のどれであるかを示す文字を指定します。

たとえば、フォントが iso88591 Roman なら、/usr/openwin/lib/X11/fonts/75dpi/courR18.pcf.Z に別名として iso88591R を指定します。

フォントタイプ

.pcf フォントには PCF、Adobe Type1 フォントには Type1、TrueType フォントには TrueType をそれぞれ指定します。mp.conf ファイルに設定できるフォントはこの 3 種類だけです。

font-path

フォントファイルの絶対パス名を指定します。Type1 のプリンタ常駐フォントの場合は、Helvetica など、フォント名だけを指定します。

定義例は次のとおりです。

FontNameAlias   prnHelveticaR   Type1   Helvetica

フォントグループの定義

同じタイプのフォントをフォントグループとして定義することができます。フォントグループの形式は次のとおりです。

keyword

FontGroup

fontgroupname

フォント群のグループ名

GroupType

フォントタイプ。同じタイプのフォント (PCF、Type1、TrueType) からなるフォントグループを作成します。

Roman

フォントグループで使用する Roman Font の名前

Bold

フォントグループで使用する Bold Font の名前

Italic

フォントグループで使用する Italic Font の名前

BoldItalic

フォントグループで使用する BoldItalic Font の名前

グループの作成では Roman フォントのエントリだけが必須で、Bold、Italic、BoldItalic フォントの指定は任意です。メールやニュースでは、ヘッダーラインの表示に異なるタイプのフォントが使用されることがあります。Roman フォントだけを定義している場合、他のフォントの代わりに Roman フォントが使用されます。

対応付けセクション

mp.conf ファイルの対応付けセクションには、中間コードの範囲とロケールのフォントグループの対応付けを定義します。行の形式は次のとおりです。

keyword

MapCode2Font

range_start

0x で始まる 4 バイトの 16 進数値。1 つまたは複数のフォントグループに対応付けるコード範囲の始めを表します。

range_end

対応付けるコード範囲の終わりを表します。この値が「-」の場合は、1 つのコードポイント範囲だけがターゲットフォントに対応付けられます。

group

Type1、PCF、または TrueType フォントグループ。印刷書式に使用されます。

関連付けセクション

mp.conf ファイルの関係付けセクションでは、各フォントと共有オブジェクトを関係付けます。共有オブジェクトとは、中間コードポイントと、フォントエンコーディングを対応付けるものです。行の形式は次のとおりです。

keyword

CnvCode2Font

font alias name

フォントに対して定義されている別名

mapping function

中間コードポイントを受け取り、フォントエンコーディングでのグリフインデックスを取得し、そのグリフを描くために使用されます。

file path having mapping function

対応付けの関数が格納されている .so ファイル。dumpcs 内のユーティリティを使用すれば、EUC ロケールの中間コードセットを知ることができます。


注 –

mp (1) で使用される現在の TrueType エンジンでは、書式 4 と PlatformID 3 の cmap しか処理できません。つまり、構成できるのは Microsoft .ttf ファイルだけです。さらに、TrueType フォントエンジンが正しく機能するためには、文字マップエンコーディングが Unicode か Symbol でなければなりません。Solaris 環境ではほとんどの .ttf フォントがこれらの制約に従っていますので、Solaris ソフトウェアでは mp.conf ファイル内のすべての TrueType フォントを対応付けることができます。


PCF type1 X Logical Fonts Description (XLFD) に対応するフォントを対応付けるための共有オブジェクトを作成する場合は、中間コード範囲と、XLFD で指定されたエンコーディングを対応付ける共有オブジェクトを作成します。 たとえば、次のようにします。

-monotype-arial-bold-r-normal-bitmap-10-100-75-75-p-54-iso8859-8

対応する PCF フォントは次のとおりです。

/usr/openwin/lib/locale/iso_8859_8/X11/fonts/75dpi/ariabd10.pcf.Z

このフォントは isoISO 8859-8 でエンコードされているため、共有オブジェクトでは、中間コードと、対応する ISO 8859-8 コードポイントを対応付ける必要があります。

次の XLFD をもつ TrueType フォントが

-monotype-arial-medium-r-normal--0-0-0-0-p-0-iso8859-8

次のフォントに対応しているとします。

/usr/openwin/lib/locale/iso_8859_8/X11/fonts/TrueType/arial__h.ttf

この場合は、前の TrueType フォントの cmap エンコーディングが Unicode であるため、中間コードと Unicode を対応付ける必要があります。この TrueType フォントの例では、 en_US.UTF-8 ロケールの中間コードが 0xe50000e9 であるとします。このコードはヘブライ語文字 (PLS レイヤによって生成された) に対応しています。このフォントは Unicode でエンコードされているため、0xe50000e9 が渡されたときにその出力が Unicode の表現形式に対応するように、対応する .so モジュール内の機能を設計する必要があります。この例では 0x000005d9 になります。

対応付け機能の機能プロトタイプは次のようになります。

unsigned int function(unsigned int inter_code_pt)

mp.conf: には、オプションで次のキーワード/値ペアを指定できます。

PresentationForm        WC/PLSOutput

デフォルト値は PLSOutput です。WC を指定すると、中間コードポイントとしてワイド文字が生成されます。CTL 印刷では、このデフォルト値を使用してください。

ロケールが CTL 以外のロケールで、キーワードの値が PLSOutput であると、mp(1) はこの値を無視し、ワイド文字コードを生成します。

ロケールが CTL をサポートしている場合は、次の表に示すキーワード/値ペアをオプションで指定できます。これらの変数には、表の中間の列に示す値をどれでも指定できます。

表 7–1 キーワード/値ペア (オプション)

キーワード (オプション) 

値 (オプション) 

デフォルト 

Orientation

ORIENTATION_LTR/

ORIENTATION_RTL/

ORIENTATION_CONTEXTUAL

ORIENTATION_LTR

Numerals

NUMERALS_NOMINAL/

NUMERALS_NATIONAL/

NUMERALS_CONTEXTUAL

NUMERALS_NOMINAL

TextShaping

TEXT_SHAPED/

TEXT_NOMINAL/

TEXT_SHFORM1/

TEXT_SHFORM2/

TEXT_SHFORM3/

TEXT_SHFORM4

TEXT_SHAPED

プリンタ常駐フォントの追加

次の例は、新しい PCF、TrueType、または Type1 のプリンタ常駐フォントを構成ファイルに追加するときの手順を示しています。

0x00000021 から 0x0000007f の範囲にある文字を表示するためのフォントを現在の PCF フォントから TrueType フォントに変更します。

新しいフォントを追加する前に、現在設定されているフォントに対応する、構成ファイルのさまざまなコンポーネントを次に示します。

FontNameAlias iso88591R  PCF  /usr/openwin/lib/X11/fonts/75dpi/courR18PCF.Z
FontNameAlias iso88591B  PCF  /usr/openwin/lib/X11/fonts/75dpi/courB18PCF.Z
.
.
.
FontGroup       iso88591         PCF       iso88591R iso88591B
.
.
.
MapCode2Font    0x00000020      0x0000007f      iso88591
.
.
.
CnvCode2Font iso88591R _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so
CnvCode2Font iso88591B _xuiso88591 /usr/lib/lp/locale/$LANG/mp/xuiso88591.so

en_US.UTF-8 ロケールで行なう対応付けの候補として /usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf を選択しているとします。これは Unicode 文字が対応付けられた TrueType フォントファイルであるため、.so モジュール内の対応付け機能には、受け取った ucs-2 コードポイントを直接返す機能だけあれば十分です。

unsigned short _ttfjis0201(unsigned short ucs2) {
                 return(ucs2);
         }

これを ttfjis0201.c ファイルに保存します。共有オブジェクトを次のように作成します。

cc -G -Kpic -o ttfjis0201.so ttfjis0201.c

ただし、PCF ファイル (/usr/openwin/lib/locale/ja/X11/fonts/75dpi/gotmrk20.pcf.Z など) を対応付ける場合は、 /usr/openwin/lib/locale/ja/X11/fonts/75dpi/ ディレクトリの fonts.dir ファイルを参照してください。次のような、XLFD に対応するエンコーディングに慣れておく必要があります。

-sun-gothic-medium-r-normal--22-200-75-75-c-100-jisx0201.1976-0

エンコーディングが jisx0201 である場合は、ucs-2 と jisx0201 を対応付ける共有オブジェクトを用意します。.so モジュールを作成するための対応付けテーブルがまだない場合は、これを取得する必要があります。 Unicode ロケールの場合は、ftp.unicode.org/public/MAPPINGS/ の中から文字と Unicode を対応付けるテーブルを見つけます。これらの対応付けに従って xu2jis0201.c ファイルを作成します。

 unsigned short _xu2jis0201(unsigned short ucs2) {
                         if(ucs2>= 0x20 && ucs2 <= 0x7d )
                                 return (ucs2);
                         if(ucs2==0x203e)
                                 return (0x7e);
                         if(ucs2>= 0xff61 && ucs2 <= 0xff9f)
                                 return (ucs2 - 0xff60 + 0xa0);
                        return(0);
                 }

対応付けファイルを作成するときには、UCS-2 を jisx0201 に対応付けるすべての組み合わせを組み込みます。

cc  -G -o xu2jis0201.so xu2jis0201.c

共有オブジェクトファイルの作成

共有オブジェクトファイルを作成する例を以下に示します。

mp.conf の適切なセクションに次の行を追加することによってフォントを追加します。次の例では TrueType フォントを追加します。キーワードを TrueType から PCF に変更すれば、PCF フォントの追加にも使用できます。

FontNameAlias   jis0201R TrueType /home/fn/HG-Minchol.ttf
FontGroup     jis0201 TrueType jis0201R
MapCode2Font  0x0020 	0x007f  jis0201
CnvCode2Font   jis0201R 	 _ttfjis0201 <.so path>

.so パスでは、xu2jis0201.so ファイルをポイントします。

変更した mp.conf ファイルを使って mp(1) を呼び出すと、0x0020 から 0x007f の範囲が新しいフォントで印刷されます。さらに、同じso ファイルを使って、他の日本語の範囲 (たとえば、 0x0000FF61 から 0x0000FF9F) を印刷することができます。

後方互換性を保つために、現在のロケールでの出力には、/usr/openwin/lib/locale/$LANG/print/prolog.ps ファイル (存在する場合) が使用されます ($LANG はロケールコンポーネントの 1 つです)。この場合、構成ファイルの仕組みは使用されません。

詳細については、サンプルの mp.conf 構成ファイルである /usr/lib/lp/locale/en_US.UTF-8/mp/mp.conf を参照してください。

既存 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 ファイルを作成する場合には、この点に注意してください。