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

第 8 章 プリントフィルタ mp(1) の拡張

Solaris 8 4/01 リリースで、mp プリントフィルタが新規に追加されました。Solaris ソフトウェアの言語サポートについての情報の詳細は、『国際化対応言語環境の利用ガイド』を参照してください。


注 –

最新のマニュアルページを参照するには、man コマンドを使用してください。Solaris 8 Update リリースのマニュアルページには、「Solaris 8 Reference Manual Collection」には記載されていない新しい情報も提供されています。


mp(1) プリントフィルタ拡張機能の概要

mp(1) プリントフィルタの機能が拡張され、2.5.11 バージョンでは X Print Server のクライアントとして動作できるようになりました。この節では、mp(1) の動作をカスタマイズする方法について説明します。

カスタマイズには、次の 2 種類があります。

ここでは、mp(1) が正しく出力しない場合の対応方法について簡単に説明します。mp バージョン 2.5.11 は機能拡張され、X Print Server クライアントとして動作できるようになりました。

正しく構成された X Print Server が動作している場合は、mp(1) は次の構成ファイルをまったく変更せずに、対象ロケールに正しく印刷します。X Print Server が動作していない場合は、次の節の説明に従い、/usr/lib/lp/locale/$LANG/mp/mp.conf をローカライズ (地域化) します。mp.conf ファイルは、/usr/openwin/lib/locale/$LANG/print/ の下のいくつかのロケールにある prolog.ps ファイルと、実質的には同じ機能を果たします。prolog.ps ファイルをカスタマイズすることもできます。

/usr/lib/lp/locale/$LANG/mp/ ディレクトリにも prolog.ps ファイルが入っている場合があります。このファイルは下位互換性を維持するためにのみ提供されています。-P オプションか -D オプションを指定するときに、直接の X Print Server クライアントモードを使用するか、または mp.conf ファイルを構成することをお勧めします。出力の形式を変更するには、提供されているプロローグ (prolog) ファイルをカスタマイズします。

mp(1) が構成ファイルを選択するときの指針は、次のとおりです。

次に、PostScript (.ps) または X Print クライアントページ (.xpr) のフォーマット (書式) ファイルを選択する方法の指針について説明します。

構成ファイルのローカライゼーション

構成ファイルを使用するのは、必要に応じて、フォントエントリやフォントグループエントリの変更や追加が自在に行えるからです。

使用されているシステムのデフォルトの構成ファイルは /usr/lib/lp/locale/$LANG/mp/mp.conf です。ただし、$LANG は印刷が行われるロケールのロケール環境変数です。ユーザーは専用の構成ファイルを持つことができ、-u <config.file path> オプションで指定できます。

mp.conf ファイルは主に、ロケールの中間コードポイント (符号位置) を、印刷に用いるフォントのエンコーディング (符号化方式) のプレゼンテーションフォーム (表現形式) に対応付けさせるために用いられます。


注 –

互換性のための文字としてエンコーディングされた合字や可変のグリフを、プレゼンテーションフォーム (表現形式) といいます。


中間コードポイントはワイドキャラクタか Portable Layout Service (PLS) 層の出力のどちらかです。Complex Text Layout の印刷では、中間コードポイントは PLS 出力でなければなりません。mp(1) によって生成されるデフォルトの中間コードは、PLS 出力です。

現在サポートされるフォントフォーマットは、Portable Compiled Format (PCF)、TrueType、および Type1 のフォーマットです。システム常駐とプリンタ常駐の両方の Type1 フォントがサポートされています。

mp.conf 構成ファイルのローカライゼーションの目的は、特定のロケールの必要性に応じて印刷できるように mp を構成することです。次に、mp(1) 用の mp.conf 構成ファイルのフォーマットと内容について説明します。

mp.conf ファイルに関し、次の情報をそれぞれの節で説明します。

フォントの別名化

この節では、印刷で使用するフォントのために別名を定義します。この節の各行は、次の形式になっています。

keyword			font alias name		 	font type 		   font path
<keyword>

この節のキーワードは FontNameAlias です。

<font alias name>

フォント名の別名に関する一般的な慣例では、フォントのエンコーディング/スクリプト名 (文字の種類) を指定し、続けて、フォントがローマ字、ボールド、イタリック体、あるいはボールドイタリック体なのかを示す文字 (R、B、I、または BI) を指定します。たとえば /usr/openwin/lib/X11/fonts/75dpi/courR18.pcf.Z なら、iso88591 のローマ字フォントなので、別名 iso88591R を指定することができます。

<font type>

.pcf フォントには PCF を、Adobe Type1 フォントには Type1 を、TrueType フォントには TrueType を指定します。この設定ファイルでは、この 3 種類のフォントだけが構成できます。

<font path>

