7. WYSIWYG 流の組版とフォント

7.1. 前置きと概要

WYSIWYG 流の組版で使用するフォントを Linux にインストールするのは、かなり複雑な作業です。通常は三つの手順を踏むことになります。

こうも複雑になる最大の理由は、フォントを印刷する仕組み(Ghostscript)と画面に表示する仕組みが互いに無関係なことです。言わば Linux の右手と左手はてんでばらばらに動いていることになります。印刷用フォントと表示用フォントが別のマシンに入っている場合もあり、X クライアントの利用するフォントがすべて印刷できるとはかぎらないのですから、ちょっとやそっとのことで一件落着とはいきません。

ありがたいことに、大半の WYSIWYG 流アプリケーションにはこの問題をうまく解決する機能が組み込まれています。解決策の内容としては、なんらかのメカニズムを通じて画面表示用のフォントを印刷用フォントに関連づけることが挙げられます(これが主題。ほかに解決すべき問題として、ボールド、イタリック、ローマンといった書体をフォントの「ファミリー」としてまとめる必要もある)。ただし、あいにく標準となるような方法はありません。標準的なフォント管理システムでこの問題に対処できれば、あらゆるアプリケーションが(アプリ固有の設定ではなく)システム全体に共通する設定を利用できるのですから、WYSIWYG 流の組版プログラムにフォントをインストールする手間がぐっと省けるはずなのに……。

7.2. Applixware

Applixware にフォントをインストールする方法はふた通りあります。Applixware「専用の」フォントサーバ、FontTastic を利用するやりかたがひとつ。そしてもうひとつは、Applixware のフォントマップを編集し、もともとシステムにインストールされているフォントを使うやりかたです。前者のほうが手軽ですが、このやりかたでインストールされたフォントは 300 dpi で印刷することしかできない場合もあります。

7.2.1. FontTastic

楽をするには FontTastic を使うことです。以下の手順に従うだけで、新たにフォントをインストールできます。

  1. root になって Applixware を起動。

  2. "Tools" メニューをクリック。

  3. "Font Installer" を選択。

  4. ポップアップダイアログの "OK" をチェック。

  5. "Catalogs" メニューをクリックして "Create" を選択。

  6. 「カタログ名」のボックスにフォント名を入力。どんな名前でもかまわない。ここでは仮に "foobar" とする。

  7. カタログ操作リストから foobar のカタログを選択。

  8. "Services" メニューから "Install fonts into -> FontTastic font server" を選択。

  9. カタログリストのうち、foobar のカタログが選択されていることを確認してから、"Select files" ボタンをクリック。

  10. "Select files" のダイアログからインストールしたいフォントを選択。ファイルを選択したら "OK" を押す。例えば /usr/share/fonts/ttfonts/ ディレクトリの arial.ttf を選択したい場合は、"Current Directory" のダイアログに /usr/share/fonts/ttfonts と入力し、ファイルのダイアログボックスで arial.ttf を選択してから "OK" をクリックする。複数のファイルを選択することも可能だが、いずれも同じディレクトリにあるフォントでなければならない。

  11. リストを編集することも可能。その場合は、リストボックスのフォントを確認して、削除ないし改名する。

  12. 準備ができたら "Install fonts" をクリック。さらに "OK" をクリックする。

  13. "Services" メニューの "Update" を選択。しつこく表示されるダイアログの "OK" をチェックしてから "Services" メニューを閉じる。さらに Applixware も終了。

  14. おめでとう、終了です! Applixware を再起動すれば追加したフォントが使えます。

7.2.2. システムのフォントを Applixware で使う

こちらのほうが設定は複雑ですが、結果はさらに良好です。本当に重要でひんぱんに使うフォントは、この方法で処理することをお勧めします。手順は数段階に分けられます。

7.2.2.3. fontmap.dir を編集する

この最終段階をクリアすれば、Applixware でフォントを使えるようになりますが、この作業にはとりわけ時間がかかります。fontmap.dir ファイルは、Applixware をインストールした場所のサブディレクトリ axdata/fontmetrics にあります。この作業の基本的な目的は、スクリーンフォントとアウトラインフォントの対応関係を Applixware に教えてやることです。スクリーンフォントが Applixware と同じマシンにインストールされているとはかぎりませんから、通常はかなり厄介な作業になります。

