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

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

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

UTF-8 用の印刷

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

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

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

system% mp filename | lp

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

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(1) のマニュアルページを参照してください。

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

Solaris の最新リリースでは、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 フォントが使用できます。

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

/usr/lib/lp/locale/C/ ディレクトリに、この印刷モードに共通の .ps 印刷ページレイアウトがあります。これらのファイルのカスタマイズ方法については、 prolog ファイルの追加とカスタマイズ」 を参照してください。

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

この印刷方法では、PostScript フォントファイルだけが使用されます。prolog.ps ファイルのカスタマイズについては、prolog ファイルの追加とカスタマイズ」を参照してください。

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

mp を Xprt クライアントとして使用すると、mp で Xprt 印刷サービスがサポートするネットワークに接続する任意のプリンタの出力を印刷できます。Xprt クライアントとして mp を使用すると、PostScript や PCL の多くのバージョンがサポートされます。

Xprt クライアントは、次のルールに基づいて Xprt サーバーへの接続を試みます。

mp.conf 構成ファイルを使用した地域対応

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

システムのデフォルト構成ファイルは、/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 が生成するデフォルトの中間コードポイントは 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 を割り当てます。

font-type

.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 フォントの名前

Bold

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

Italic

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

BoldItalic

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

グループの作成では 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

このフォントは ISO 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 はこの値を無視し、ワイド文字コードを生成します。

ロケールが 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 のプリンタ常駐フォントを構成ファイルに追加する方法を示しています。

この手順を実行して、現在設定されているフォントを変更します。最初の 2 つの手順では、0x00000021 から 0x0000007f の範囲にある文字を表示するための PCF フォントが TrueType フォントに変更されます。

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

    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

    たとえば、/usr/openwin/lib/locale/ja/X11/fonts/TT/HG-MinchoL.ttf フォントを en_US.UTF-8 ロケールに対応付けするとします。HG-MinchoL.ttf は Unicode TrueType フォントファイルであるため、.so モジュールの対応付け機能を使用して、受け取った ucs-2 コードポイントを直接返します。

    unsigned short _ttfjis0201(unsigned short ucs2) {
                     return(ucs2);
             }
    1. 対応付けを ttfjis0201.c ファイルに保存します。

    2. 共有オブジェクトファイルを作成します。

      cc -G -Kpic -o ttfjis0201.so ttfjis0201.c
  2. 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
    1. jisx0201 エンコーディングの場合、ucs-2jisx0201 を対応付ける共有オブジェクトを用意します。.so モジュールを作成するための対応付けテーブルを取得します。Unicode ロケールの場合、ftp.unicode.org/pub/MAPPINGS/ ディレクトリ内で Unicode への文字セットの対応付けを見つけます。

    2. これらの対応付けを使用して、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);
                       }
    3. 対応付けファイルを作成するときには、usc—2jisx0201 に対応付けるすべての組み合わせを組み込みます。

      cc  -G -o xu2jis0201.so xu2jis0201.c

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

次の手順例は、共有オブジェクトファイルを作成する方法を示しています。

  1. フォントを追加するには、次の例の mp.conf ファイルに対応する行を編集します。

    この例は、TrueType フォントの追加方法を示しています。.so パスは、xu2jis0201.so ファイルをポイントします。

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

    注 –

    PCF フォントを追加するには、キーワードを TrueType から PCF に変更します。


  2. 変更した mp.conf ファイルを使って mp コマンドを呼び出し、新しいフォントの 0x0020 から 0x007f の範囲を印刷します。

    同じ .so ファイルを使って、他の日本語の範囲を対応づけることができます。たとえば、0x0000FF61 から 0x0000FF9F の範囲を対応付けできます。


    注 –

    後方互換性を保つためには、/usr/openwin/lib/locale/$LANG/print/prolog.ps ファイルを使用して、現在のロケールで出力を作成します。prolog.ps ファイルを使用する場合、構成ファイルは必要ありません。


mp.conf ファイルのサンプルは、/usr/lib/lp/locale/en_US.UTF-8/mp ディレクトリを参照してください。

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 の合成です。フォントの追加や変更を行う場合には、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

共通 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 バイナリは、実行時に次の 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-integerunsigned-integer

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

PAGESTRING 0/1

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

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

EXTRAHDNGFONT font string 1, font string 2, ... 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 によって、.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 キーワード

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

有効な描画エンティティは、LINEARC です。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 prolog ファイルを作成する際には、デフォルトと異なる値だけを指定します。

以下の表は、.xpr ファイルの STARTCOMMON/ENDCOMMON セクションでキーワードの値が指定されていない場合に、mp プログラムが使用するデフォルト値の一覧です。

表 7–2 STARTCOMMON/ENDCOMMON キーワード値

キーワード 

値 

ORIENTATION

0

PAGELENGTH

60

LINELENGTH

80

YTEXTBOUNDARY

3005

NUMCOLS

01

HDNGFONTSIZE

120

PROLOGDPI

300

STARTTEXT

135 280

PAGESTRING

0

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

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

デコレーションなしのページを作成する場合は、次の 2 つのセクションを指定する必要はありません。

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

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