GROPS(1)

名称
grops - groff 用 PostScript ドライバ

書式
grops [-glmv] [-b n] [-c n] [-F dir] [-p papersize] [-P prologue] [-w n] [ files... ]

コマンドラインオプションとパラメータの間に空白を含めることが可能です。

解説
grops は GNU troff の出力を PostScript に変換します。 通常 grops は groff コマンドを -Tps オプション付きで起動した時に起動されます。 (groff のデフォルトです。) ファイルを指定しないと、 grops は標準入力を読みます。 ファイル名 - を指定しても、 grops は標準入力を読みます。 PostScript 出力は標準出力に書きます。 grops を groff から起動する場合、 groff -P により、オプションを grops に渡せます。

オプション

-bn 不良なスプーラとプレビュアのための対処をします。 通常、 grops は Document Structuring Conventions version 3.0 を満たす PostScript LanguageLevel 2 出力を生成します。 このような出力を扱えない古いプリンタ、スプーラ、プレビュアがあります。 値 n は、不良プログラムが受理可能な出力を grops が行うように制御します。 値 0 は grops に何も対処しないようにさせます。

    %%BeginDocumentSetup と %%EndDocumentSetup のコメントを生成してはならない場合 1 を加えます; 初期バージョンの TranScript は %%EndProlog コメントと最初の %%Page コメントとの間で混乱させられましたので、これが必要です。

    インクルードされたファイルで %! から始まる行を取り除かねばならない時には 2 を加えます; Sun の pageview プレビュアで必要です。

    インクルードされたファイルから %%Page, %%Trailer, %%EndProlog コメントを取り除かねばならない時には 4 を加えます; %%BeginDocument と %%EndDocument のコメントを理解しないスプーラに対して必要です。

    PostScript 出力の最初の行が %!PS-Adobe-3.0 ではなく %!PS-Adobe-2.0 でなければならない時には 8 を加えます; Sun の Newsprint をページ逆順を要求するプリンタと共に使用する時に必要です。

    媒体の大きさ情報を文書に含めてはならない時には 16 を加えます (すなわち %%DocumentMedia も setpagedevice PostScript コマンドも使用しないということです)。 これは、groff バージョン 1.18.1 以前の動作です。 PostScript LanguageLevel 2 を理解しない古いプリンタでは必要です。

    デフォルト値は

        broken n

    コマンドを DESC ファイルに記述することで指定可能です。 そうでない場合はデフォルト値は 0 です。

-cn 各ページを n 部ずつ印刷します。

-Fdir
    序文、フォント、デバイス記述ファイルの検索パスの前に、ディレクトリ dir/devname を追加します。 name はデバイス名であり、通常 ps です。

-g  ページ長を予測します。 ページ長を予測する PostScript コードを生成します。 イメージ領域が垂直位置でページの中心に有る時のみ、予測は正しいはずです。 このオプションにより、変更無しで letter (8.5×11) と A4 の両方に印刷可能な文書を生成可能です。

-l  文書をランドスケープ形式にて印刷します。

-m  文書に対し手動フィードを有効にします。 -ppaper-size 出力媒体の物理的な大きさを設定します。 これは、 DESC ファイル中の papersize, paperlength, paperwidth のコマンドに優先します。 これは、 papersize コマンドと同じ引数を受け付けます。 詳細は groff_font (5) を参照してください。

-Pprologue-file
    (フォントパス中の) ファイル prologue-file を、デフォルトの序文ファイル prologue の代りに、序文として使用します。 本オプションは、環境変数 GROPS_PROLOGUE に優先します。

-wn 線の太さを M の横幅 (em) の 1000 分の n にて描画します。 本オプションを指定しないと、線の太さは 0.04 em になります。

-v  バージョン番号を表示します。