設定フォントファイルには、絶対パス名を指定します。type1 プリンタ常駐フォントには、フォント名だけを指定します。次に、例を示します。

FontNameAlias			 prnHelveticaR 			 Type1  			  Helvetica

フォントグループの定義

同じ種類のフォントを組み合わせて、フォントグループを作成できます。フォントグループのフォーマットは次のとおりです。


注 –

グループの作成では、ローマ字フォントのエントリだけが必須です。ボールド、イタリック体、およびボールドイタリック体のフォントは省略できます。さまざまなフォントを使用して、メールやニュースの記事の見出し行が表示できます。ローマ字のフォントだけが定義されている場合は、他のフォントの代わりに使用します。


ロケール内の、中間コード範囲からフォントグループへの対応付け

それぞれのフォントと、中間コードポイントをフォントのエンコーディングのプレゼンテーションフォームに対応付けする共有オブジェクトとの関連付け


注 –

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


X Logical Fonts Description (XLFD) に対応するフォントを対応付けする共有オブジェクトを作成するときは、次のことを考慮します。PCF/Type1 フォントを対応付けしている場合は、中間コード範囲から 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

このフォントは iso8859-8 で符号化されているため、共有オブジェクトは中間コードと対応する iso8859-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 ロケールで中間コードがヘブライ文字 (PLS 層で生成) の 0xe50000e9 である場合は、次の点を考慮する必要があります。フォントが Unicode で符号化されているため、0xe50000e9 を入力したときに、出力が Unicode のプレゼンテーションフォームに対応するように、対応する .so モジュール内の関数を設計する必要があります。ここでの例は 0x000005d9 です。

<mapping function> 関数のプロトタイプは、次のとおりでなければなりません。

unsigned int function(unsigned int inter_code_pt)

次に示されているのは、mp.conf で使用できる任意のキーワード/値のペアです。

PresentationForm        WC/PLSOutput

デフォルトの値は、PLSOutput です。ユーザーが「WC」を指定している場合、生成される中間コードポイントはワイドキャラクタです。CTL の印刷では、デフォルト値を使用する必要があります。

ロケールが CTL 以外のロケールでキーワードの値が PLSOutput の場合は無視され、mp(1) は代わりにワイドキャラクタコードを生成します。

ロケールで CTL がサポートされている場合は、次に示す任意のキーワード/値のペアが使用できます。これらの変数は、表の右側に記載されているどの値でもとることができます。

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

しかし、/usr/openwin/lib/locale/ja/X11/fonts/75dpi/gotmrk20.pcf.Z などの PCF ファイルを対応付けしている場合は、/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

JIS X 0201 がエンコーディングである場合、UCS-2 から JIS X 0201 へと対応付けする共有オブジェクトを作成します。.so モジュールを作成するためには、対応付けテーブルを取得する必要があります (手元にない場合)。Unicode ロケールでは、ftp.unicode.org/pub/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 フォントを追加する方法を示します。PCF フォントも同様ですが、キーワードは TrueType ではなく PCF に変更します。

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

# この行は追加する前に mp.conf から削除する必要があります。

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 を参照してください。

既存のプロローグファイルのカスタマイズと新規プロローグファイルの追加

プロローグファイルは次の 2 つのカテゴリに分類されます。

まず、PostScript ファイルのカスタマイズについて説明します。

次に、プロローグファイルの各カテゴリのカスタマイズについて説明します。

共通プロローグファイル

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

上記のファイルは印刷レイアウトプロローグファイルで、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

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

これらのファイルは、デフォルトで /usr/lib/lp/locale/C/mp/ にあります。.xpr ファイルは、mp.common.ps を除いて、各 PostScript プロローグレイアウトファイルに対応しています。MP_PROLOGUE 環境変数を定義すると、別のプロローグディレクトリが定義できます。

これらのファイルはキーワード/値のペアとして動作します。# で始まる行はコメントとみなされます。次の説明で明示的に指示がない限り、スペースによって異なるトークンに分離されます。各 .xpr ファイルの主な 3 つの領域は、次のキーワードのペアに結び付きます。

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

STARTCOMMON/ENDCOMMON のキーワード

STARTCOMMON キーワードの後と ENDCOMMON キーワードの前にあるキーワード/値のペアは、すべて印刷ページの一般的な属性を定義します。1 つのキーワードに対し有効な値が複数あるときは、/ を使用して区切ります。

ORIENTATION 0/1

0 は縦長、1 は横長の向きで印刷を行うことを示します。

PAGELENGTH <符号無し整数>

論理ページごとの行数を示す値。

LINELENGTH <符号無し整数>

1 つのカラムの行の文字数を示す値。

NUMCOLS <符号無し整数>

物理ページごとの論理ページ数。

HDNGFONTSIZE <符号無し整数>

ヘッダーフォントのポイントサイズ (デシポイント)。

