WYSIWYG 流の組版で使用するフォントを Linux にインストールするのは、かなり複雑な作業です。通常は三つの手順を踏むことになります。
こうも複雑になる最大の理由は、フォントを印刷する仕組み(Ghostscript)と画面に表示する仕組みが互いに無関係なことです。言わば Linux の右手と左手はてんでばらばらに動いていることになります。印刷用フォントと表示用フォントが別のマシンに入っている場合もあり、X クライアントの利用するフォントがすべて印刷できるとはかぎらないのですから、ちょっとやそっとのことで一件落着とはいきません。ありがたいことに、大半の WYSIWYG 流アプリケーションにはこの問題をうまく解決する機能が組み込まれています。解決策の内容としては、なんらかのメカニズムを通じて画面表示用のフォントを印刷用フォントに関連づけることが挙げられます(これが主題。ほかに解決すべき問題として、ボールド、イタリック、ローマンといった書体をフォントの「ファミリー」としてまとめる必要もある)。ただし、あいにく標準となるような方法はありません。標準的なフォント管理システムでこの問題に対処できれば、あらゆるアプリケーションが(アプリ固有の設定ではなく)システム全体に共通する設定を利用できるのですから、WYSIWYG 流の組版プログラムにフォントをインストールする手間がぐっと省けるはずなのに……。
楽をするには FontTastic を使うことです。以下の手順に従うだけで、新たにフォントをインストールできます。
"Services" メニューから "Install fonts into -> FontTastic font server" を選択。
カタログリストのうち、foobar のカタログが選択されていることを確認してから、"Select files" ボタンをクリック。
"Services" メニューの "Update" を選択。しつこく表示されるダイアログの "OK" をチェックしてから "Services" メニューを閉じる。さらに Applixware も終了。
こちらのほうが設定は複雑ですが、結果はさらに良好です。本当に重要でひんぱんに使うフォントは、この方法で処理することをお勧めします。手順は数段階に分けられます。
以下は fontmap.dir にフォントを追加する方法です。この例では Baskerville イタリックを追加することにします。
FontRecord = Baskerville-Normal-Italic |
Family = Baskerville |
ボールドやイタリック、ボールドイタリックの場合は、さらに記述を追加します。イタリックなら
Slant = 1 |
Weight = 1 |
ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1" |
xlsfonts | grep -i bask |
PostScriptPrinterName = Baskerville-Normal-Italic |
次いでフォントメトリックファイルとアウトラインファイルの格納されている場所を指定する必要があります。
MetricsFile = /usr/share/fonts/misc/baskvli.afm Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb |
ttf2pt1 -A foo.ttf - > foo.afm |
MetricsFile = /usr/share/fonts/misc/foo.afm |
以上です。同じファミリーに属するフォントをすべて追加すると、ファイルの内容はこんな感じになります。
FontRecord = Baskerville-Normal Family = Baskerville ScreenName = "-paradise-baskerville-medium-r-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Normal MetricsFile = /usr/share/fonts/misc/baskvl.afm Type1FontFileName = /usr/share/fonts/misc/baskvl.pfb FontRecord = Baskerville-Normal-Italic Family = Baskerville Slant = 1 ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Normal-Italic MetricsFile = /usr/share/fonts/misc/baskvli.afm Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb FontRecord = Baskerville-Bold Family = Baskerville Weight = 1 ScreenName = "-paradise-baskerville-bold-r-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Bold MetricsFile = /usr/share/fonts/misc/baskvlb.afm Type1FontFileName = /usr/share/fonts/misc/baskvlb.pfb FontRecord = Baskerville-Bold-Italic Family = Baskerville Weight = 1 Slant = 1 ScreenName = "-paradise-baskerville-bold-i-normal--0-0-0-0-p-0-iso8859-1" PostScriptPrintName = Baskerville-Bold-Italic MetricsFile = /usr/share/fonts/misc/baskvlbi.afm Type1FontFileName = /usr/share/fonts/misc/baskvlbi.pfb |
このファイルではさらに詳細な設定が可能です。設定時のフォーマットは、当のファイルに記載されている「キーワード一覧(glossary)」で説明してあります。
ここでは StarOffice 5.0 を取りあげましょう。StarOffice 5.1 でも手順は似たようなものですが、ユーティリティの名が psetup ではなく spadmin になっています。 まず特筆すべきは John McLaughlin のページです。この問題の情報源として優れていますし、以下に続く説明の大半は同ページにヒントを得て執筆したものです。
筆者が StarOffice 5.0 と 5.1 の両方を使ってみたところ、5.1 では新規フォントの追加に伴う苦労が軽減されているという印象を受けました。TrueType フォントの追加が 5.0 では難航しましたが、5.1 ではいくらか容易になったようです。
tar cvzf xp3.tgz xp3 |
rm -rf xp3 tar xvzf xp3.tgz |
ここでもっとも手軽なのは "Initialize font paths" ボタンをクリックすることです。これにより、X のフォントパスに含まれているフォントがすべてリストボックスに表示されます。
インストールしたいフォント(ボックスに表示されているはず)の格納されているディレクトリを選択してから "OK" をクリック。
StarOffice に TrueType フォントを追加するのは大変ですが、不可能ではありません。長時間にわたって John McLaughlin のページを熟読し、苦心を重ねた結果、とうとう筆者は StarOffice 5.1 で TrueType フォントを使うことに成功しました。5.0 ではうまくいきませんので注意してください。以下の手法は Ghostscript で印刷している方に適しています。
まず X でフォントが使えるようにします。
次いで Ghostscript でフォントが使えるようにします。
追加したいフォントの afm ファイルが必要です。次のコマンドで作成してください。
ttf2pt1 -A foo.ttf - > foo.afm |
そうでなければ、ttfutils パッケージを入手して ttf2afm を使うという手もあります。こちらの利点は複数のフォントを一度に処理できることです。例えばこんな感じ。
ttf2afm *.ttf |
StarOffice では、各 ttf ファイルに対応する pfb ファイルが必要です。これは次のコマンドで作成できます。
touch foo.pfb |
ここまで来れば、spadmin を実行してフォントをインストールできます。
さて、今度はプリンタの設定と対応関係にある PPD ファイルにフォントを追加しましょう。ここで用いるフォント名というのは、StarOffice で使われる名前であって、Ghostscript 向けのフォント名ではありません。例えばフォントのファイルが foobar.ttf で、対応する afm ファイルが foobar.afm なら、PPD ファイルには "foobar" というフォント名を記入します。こんな感じの記述になるはずです。
*Font cloistrk: Standard "(001.002)" Standard ROM |
一方、印刷時に Ghostscript を使用しないケースでは、別の問題に対処する必要が生じます。この場合、StarOffice をだましてプリンタ内にフォントが存在していると思いこませるのはご法度です。プリンタの ROM にはフォントが読みこまれていませんから、gv による PostScript ファイルの表示が美しくても、プリンタで印刷することはできません。PostScript プリンタをお使いなら、主な相違点は以下のとおりです。
PPD ファイルは編集しない。
先ほどは touch foo.pfb というコマンドで空の pfb ファイルを作成しましたが、今度は Type42 PostScript フォントを生成するために pfb ファイルが必要になります。Type42 フォントの実体は「TrueType のプリンタフォント」です。大半のアプリケーションでは人知れず密かに使用されるため、その存在をユーザーが意識することはありません。Type42 フォントのファイルを作成するには ttfps を使います。
ttfps foo.ttf foo.pfb |
難点をいくつか。StarOffice では時として望みのスクリーンフォントを使ってもらえないことがあります。ときどき xp3/psstd.fonts を確認し、意図どおりの表示用フォントが本当に使われるよう、必要に応じて同ファイルを編集するのもよいでしょう。また、StarOffice は設定上の問題を巧みに処理してくれません。設定に不備があれば、付属のワードプロセッサを起動することさえできない場合もあります。だからこそ、xp3 ディレクトリのバックアップが欠かせないのです。