使用法
R, I, B, BI と呼ばれるスタイルがフォント位置 1 から 4 までにマウントされます。 フォントはファミリ A, BM, C, H, HN, N, P, T にまとめられ、これらのスタイル中にメンバを持ちます:

    AR  AvantGarde-Book
    AI
        AvantGarde-BookOblique
    AB
        AvantGarde-Demi
    ABI
        AvantGarde-DemiOblique
    BMR
        Bookman-Light
    BMI
        Bookman-LightItalic
    BMB
        Bookman-Demi
    BMBI
        Bookman-DemiItalic
    CR
        Courier
    CI
        Courier-Oblique
    CB
        Courier-Bold
    CBI
        Courier-BoldOblique
    HR
        Helvetica
    HI
        Helvetica-Oblique
    HB
        Helvetica-Bold
    HBI
        Helvetica-BoldOblique
    HNR
        Helvetica-Narrow
    HNI
        Helvetica-Narrow-Oblique
    HNB
        Helvetica-Narrow-Bold
    HNBI
        Helvetica-Narrow-BoldOblique
    NR
        NewCenturySchlbk-Roman
    NI
        NewCenturySchlbk-Italic
    NB
        NewCenturySchlbk-Bold
    NBI
        NewCenturySchlbk-BoldItalic
    PR
        Palatino-Roman
    PI
        Palatino-Italic
    PB
        Palatino-Bold
    PBI
        Palatino-BoldItalic
    TR
        Times-Roman
    TI
        Times-Italic
    TB
        Times-Bold
    TBI
        Times-BoldItalic

ファミリのメンバではない以下のフォントもあります:

    ZCMI
        ZapfChancery-MediumItalic

PS Symbol フォント用の S および PS Symbol から取られた斜体小文字のギリシャ文字を含む SS と呼ばれる特別なフォントも有ります。 Zapf Dingbats は ZD として、逆バージョンの ZapfDingbats (シンボルが逆向き) は ZDR として使用可能です; これらのフォントのほとんどの文字は名前が無いので、 \N. にてアクセスせねばなりません。