BODYFONTSIZE <符号無し整数>

本文のフォントポイントサイズ (デシポイント)。

PROLOGDPI <符号無し整数>

現在の .xpr ファイルが作成される「インチ当たりのドット数」の大きさ。

YTEXTBOUNDARY <符号無し整数>

1 ページあるいは論理ページ(カラム)でテキストを印刷するときに、この y 座標によって境界が設定されます。この境界は、テキスト印刷が希望どおりの領域で行われているかどうかを確認するための追加的な検査に使用します。この境界は、Complex Text Layout や EUC の印刷で必要となります。これは対応するフォントから取得した文字の高さの情報が間違っている可能性があるためです。

STARTTEXT <符号無し整数> <符号無し整数>

ある物理ページの最初の論理ページで実際のテキスト印刷が開始される 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 がある場合は、.xpr ファイルにおける現在の見出しフォントのポイントサイズに、mp(1) によって置き換えられます。x 解像度と y 解像度は * で指定し、平均幅のフィールドは 0 に設定して、できれば、拡大縮小可能なフォントを選ぶように指示します。さらに細かくフォント名が指定できます。

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

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

XDISPLACEMENT <符号付き / 符号無し整数>

ページの x 方向への遷移量。この遷移量は +ve または -ve の値になります。

YDISPLACEMENT <符号付き / 符号無し整数>

このパラメータは、y 方向に移動する以外、x の遷移量と同じです。

標準ではない余白幅のプリンタの場合や、1 ページの印刷内容を入れ換える必要があるときに、この 2 つのキーワードは便利です。

STARTPAGE/ENDPAGE

この節におけるキーワードの値のペアは、STARTPAGE キーワードと ENDPAGE キーワードに結び付きます。この節には、物理ページ 1 枚に適用する描画情報や見出し情報を入れます。物理ページ 1 枚に、複数の論理ページがある場合がありますが、これらのキーワードの間にある描画ルーチンはすべて、1 物理ページ 1 枚に 1 度だけ適用されます。

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

この領域におけるサイズは PROLOGDPI の単位で対応付けされます。角度は度の単位で示されます。

LINE x1 y1 x2 y2

/y 符号なしの座標によって、行を引くときの点の組を定義します。

ARC x y width height angle1 angle2

x と y はともに、弧の原点を示す符号なし整数です。幅 (width) と高さ (height) は、弧の幅と高さを表す、符号なしの整数です。

USERSTRINGPOS x y

符号なしの座標は、見出しでユーザー情報を印刷する位置を示します。

TIMESTRINGPOS x y

符号なしの座標は、見出しで印刷時刻を印刷する位置を示します。

PAGESTRINGPOS x y

符号なしの座標は、各印刷ページのページ文字列を印刷する位置を示します。

SUBJECTSTRINGPOS x y

符号なしの座標は、ページで主題を印刷する位置を示します。

STARTCOLUMN/ENDCOLUMN

すべてのキーワードは前述の STARTPAGE/ENDPAGE の領域と同じですが、この領域では、エントリは物理ページ 1 枚に NUMCOLS 回適用されます。

NUMCOLS が 3 である場合、物理ページの印刷可能な領域は 3 つに分割され、行、弧、あるいは見出しの装飾がページごとに 3 回になります。

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

次に、.xpr ファイルで STARTCOMMON/ENDCOMMON 領域に対し、さまざまなキーワードの値に対する値が指定されていない場合の、mp(1) プログラムのデフォルトを示します。

STARTPAGE/ENDPAGE と STARTCOLUMN/ENDCOLUMN で示される他の 2 つの領域では、デフォルトの値はありません。

.xpr プロローグファイルを新たに作成するときは、デフォルトと異なる値のみを指定する必要があります。

装飾がなく、縦長のフォーマットで、物理ページごとに論理ページを 4 枚使用するページを作成するときは、以下の指定をします。

この場合、次に示す他の 2 つの領域は必要ありません。

印刷ページを装飾しない場合は、これらのパラメータは必要ありません。PROLOGDPI キーワードを指定していない限り、すべての座標はデフォルトの 300 dpi になります。出力先プリンタの解像度が異なる場合は、その解像度に合うように、プログラムによって .xpr ファイルの大きさが調整されます。

.xpr ファイルを作成するときは、用紙のサイズを事前に知っておく必要があります。用紙が米国規格となっている 8.5x11 インチの場合、解像度 300 dpi のプリンタでは、2550X3300 が全体のサイズとなります。たいていのプリンタでは、用紙の左上隅を印刷することはできず、物理的な用紙の周囲にある程度マージンが配置されます。つまり、0,0 から印刷しようとしても、ページの左上隅は印刷されません。.xpr ファイルを新たに作成するときは、こうした制限を考慮する必要があります。