以下は fontmap.dir にフォントを追加する方法です。この例では Baskerville イタリックを追加することにします。

  1. まず次の一行を追記しましょう。
    	FontRecord = Baskerville-Normal-Italic
    実のところ、FontRecord のエントリにはどんなフォント名を記入してもかまいません。ただし、各エントリとフォントは一対一で対応する必要があります。というわけで、Ghostscript の使用するフォント名がお勧めです。

  2. 続いて記入するのは次の一行です。
    	Family = Baskerville
    フォントファミリーの名前としては、Applixware のフォント選択メニューに表示されるものを入力します。ボールドやイタリック、ローマン、ボールドイタリックといった書体は、通常なら同じファミリーに分類されますから、フォントファミリー名とフォントは一対一の対応にならないのが普通です。

  3. ボールドやイタリック、ボールドイタリックの場合は、さらに記述を追加します。イタリックなら
    	Slant = 1 
    そしてボールドなら
    	Weight = 1 
    という具合です。ボールドイタリックのときは二行とも記入します。この例では Slant = 1 だけでかまいません。

  4. さらに次のような一行を追加します。
    	ScreenName = "-paradise-baskerville-medium-i-normal--0-0-0-0-p-0-iso8859-1"
    「スクリーンネーム」とは、X サーバが使用するフォント名のことです。以下のコマンドを実行すれば、文字列 "bask" を含むフォント名が一気に取得できます。
    	xlsfonts | grep -i bask

  5. 今度はプリンタフォントの名前を記入しましょう。
    	PostScriptPrinterName = Baskerville-Normal-Italic

  6. 次いでフォントメトリックファイルとアウトラインファイルの格納されている場所を指定する必要があります。
    	MetricsFile = /usr/share/fonts/misc/baskvli.afm
    	Type1FontFileName = /usr/share/fonts/misc/baskvli.pfb
    追加するのが TrueType フォントなら、ttf2pt1 で afm ファイルを生成できます(代わりに ttfutils パッケージを入手して ttf2afm を使用してもよい)。
    	ttf2pt1 -A foo.ttf - > foo.afm
    それから以下のように記述してください。
    	MetricsFile = /usr/share/fonts/misc/foo.afm
    Type1FontFileName エントリは指定しないでください。この件は Ghostscript にまかせましょう。

以上です。同じファミリーに属するフォントをすべて追加すると、ファイルの内容はこんな感じになります。
	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)」で説明してあります。

7.3. StarOffice

ここでは StarOffice 5.0 を取りあげましょう。StarOffice 5.1 でも手順は似たようなものですが、ユーティリティの名が psetup ではなく spadmin になっています。 まず特筆すべきは John McLaughlin のページです。この問題の情報源として優れていますし、以下に続く説明の大半は同ページにヒントを得て執筆したものです。

筆者が StarOffice 5.0 と 5.1 の両方を使ってみたところ、5.1 では新規フォントの追加に伴う苦労が軽減されているという印象を受けました。TrueType フォントの追加が 5.0 では難航しましたが、5.1 ではいくらか容易になったようです。

7.3.2. Type1 フォントを StarOffice に追加する

StarOffice に Type1 フォントを追加するのは、割と単純な作業です。お手持ちの TrueType フォントを StarOffice 5.0 で使いたければ、まず Type1 フォントに変換してから、ここで説明する手順に従うのが一番でしょう。StarOffice 5.1 をお使いなら、同じ手順で TrueType フォントをそのままインストールしたいところかもしれませんね(ただし、その場合はやや難易度がアップ)。 まずはお定まりのステップです――X と Ghostscript の両方でフォントが使えるようにしてください。それがすんだら、psetup ツールでフォントを StarOffice にインストールします。手順は以下のとおり。

  1. root になって psetup を実行(StarOffice 5.1 の場合は spadmin を実行)。

  2. "Add fonts" ボタンをクリック。

  3. ここでもっとも手軽なのは "Initialize font paths" ボタンをクリックすることです。これにより、X のフォントパスに含まれているフォントがすべてリストボックスに表示されます。

  4. インストールしたいフォント(ボックスに表示されているはず)の格納されているディレクトリを選択してから "OK" をクリック。

  5. "Convert all font metrics" ボタンをクリック。

以上です。作業は完了しました。StarOffice を終了してかまいません(あるいは終了するまで "OK" をクリックする)。StarOffice を再起動したときには、追加したフォントが使えるようになっています。

7.3.3. TrueType フォントを StarOffice に追加する

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
    実はこのファイル、印刷時に使われるだけです。しかも PPD ファイルにフォントを追記すれば、StarOffice はそのフォントがプリンタ内にあると思いこみますから(実際は Ghostscript の変換システムに取りこまれている)、pfb ファイルを実際に使用する必要はなくなります。とにかく 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 ディレクトリのバックアップが欠かせないのです。

7.4. WordPerfect

今のところ未着手。WordPerfect にフォントをインストールする際の情報源としては、Rod Smith の Web ページが決定版です。