\m と \M のデフォルト色は黒です。 `rgb' 色空間中で定義される色には setrgbcolor を使用し、`cmy' と `cmyk' には setcmykcolor を、`gray' には setgray を使用します。 setcmykcolor は PostScript LanguageLevel 2 コマンドであり、古いプリンタでは使えません。

grops は \X エスケープシーケンスにより生成された様々な X コマンドを理解します; grops は ps: タグから始まるコマンドのみを翻訳します:

\X'ps: exec code'
    code 中の任意の PostScript コマンドを実行します。 code 実行前に PostScript の現在位置は \X の位置に設定されます。 原点はページの左上になり、y 座標はページを下ると増加します。 プロシージャ u は、groff の単位を有効な座標系のものに変更するように定義されます。 例えば、

        .nr x 1i
        \X'ps: exec \nx u 0 rlineto stroke'

    は 1 インチ長の水平線を描画します。 code はグラフィックステートを変更し得ますが、ページの終端までしか継続しません。 def と mdef により指定される定義を含む辞書は、辞書スタックの頭に有るでしょう。 あなたのコードがこの辞書に定義を付加するなら、 \X'ps mdef n'. を使用して、そのための空間を割り当てる必要が有ります。 定義はページの終りまでしか継続しません。 \Y エスケープシーケンスをマクロを名付ける引数と共に使うと、 code を複数行に渡らせることが出来ます。 例えば、

        .nr x 1i
        .de y
        ps: exec
        \nx u 0 rlineto
        stroke
        ..
        \Yy

    は 1 インチ長の水平線を描画する別の方法です。

\X'ps: file name'
    exec コマンドと同様ですが、コードをファイル name から読みます。

\X'ps: def code'
    code の PostScript 定義をプロログ部に置きます。 \X コマンドに対し最大 1 定義までです。 長い定義は複数の \X コマンドに渡り分割できます; 全ての code 引数は、改行で区切られ、単純に連結されます。 定義は、 exec コマンド実行時に辞書スタックに自動的にプッシュされる辞書に置かれます。 \Y エスケープシーケンスをマクロを名付ける引数と共に使うと、 code を複数行に渡らせることが出来ます。

\X'ps: mdef n code'
    def と同様ですが、 code は n 個まで定義を保持し得ます。 grops は何個の定義を code が含むのかを知る必要が有るので、これらを含む適切な大きさの PostScript 辞書 を生成できます。

\X'ps: import file llx lly urx ury width [ height ]'
    PostScript グラフィックスを file からインポートします。 引数 llx, lly, urx, ury は、デフォルトの PostScript 座標系における グラフィックのバウンディングボックスを与えます; すべて整数である必要が有ります; llx と lly はグラフィックの左下の x y 座標です; urx と ury はグラフィックの右上の x y 座標です; width と height は整数であり、groff の単位でグラフィックの幅と高さを与えます。 グラフィックは延び縮みして、この幅と高さになり、 グラフィックの左下角は \X コマンドにて関連づけられた場所に位置します。 引数 height を省略すると、x y 方向が同等に縮尺され、 指定した幅になります。 \X コマンドの内容は troff が解釈しないことに注意して下さい; グラフィックのための垂直方向の空白は自動的に付加されず、 width と height の引数にスケーリングインジケータを付加することは許されません。 PostScript ファイルが Adobe Document Structuring Conventions から成り、 %%BoundingBox コメントを含む場合、 psbb リクエスト実行により、groff 中でバウンディングボックスを自動的に取得可能です。

    PostScript グラフィックスの高レベルインタフェースを提供する PSPIC マクロについては、 groff_tmac(5) を参照してください。

\X'ps: invis'
\X'ps: endinvis'
    これらの \X コマンドにて囲まれたテキストと描画コマンドは出力を生成しません。 このコマンドは、 troff の出力を grops で処理する前に見るために有ります; プレビュアがある文字または構造を表示できない時、 これらの \X コマンドで囲むことにより、 代わりの文字または構造をプレビュー用に使えます。

    例えば、標準の X11 フォントには含まれませんので、 gxditview は \(em 文字を正しく表示できません; この問題は以下のリクエストを実行することにより解決できます。

        .char \(em \X'ps: invis'\
        \Z'\v'-.25m'\h'.05m'\D'l .9m 0'\h'.05m''\
        \X'ps: endinvis'\(em

    この場合、 gxditview は \(em 文字を表示できず線を引きますが、 grops は \(em 文字を印刷し線を無視します (このコードはファイル Xps.tmac 中にあります。 grops 用の文書が gxditview でプレビューされる場合にはロードされます)。

grops への入力は troff (1) の出力形式である必要が有ります。 これは groff_out (5) に記載してあります。 また、使用するデバイスに関するデバイス及びフォントの記述ファイルは 仕様に合致する必要が有ります。 ps デバイスに対して提供されているデバイス及びフォントの記述ファイルは 完全にこの仕様に合致します。 afmtodit(1) を使って AFM ファイルからフォントファイルを生成可能です。 解像度は、整数値かつ sizescale の 72 倍の倍数である必要が有ります。 ps デバイスは解像度 72000 および sizescale 1000 を使用します。

デバイス記述ファイルは、正当な用紙サイズを含む必要があります。 更なる情報については groff_font(5) を参照してください。

各フォント記述ファイルはコマンド

    internalname psname

を含む必要が有ります。これは PostScript におけるフォント名が psname であることを意味します。 また、コマンド

    encoding enc_file

を含む場合も有ります。これは PostScript フォントが enc_file に記載されたエンコード方式で再度エンコードする必要が有ることを意味します; このファイルは以下の形式の行のシーケンスから成ります:

    pschar code

ここで pschar は PostScript における文字名であり、 code はエンコードにおける位置を 10 進整数で表したものです。 正当な値の範囲は 0 から 255 です。 # で開始する行と空行は無視されます。 フォントファイルにおいて与えられる各文字のコードは、 エンコードファイルにおける文字のコードに対応するか、 もしくは PostScript フォントが再度エンコードされていない場合は デフォルトエンコードにおけるコードに対応する必要が有ります。 このコードを \N エスケープシーケンスと共に troff 中で使うことにより文字を選択可能です。 これは、文字が groff での名前を持たなくても可能です。 フォントファイル中の全ての文字は PostScript フォント中に存在することが 必要であり、 フォントファイル中で与えられる幅は PostScript フォントで使用される幅に マッチする必要が有ります。 grops は、groff における名前が space である文字をブランク (ページ上に何も印を付けない) であるとしています; これにより、効率の良い小さな PostScript 出力が得られます。

grops は PostScript フォントのすべてのグリフを表示可能です。 256 個だけではありません。 enc_file (エンコーディングが指定されない場合はデフォルトエンコーディング) は、単に最初の 256 文字用のグリフの順番を指定するだけです。 他のグリフは、追加のエンコーディングベクタでアクセスされ、これは grops がオンザフライで生成します。

grops は文書印刷に必要なダウンロード可能なフォントを自動的にインクルードします。 このようなフォントは PFA フォーマットであることが必要です。 pfbtops(1) を使って Type 1 フォントを PFB フォーマットに変換してください。 要求時に grops にインクルードされるダウンロード可能な全てのフォントは /usr/share/groff_font/devps/download に列挙する必要が有ります; これは以下の形式の複数の行から成ります。

    font filename

ここで font はフォントの PostScript における名前であり、 filename はフォントを含むファイルの名前です; # から始まる行と空行は無視されます; フィールドはタブもしくは空白により区切ります; filename の検索は、groff のフォントメトリックファイルの検索と同じ方式で行われます。 download ファイル自身も同じ方式で検索されます; 現在のところ、フォントパス内で最初に見付かったファイルが使用されます。

ダウンロード可能なフォントもしくはインポートされた文書を含むファイルが Adobe Document Structuring Conventions を満たす場合、 grops はファイル中のコメントを十分解釈し、出力もこれを満たすようにします。 また、 download ファイルに列挙された必要なフォントリソースおよびファイルリソースを提供します。 また、リソース間の依存関係を扱うことも可能です。 例えば、ダウンロード可能な Garamond フォントおよび ダウンロード可能な Garamond-Outline フォントが有り、 後者が前者に依存すると仮定すると (概して、後者は前者のフォント辞書をコピーして PaintType を変更したものと 定義されます)、PostScript 文書中で Garamond が Garamond-Outline より前に 現れる必要が有ります。 grops がこれを自動的に扱うためには、 Garamond-Outline 用のダウンロード可能なフォントファイルが Garamond に依存することを Document Structuring Conventions を使用して示します。 例えば以下のように始めることで示します。

    %!PS-Adobe-3.0 Resource-Font
    %%DocumentNeededResources: font Garamond
    %%EndComments
    %%IncludeResource: font Garamond

この場合、Garamond と Garamond-Outline を download ファイルに列挙する必要が有ります。 ダウンロード可能なフォントは、自身の名前を %%DocumentSuppliedResources コメントに含んではなりません。

grops は %%DocumentFonts コメントを解釈しません。 %%DocumentNeededResources, %%DocumentSuppliedResources, %%IncludeResource, %%BeginResource, %%EndResource コメント (もしくは古い %%DocumentNeededFonts, %%DocumentSuppliedFonts, %%IncludeFont, %%BeginFont, %%EndFont コメント) は使用されます。

  TrueType フォント
TrueType フォントは、 まず Type 42 フォーマットに変換することで grops で使えます。 これは特別な PostScript ラッパであり、 pfbtops(1) で述べられている PFA フォーマットと同じものです。 type42 ラッパを作成する数々の方法があり、 ほとんどの方法が Ghostscript — gs(1) 参照 — のような PostScript インタプリタを使う方法です。 最も簡単な方法は、アプリケーション ttftot42 を使うものでしょう。 このプログラムは freetype(3) (バージョン 1.3.1) を使用することで、 type42 フォントラッパと、適切なメトリックファイル作成のために afmtodit(1) に食わせるためのよくできた AFM ファイルを生成します。 結果のフォントラッパを download ファイルに追加する必要があります。 ttftot42 ソースコードは からダウンロード可能です。

環境変数

GROPS_PROLOGUE
    foo に設定されている場合、 grops は (フォントパス中の) ファイル foo をデフォルトの序文ファイル prologue の代りに使用します。 オプション -P は、この環境変数に優先します。

関連ファイル
/usr/share/groff_font/devps/DESC デバイス記述ファイル。

/usr/share/groff_font/devps/F
    フォント F のフォント記述ファイル。

/usr/share/groff_font/devps/download
    ダウンロード可能なフォントのリスト。

/usr/share/groff_font/devps/text.enc
    テキストフォント用のエンコード方法。

/usr/share/tmac/ps.tmac
    grops が使用するマクロ; troffrc により自動的にロードされます。

/usr/share/tmac/pspic.tmac
    PSPIC マクロの定義。 ps.tmac から自動的にロードされます。

/usr/share/tmac/psold.tmac
    古い PostScript プリンタには存在しない文字 (例えば `eth' や `thorn') の使用を禁止するマクロ。

/usr/share/tmac/tmac.psnew
    tmac.psold の効果を打ち消すマクロ。

/tmp/gropsXXXXXX
    一時ファイル。

関連項目
afmtodit(1), groff(1), troff(1), pfbtops(1), groff_out(5), groff_font(5), groff_char(7), groff_tmac(5)