TrueType Fonts in Debian mini-HOWTO Bear Giles, bgiles@coyotesong.com v0.3, 10 January 2000 中野武雄 nakano@apm.seikei.ac.jp v0.3j, February 2000? この文書では、 Debian システムで表示・印刷に TrueType フォントを利用す るための設定について説明します。この文書の最新版は、 から HTML フォー マットで参照できます。【訳者注: この文書は xtt を扱っていませんので、 そのまま使うと日本語が出なくなったりするかもしれません。 at your own risk でご利用ください。】 ______________________________________________________________________ 目次 1. はじめに 1.1 免責 1.2 謝辞 1.3 Additional links 1.4 変更履歴 1.5 フィードバック 1.6 関連プロジェクト 1.7 配布 2. ディスプレイ (誰も言わなかったこと) 2.1 XFree86 4.0 の先取り情報 2.2 注意: X 設定ファイルを変更する前にやっておくべきこと 3. ディスプレイ (X とフォントサーバー) 3.1 xfs フォントサーバーをセットアップする 3.2 xfstt フォントサーバーをセットアップし、 TrueType フォントをインストールする 3.3 TrueType フォントを使う 3.4 TrueType フォントを追加インストールする 3.5 国際化 (Internationalization) 3.6 セキュリティの問題 4. 印刷 (ghostscript) 4.1 TrueType フォントを使うように Ghostscript を設定する 4.2 TrueType フォントの見本を印刷する 5. アプリケーション用の設定 5.1 AFM フォントメトリックの生成 5.2 font.map ファイルを生成する 5.3 画像の操作: GIMP 5.4 ASCII → PostScript 変換: enscript 5.5 テキストの整形と組版: groff 5.6 テキストの整形と組版: TeX 6. 未解決の問題 7. TrueType フォントの取得 7.1 Microsoft のフリーな TrueType フォントの利用に関するコメント 8. 法的条項 ______________________________________________________________________ 1. はじめに Linux をインストールすると、フォント・フォントメトリックのセットがそれ ぞれ別個にいくつかインストールされてしまうことが良くあります。例えば私 のシステムをざっと見てみると、フォントやフォントメトリックは以下のよう なディレクトリに分散しています。 o XFree86 のフォントは /usr/X11R6/lib/X11/fonts/ にあります o Ghostscript のフォントは /usr/lib/ghostscript/fonts/ にあります o TeX のフォントは /usr/lib/texmf/fonts/ にあります o Debian の kbd パッケージが使うフォントは /usr/share/consolefonts/ にあります o groff のフォントメトリックは /usr/share/font/devps/ にあります o Enscript (ASCII → PostScript コンバータ) のフォントメトリックは /usr/share/enscript/*.afm にあります いうまでもないですが、これらのフォントは統合されていません。 TrueType フォントは、同じフォントファイルで表示も印刷も行えるようにし て、この問題を解決するためにデザインされました。この HOWTO では、 Debian GNU/Linux システムで TrueType フォントをディスプレイ・印刷・文 書作成に利用する方法について説明するつもりです。 1.1. 免責 この文書の情報は、私の知るかぎりでは正しいものです。しかしこの文書はま だ若い版ですし、私の環境で動作するものがあなたのところでもそうであると は限りません。この文書が役に立たなくても許してください。私はプロのテク ニカルライターじゃないですし、大事な問題の上辺だけを取り繕っていたこと もあるんです。 ですから、試すときには気をつけてください。バックアップも忘れずに。 1.2. 謝辞 Created by Bear Giles, Thanks go to: o Brion Vibber, , who wrote the (preliminary) TrueType HOW-TO (http://pobox.com/~brion/linux/TrueType-HOWTO.html) o Doug Holland, , who wrote the XFree86 Font Deuglification HOW-TO (http://www.frii.com/~meldroc/Font-Deuglification.html) 1.3. Additional links These links don't directly discuss Debian systems or packages, but they may still be interesting to readers of this mini-HOWTO. o Using TrueType Fonts with RedHat Linux (http://www.kegel.com/linux/tt.html) o X Font Tools (http://www.hex.net/~cbbrowne/xfonts.html) o Getting fonts to look pretty under GNU/Linux for applications like StarOffice (http://king.ccrc.wustl.edu/~zubin/fonts.html) o How to use True Type (C) fonts for StarOffice Under Linux (http://www.mindspring.net/~john_mcl/adding_fonts.html) 1.4. 変更履歴 o 0.1. Sept. 16, 1999: First release. o 0.2. Sept. 16, 1999: added "additional links" section. o 0.3. Jan. 10, 2000: reader feedback! Added clarification of several details. 1.5. フィードバック コメント・修正・追加・批判などは常に歓迎します。私に連絡するには bgiles@coyotesong.com を使ってください。 1.6. 関連プロジェクト FreeType FreeType エンジンはフリーで可搬性のある TrueType フォントのレン ダリングエンジンです。コードは「クリーンルーム」で実装されてお り、 Apple や Microsoft の実装とは完全に独立しています (しかし最 近 Apple の特許に関連した問題が浮上しています)。 FreeType はライ ブラリで、フォントサーバや完全なテキストレンダリングライブラリで はありません。 1.7. 配布 これは最初のドラフトで、公開後には多くの重要な変更がなされることと思い ます。できれば にある最新のバー ジョンを参照してください。この文書の落ち着き先として、 も予定しています。 2. ディスプレイ (誰も言わなかったこと) X での TrueType フォントの設定に乗り込む前に、まずポイント (point) と ピクセル (pixel) の違いについて、そしてその違いがなぜ問題になるかにつ いて、振り返ってみることにしましょう。 表示されたフォントは ポイント 単位で測長されます。 1 インチは正確に 72 ポイントになります。なぜ 72 かって?おそらく理由の一つはメカニカルな植 字機械の寸法の限界であり、また他の理由としては、 72 が 2, 3, 4, 6, 8, 9, 12, 18, 24 のいずれによっても割ることができるから、ということもある のでしょう。ここで PostScript のデフォルトの単位が 1 ポイントであるこ とも知っておいて損はないでしょう。 (歴史的なメモ: いま私は嘘をつきました。 PostScript が導入されるまで は、 1 インチは正確には 72.27 ポイントでした。しかしこのポイントサイズ が決められたのは、金属の活字で印字するメカニカルなプリンタの時代で、標 準サイズの種類があまり必要とされなかったからでした。コンピュータディス プレイとレーザープリンターでは、あらゆるサイズのフォントが簡単に使えま すから、 72 が上記の理由に照らしてずっと重要になったのです。) 一般的なルールとしては、テキストのほとんどは 7 から 12 ポイントの間で 表示すべきです。 6 ポイント以下のものは、「細字」としての扱いになりま す。ラインプリンターは 9 または 12 ポイントの活字 (それぞれ 8 行/イン チ、 6 行/インチ) を使います。 一方これとは対称的に、ビデオドライバはフォントを必ずピクセル単位で測り ます。ビデオドライバにとっては、スクリーンは 1024x800 ピクセルなもので あり、 10x8 インチや 720x576 ポイントといったものではないのです。 ポイント (フォントサイズの指定に用いる) をピクセル (ビデオメモリの範囲 指定に用いる) に変換するには、スクリーンの解像度を知らなければなりませ ん。この値は通常 "dot per inch (dpi)" 単位で測定されます。実際には pixcel per inch なんですけど。これらは XFree86 に含まれている二種類の ビットマップフォントの単位に用いられています。 fonts-75 はローエンドの ディスプレイ (だいたい 75dpi) で用いるためのもので、 fonts-100 は中ク ラスの 100dpi 程度のディスプレイで用いるものです。 120dpi 以上の解像度 を持つ、ハイエンドディスプレイ用のビットマップフォントは、存在しませ ん。 具体的な例を挙げましょう。対角 13" のスクリーン (11.1" が利用可) が 640x480 ピクセルの画像を表示すると、解像度は 72.0 dpi になります。これ は偶然の一致ではありません。実は、ほとんどの web ページ (と Microsoft のアプリケーション) は、解像度がちょうど 72 dpi のディスプレイを標準と してデザインされているのです。 XFree86 のデフォルト設定は、ディスプレ イの解像度を 75dpi と仮定しています。 現実の世界に戻ると、もはや 640x480 のビデオを使っている人はいません。 対角 13" のスクリーンもありません。ビデオカードのほうがビデオモニタよ りも速く進歩したので、以下の私のような設定もあまり珍しくなくなりまし た: 19" 対角のスクリーン (17+" 利用可)、 1600x1200 ピクセル、分解能 117 dpi。 もし私が X をデフォルトの設定で動かすと、全てのフォントは意図していた もののおよそ 2/3 のサイズになります。全てのフォントがひとサイズ切り下 げられた状態、といっても過言でない状況です。 large フォント (12ポ) は medium (9ポ) に見えますし、 medium フォント (9ポ) は small (6ポ) に見 えるわけです。 この状態をなおす方法は三つあります。一つめは、 X サーバーに実際のスク リーン解像度を知らせる方法です。 /etc/X11/xdm/Xservers ______________________________________________________________________ #:0 local /usr/X11R6/bin/X -bpp 16 :0 local /usr/X11R6/bin/X -bpp 16 -dpi 120 ______________________________________________________________________ 二つめは、 100 dpi のビットマップフォントを 75 dpi のフォントよりも優 先して使うようにする方法です。 /etc/X11/XF86Config ______________________________________________________________________ Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" EndSection ______________________________________________________________________ 最後の方法として、ビットマップフォントにサイズが合わないものがある場 合、 X サーバは似たフォントをピクセル置き換えによって「スケール (拡 大・縮小)」しようとします。結果は決して快適に利用できるものではありま せん。もし十分高速なシステムを使っているなら、スケーラブルなフォントを デフォルトで使い、次に正確にサイズの合ったビットマップを使い、それでも ダメならスケールしたビットマップフォントを使うようにさせるといいでしょ う。 /etc/X11/XF86Config ______________________________________________________________________ Section "Files" RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/Type1/" FontPath "/usr/X11R6/lib/X11/fonts/Speedo/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled" FontPath "/usr/X11R6/lib/X11/fonts/misc/" FontPath "/usr/X11R6/lib/X11/fonts/100dpi/" FontPath "/usr/X11R6/lib/X11/fonts/75dpi/" EndSection ______________________________________________________________________ 2.1. XFree86 4.0 の先取り情報 たった今知らされたところによると、ビデオとモニターが DDC 通信をサポー トしていれば、 XFree86 でも DCC 通信を使えるようになるようです。 DDC 通信を使うと、 X サーバーはモニターに物理的な寸法を問い合わせ、自動的 に DPI 設定を計算することができるようになります。 ただし、 font path への適切な変更は依然必要となるでしょう。あなたが明 示的に設定したものを、サーバが適当に代えてくれるなんてことはありえませ んから。 2.2. 注意: X 設定ファイルを変更する前にやっておくべきこと X11 の設定ファイルに変更を施す前には、ファイルの先頭付近に exit 0 を入 れて、 XDM を無効にしておくと良いでしょう (というかそうしましょう)。こ れを行わないと、何らかの理由で X が起動できなくなった場合、 XDM はシス テムをクソったれな busy ループに陥れてしまいます。これを修正するのはも う口にできないほど大変です。いいですか、警告しましたからね。後で泣き言 を言わないように。 3. ディスプレイ ( X とフォントサーバー) 厳密にいうと、 X サーバーで TrueType フォントを使うにはフォントサーバ ーの設定が絶対に必要、というわけではありません。お望みならフォントサー バーの代わりにスタティックなファイルを使うこともできるのです。 ghostscript で TrueType を利用するための設定を説明している部分をみてく ださい。 3.1. xfs フォントサーバーをセットアップする 話をはじめる前提として、動作する /etc/X11/XF86Config ファイルが手元に あり、そこでは FontPath でフォントをロードするそれぞれのディレクトリを 明示的に指定しているものとします。我々はこの部分を xfs フォントサーバ ーを利用するように書き換えることになります。 XFS をインストールする まだしていなければ、main/binary-*/x11/xfs_*.deb をインストールし てください。 XFS を設定する /etc/X11/xfs/config を編集し、 catalogue にあなたの FontList が 含まれるように変更してください。 default-resolutions の値も変更 するといいかもしれません。 /etc/X11/xfs/config ___________________________________________________________________ # paths to search for fonts catalogue = /usr/X11R6/lib/X11/fonts/100dpi/:unscaled, /usr/X11R6/lib/X11/fonts/75dpi/:unscaled, /usr/X11R6/lib/X11/fonts/misc/, /usr/X11R6/lib/X11/fonts/Speedo/, /usr/X11R6/lib/X11/fonts/Type1/, /usr/X11R6/lib/X11/fonts/100dpi/, /usr/X11R6/lib/X11/fonts/75dpi/ # x1,y1,x2,y2,... default-resolutions = 100,100,75,75 ___________________________________________________________________ XFS を再起動する XFS を通常の Debian の作法に従って再起動します。 root shell ___________________________________________________________________ # /etc/init.d/xfs restart ___________________________________________________________________ XFS の動作を確認する XF86Config を変更する前に、 xfs サーバーが動作しているかどうか を、フォントサーバーからのリストを取って確認してみましょう。 user shell ___________________________________________________________________ $ fslsfonts -server unix/:7100 -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .... ___________________________________________________________________ xfs を使うように /etc/X11/XF86Config を変更する さて、 X サーバーに xfs フォントサーバーを使うようにさせる準備が できました。 xfs に問題があったときのための備えとして、スタ ティックなフォントパスも残しておくことにしましょう ("misc" を残 します。ここにはデフォルトのフォントである fixed が入っているか らです。) /etc/X11/XF86Config ___________________________________________________________________ Section "Files" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection ___________________________________________________________________ X を再起動する デンジャラスな人生がお好みでなければ、 X を startx によって再起 動します。もし危険がお好きな方は、あなたの巨額な生命保険の証書の 受取人に私の名前を書いて、 xdm を再起動してください。 XFS フォントが見えるか確認する X セッションが確立されたら、サーバーが xfs のフォントすべてを見 ることができているか確認しましょう。 X サーバーを通してフォント をリストします。 user shell ___________________________________________________________________ $ xlsfonts -adobe-courier-bold-i-normal--0-0-0-0-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-100-100-m-0-iso8859-1 -adobe-courier-bold-o-normal--0-0-75-75-m-0-iso8859-1 .... ___________________________________________________________________ 3.2. xfstt フォントサーバーをセットアップし、 TrueType フォントをイ ンストールする ここまでで、 xfs フォントサーバーは動作したものとします。では xfstt に よって TrueType のサポートを追加しましょう。 XFSTT をインストールする まだしていなければ、main/binary-*/x11/xfstt_*.deb をインストール してください。 TrueType フォントをインストールする お手元の TrueType フォントを /usr/share/fonts/truetype ディレク トリにコピーします。これらのファイルは通常 .ttf という拡張子に なっています。パーミッションは 0444 にしましょう。 XFSTT フォントサーバーを再起動する force-reload フラグを付けて xfstt サーバーを再起動します。 root shell ___________________________________________________________________ # /etc/init.d/xfstt force-reload ___________________________________________________________________ XFSTT の動作を確認する XF86Config を変更する前に、 xfstt サーバーが動作しているかどうか を確認しましょう。 重要: Debian の xfstt サーバーはポート 7100 ではなく 7101 を使い ます。またデフォルトでは、この問い合わせには root 権限が必要に なっています user and root shells ___________________________________________________________________ $ fslsfonts -server unix/:7101 _FSTransSocketUNIXConnect: Can't connect: errno = 111 fslsfonts: unable to open server "unix/:7101" # fslsfonts -server unix/:7101 -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1 ___________________________________________________________________ xfstt を使うように /etc/X11/XF86Config を変更する さて、 X サーバーに xfs フォントサーバーを使うようにさせる準備が できました。 TrueType フォントを他のすべてに優先して使うようにし ます。 /etc/X11/XF86Config ___________________________________________________________________ Section "Files" FontPath "unix/:7101" FontPath "unix/:7100" FontPath "/usr/X11R6/lib/X11/fonts/misc/" EndSection ___________________________________________________________________ XFSTT フォントが見えるか確認する X セッションが確立されたら、サーバーがすべての TrueType フォント を見ることができているか、リストを取って確認しましょう。 ___________________________________________________________________ $ xlsfonts | grep ttf -ttf-arial black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial mt black-medium-r-normal-regular-0-0-0-0-p-0-iso8859-1 -ttf-arial narrow-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-1 .... ___________________________________________________________________ 3.3. TrueType フォントを使う ここまでで、 TrueType フォントを GIMP, Netscape, StarOffice などのアプ リケーションで利用できるようになったはずです。ほとんどの TrueType フォ ントは等幅フォントではありませんので、 xterm では使わないほうがいいで しょう。この手のプログラムでは文字セルの最大サイズに合わせて等幅に文字 を表示します。 3.4. TrueType フォントを追加インストールする xfstt フォントサーバーを使っている場合は、 TrueType フォントの追加は簡 単です。 o 新しいフォントを /usr/share/fonts/truetype/ にコピーする o /etc/init.d/xfs restart によって xfs を再起動する 3.5. 国際化 (Internationalization) xfstt には複数のフォントエンコーディングを生成する機能があります。ただ しその TrueType フォントに必要なグリフが含まれている必要があります。 iso8859-1/unicode-1 以外のフォントを利用するには、 /etc/init.d/xfstt スクリプトを手で編集する必要があります。 /etc/init.d/xfstt ______________________________________________________________________ - start-stop-daemon --start --quiet --exec $XFSTT -- \ --port $portno --daemon + start-stop-daemon --start --quiet --exec $XFSTT -- \ --port $portno --encoding iso8859-1,koi8-r,windows-1252,symbol-0 \ --daemon ______________________________________________________________________ Debian 2.1 で認識されているエンコーディングは以下の通りです: o iso8859-1 (Latin 1 - Western Europe) o iso8859-2 (Latin 2 - Central and Eastern Europe) o iso8859-3 (Latin 3 - Esperanto and Maltese) o iso8859-4 (Latin 4 - superceded by Latin 6) o iso8859-5 (Cyrillic) o iso8859-6 (Arabic) o iso8859-7 (Greek) o iso8859-8 (Hebrew) o iso8859-9 (Latin 5 - Latin 1 with Turkish, not Icelandic) o iso8859-10 (Latin 6 - Nordic languages, replaces Latin 4) o koi8-r (Cyrillic) o windows-1250 (Central Europe) o windows-1251 (Cyrillic) o windows-1252 o windows-1253 (Greek) o windows-1254 o windows-1255 o windows-1256 o windows-1257 o symbol-0 o wingding-0 o wingreek-0 o cp-437 (various IBM code pages) o cp-737 o cp-850 o cp-851 o cp-852 o cp-853 o cp-855 o cp-857 o cp-860 o cp-861 o cp-862 o cp-863 o cp-864 o cp-865 o cp-866 o cp-869 o cp-895 o atari-st o unicode-2 iso8859-x エンコーディングの最初の 128 文字は常に ASCII です。 windows- には "smart quotes" のような追加文字が含まれており、 iso8859-1 を拡張しています。 (これら "smart quotes" のような拡張は iso8859-1 には含まれていないため、これらの文字はクエスチョンマークにレ ンダリングされます。) 文字セットのエンコーディングに関するより詳しい情報を得るには、以下のす ばらしいサイトを訪ねてください。 o o o 3.6. セキュリティの問題 上記では Unix ソケットを用いましたが、標準的な Debian パッケージでは、 xfs と xfstt とに、それぞれ TCP/IP ポート 7100 と 7101 を使わせるよう にすることもできます。これらのポートへのアクセスは /etc/X11/xfs/config の trusted-clients フィールドによってコントロールしておくべきですが、 このオプションは XFree86 3.3.2.3a では実装されていません。 これはすなわち、誰でも、どこからでも、あなたのフォントサーバーにアクセ スできてしまうことを意味します。 xfs (おそらく xfstt も) は多くのユー ザーを処理するために "clone" しますので、これらのシステムには明らかに 利用不能攻撃 (DoS attack) の危険性が存在します。フォントサーバーをダイ ヤルアップ回線で使っている場合には (あなたはその場にいるでしょうから) おそらく安全でしょうが、 DSL やケーブルモデムの利用者はファイアウォー ルを使うべきでしょう。 4. 印刷 ( ghostscript ) バージョン 4 から、 ghostscript は TrueType フォントのサポートをコンパ イル時のオプションに指定できるようになりました。 Debian には ghostscript のパッケージが二つあります。 o main/binary-*/text/gs_*.deb DFSG 準拠のバージョン 5.10 です。 o non-free/binary-*/gs-aladdin_*.deb DFSG に準拠していないバージョン 5.50 です。 どちらのバージョンでも TrueType フォントは使えます。 4.1. TrueType フォントを使うように Ghostscript を設定する すでに動作している xfstt サーバーがあれば、 ghostscript に TrueType フォントを使わせるようにする設定は簡単です。次のコマンドを実行するだけ です: ______________________________________________________________________ # xfstt --gslist --sync >> /etc/gs.Fontmap ______________________________________________________________________ 実際には、 xfstt が生成したフォント定義にいくつか小さな変更をすると良 いことがわかりました。まず、フォントの名前にスペースが入っていない場合 には、その名前を通常の記法に変更しました。フォントにスペースが入ってい る場合には、すべてのスペースをダッシュに置き換え、元の (スペースを含ん だ) 名前は新しい名前のエイリアスとして追加しました。 そして、すべてのフォントの名前に TTF- (あるいは MS-) を前置しました。 すでに存在しているフォントと TrueType フォントの名前が同一だった場合に 生じる問題を避けるためです。 したがって、 ______________________________________________________________________ (Arial) (/usr/share/fonts/truetype/arial.ttf) ; (Arial Bold Italic) (/usr/share/fonts/truetype/arialbi.ttf) ; ______________________________________________________________________ が、以下のようになります。 ______________________________________________________________________ /MS-Arial (/usr/share/fonts/truetype/arial.ttf) ; /MS-Arial-Bold-Italic (/usr/share/fonts/truetype/arialbi.ttf) ; (Arial Bold Italic) /MS-Arial-Bold-Italic ; /Arial /MS-Arial ; ______________________________________________________________________ エイリアスによって、 ghostscript と xfstt は共通の名前で同じフォントを 使うことが依然可能になっています。 さらに重要なことですが、このフォント名の変更によって、 shostscript に TrueType フォントを標準フォントの代わりに使用させる事ができるのです。 ドキュメントには括弧を使った記法によってもこれが可能だと書いてあります が、私の場合はうまくいきませんでした。 例えば、以下のような内容を /etc/gs.Fontmap ファイルに追加すれば、 Helvetica フォントの代わりに Microsoft のフリーな Arial フォントを ghostscript に使わせることができます。 ______________________________________________________________________ /Helvetica /MS-Arial ; /Helvetica-Oblique /MS-Arial-Italic ; /Helvetica-Bold /MS-Arial-Bold ; /Helvetica-BoldOblique /MS-Arial-Bold-Italic ; ______________________________________________________________________ 同様のエイリアスは他の標準フォントに対しても定義できます。これらのエイ リアスは Windows クライアントにサービスを提供している samba プリンタで 用いると非常に便利でしょう。 4.2. TrueType フォントの見本を印刷する ghostscript が正しく TrueType フォントを利用するように設定されたかを調 べるには、フォントの見本ページを印刷するのが最も良いでしょう。 ghostscript 5.50 を動かしていて、これがデフォルトのプリントキューなら ば、すべての TrueType フォントを以下のコマンドで印字できます。 ______________________________________________________________________ # xfstt --gslist --sync | printfont ______________________________________________________________________ ここで printfont は以下のシェルスクリプトです。 ______________________________________________________________________ #!/bin/sh set -e IFS= ')' while read fontname rest do cat << EOM | lpr %!PS (/usr/lib/ghostscript/5.50/prfont.ps) run $fontname) DoFont EOM done ______________________________________________________________________ 2, 3 のフォントだけを印刷したい場合は、以下のスクリプトのほうが簡単で しょう。 ______________________________________________________________________ #!/bin/sh set -e while read -p "Font name, or ^D to exit: " fontname do cat << EOM | lpr %!PS (/usr/lib/ghostscript/5.50/prfont.ps) run $fontname DoFont EOM done ______________________________________________________________________ 5. アプリケーション用の設定 5.1. AFM フォントメトリックの生成 AFM フォントメトリックファイルは、すでに存在しているファイルを TrueType フォントで表示する際には必要ありませんが、新しくファイルをつ くるときに必要です。 ghostscript のプログラム /usr/lib/ghostscript/5.50/printafm.ps によって、これらのメトリックファ イルを生成することができます。しかし tetex-bin パッケージにある ttf2afm プログラムの方が、より使い方が簡単でしょう。 以下のスクリプトは、ディレクトリにある全ての TrueType フォントに対し て、対応する afm ファイルを生成します。 ______________________________________________________________________ #!/bin/sh set -e for i in *.TTF do /usr/bin/ttf2afm $i > ${i%TTF}afm done for i in *.ttf do /usr/bin/ttf2afm $i > ${i%ttf}afm done ______________________________________________________________________ ttf2afm には一つ些細な問題があります。アプリケーションのなかには、 afm ファイルの先頭に StartFontMetrics タグがあると想定しているものがあるの ですが、 ttf2afm の作るファイルはコメントで始まるのです。この「問題」 は、それぞれのファイルをテキストエディタで修正してやれば簡単に回避でき ます。 5.2. font.map ファイルを生成する afm ファイルができたら、システムにその場所を教えてやる必要があります。 これには通常 font.map ファイルが用いられます。 このファイルのフォーマットに関するドキュメントを、私は見つけることがで きていません。 mkfontdir プログラムが生成する fonts.dir, fonts.scale, fonts.alias などのドキュメントはあるんですけど。しかしもっとも簡単な フォーマットは極めて単純です。 o フォント名。ホワイトスペースは入っていてはいけない。 o AFM ファイルのファイル名。拡張子は除く。 複数のエントリを書くことによってエイリアスも使えるようです。ファイル名 の拡張子は小文字で書く必要があります。 5.3. 画像の操作: GIMP GIMP は Gnu Image Manipulation and Paint プログラムです。 gimp には特 に TrueType に関して変更を行う必要はありませんでした。 5.4. ASCII → PostScript 変換: enscript enscript は ASCII を PostScript に変換するプログラムです。同様の目的に 使える他のプログラムには、 a2ps と mpage があります [訳注: a2ps には日 本語化された a2ps-ja があります]。 enscript には、ページを 90 度回転さ せて 2 ページを 1 枚に収めたり、透かし、ヘッダ、キーワードベースのシン タックスを用いた色づけなどの機能があります。テキストの再フォーマットは しません。もっぱらソースコートの印刷に用いられています。 enscript で TrueType フォントを使うには、二つの作業が必要になります。 o AFMPath に /usr/share/fonts/truetype を追加する。 o TrueType フォントを、直接あるいはデフォルトフォントのエイリアスとし て指定する。 詳細は enscript のドキュメントを読んでください。 私の場合は、これらの変更によって問題なく TrueType フォントが使えるよう になりました。 5.5. テキストの整形と組版: groff groff は GNU 版の nroff/troff 文書整形システムに対するフロントエンドプ ログラムです。 groff の威力は、 man ページで最も良くわかるでしょう。 user shell ______________________________________________________________________ $ zcat /usr/man/man1/groff.1.gz | groff -man | lpr ______________________________________________________________________ man ページ以外にも、ちょっと想像もできないような量の Unix 文書が troff の ms マクロ (一部は me マクロ) を使っています。例えば Debian の xbooks パッケージには、 troff と ms マクロを使っているファイルが 43 も あります。 groff を使うと、非常に見栄えの良い印刷出力が得られます。 groff は非常にパワフルなシステムですが、これは 1960 年代に印刷物を組版 していたプログラムの孫 (あるいは曽孫) なので、 groff のフォント対応は それらを受け継いでいます。それまでの roff システムとは異なり、 groff はデフォルトの出力フォーマットに PostScript を用いるので、先程行った ghostscript の作業で問題の半ばは解決しています -- groff は TrueType フォントファイルを読む必要はないのです。必要なのは、正確なフォントメト リックです。ですのでこの節では groff に必要な以下のファイルを生成する 方法について説明します。 groff の Postscript 記述ファイル /usr/share/groff/font/devps/DESC デバイス記述ファイル /usr/share/groff/font/devps/text.enc テキストフォントに用いられるエンコーディング /usr/share/groff/font/devps/generate/textmap 標準のマッピング /usr/share/groff/font/devps/generate/Makefile 標準の Makefile Makefile を編集します。 /usr/share/groff/font/devps/generate/Makefile ______________________________________________________________________ - afmdir=/usr/local/afm + afmdir=/usr/share/fonts/truetype ______________________________________________________________________ フォントの名前を TrueType の代替品に変更します (例えば Microsoft のフ リーな TrueType フォントを使うなら、 Helvetica を Arial にします)。そ して TEXTFONTS などを変更し、レンダリングするフォントだけが含まれるよ うにします。 /usr/share/groff/font/devps/generate/afmname も編集し、 TrueType フォ ント名や afm ファイルをつかわせるようにします。そして awk の "-e" フラ グを削除します。 これらがすべて終わったら、以下のコマンドによって groff のテーブルを再 ビルドします。 user shell ______________________________________________________________________ $ cd /usr/share/groff/font/devps $ make -f generate/Makefile ______________________________________________________________________ いつものように、変更を確認する良い方法は、見た目で違いのわかるフォント を使うことです。例えば Microsoft のフリーな TrueType フォントを使うな ら、 TR に Mistral を使ってみるといいでしょう。 (次のエイプリル・フールには、旧字フォントでマニュアルページを印刷する ようにシステムを変更したひとからロイヤリティがとれるな!) 5.6. テキストの整形と組版: TeX TeX は GNU/Linux システムのほとんどで良く用いられている、もう一つのテ キスト整形・組版プログラムです。 TeX のフォントは mktexmf によって生成できます。しかし実際の手順につい ては、現在は私はあまり知りません。より詳しい情報は近いうちに掲載したい と思います。 6. 未解決の問題 アプリケーション 未解決の問題のうち最大のものは、netscape communicator でも ghostscript でも TrueType フォントを使えるのに、なぜ netscape で 印刷したページは画面表示と全然違ってしまうのか、ということでしょ う。 短く答えると、 netscape が生成する PostScript 出力では、標準の フォント (Helvetica と Times-Roman) が使われ、ユーザーまたは HTML で指定されているフォントは使われないからなのです。長く答え ると、私は netscape がなぜこのような動作を強いているのか、あるい はそうさせないようにする方法があるのか、全然、まったくわかりませ ん。 7. TrueType フォントの取得 TrueType フォントを探しているひとに、探すと良さそうなところをいくつか 紹介します: o 隅に転がってる役たたずの c:\windows\fonts o Microsoft の Free TrueType フォント o Acid フォント o The Font Ring 7.1. Microsoft のフリーな TrueType フォントの利用に関するコメント Microsoft のフリーな TrueType フォントに対するコメントを抜きにしては、 Linux における TrueType サポートに関する文書は完全なものとはいえませ ん。まず Microsoft のフリーな core フォントを用いることに関する法的な 義務に関してです: ____________________________________________________________ Q. What can I do with these fonts? . Anyone can download and install these fonts for their own use. . [Web page] designers can specify the fonts within their own Web pages. ... Q. これらのフォントはどのように利用して良いですか? . 個人の利用なら、誰でもこれらのフォントをダウンロード・ インストールできます。 . [Web ページ] デザイナーは、これらのフォントを自分の Web ページに指定できます。 ... ____________________________________________________________ 明らかに Linux ユーザーがこれらのフォントをダウンロード・インストール することは合法かつ妥当です。私はこれを許可してくれた Microsoft に感謝 したいと思います。 他の条項で、「商用製品に付加価値を与えるかたちでの (in any form taht adds value to commercial products)」再配布は禁止されているので、これら のフォントが近いうちに main にパッケージングされることは期待できませ ん。 (インストーラーパッケージのかたちで non-free に入れることは可能か も...?) 二つめの宣言はちょっとわかりにくいので、ちょっと注意してください。 Microsoft は、 web ページの作成者には Microsoft フォントをページに指定 するよう、また HTML エディターには明示的にフォント名を指定するよう、積 極的に勧めています。 標準の Netscape/Linux でみると、結果が、良く言っても... なんとか読め る、程度のサイトがたくさんあります。まったく読めないものすらあります。 偶然の一致ではなく、その、「なんとか読める」サイトは、 web ページで フォント情報を明示的に宣言しているサイトなのです。 これらのフォントをインストールすると、これらの問題のあったサイトがずっ と魅力的になることに私は気付きました。大方のサイトは依然としてだいぶ Windows びいきではありますが、少なくともこれらのページをロードするたび にぎょっとするようなことはなくなりました。 私のお薦めは、Microsoft のフリーな TrueType フォントをブラウザにインス トールする、です。これらのフォントを指定した web ページを作ったり、 ghostscript を設定してこれらを利用させるようにする必要はないでしょう。 8. 法的条項 [訳注: 先に原文を示します.] Copyright (C) 1999 by Bear Giles. Unless otherwise stated, Linux HOWTO documents are copyrighted by their respective authors. Linux HOWTO documents may be reproduced and distributed whole or in part, in any medium physical or electronic, as long as this copyright notice is retained in all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions. All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may produce a derivative work from a HOWTO and impose additional restrictions on distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO cordinator for more information. In short, we wish to promote dissemination of this information through as many channels as possible. However, we do wish to retain copyright on the HOWTO documents, and would very much like to be notified of any plans to redistribute the HOWTOs, this one in particular! Web page authors are free to link to this HOWTO without restriction, though the author would appreciate an email informing him of this, just so he can boost his ego by knowing who else reads and links to this document. Many of the terms mentioned in this document are trade names. Unless otherwise stated, all trademarks are property of their respectve owners. (日本語訳) Copyright (C) 1999 by Bear Giles. 特に断りがない限り、 Linux HOWTO 文書の著作権はそれぞれの著者が保有し ています。 Linux HOWTO 文書の全体あるいは一部は、物理的電子的を問わ ず、あらゆるメディアで自由に複写・配布することができます。ただしその際 にはこの著作宣言を全てのコピーに付加する必要があります。商業的な配布も 許可し、また奨励します。しかしその際には著者にお知らせくだされば幸いで す。 Linux HOWTO の文書を含んだ翻訳、修正および編集作業の成果は、全てこの著 作権条項に従う必要があります。すなわちこの HOWTO を修正した後に、配布 条件に追加条項を加えることはできません。但し適当と認められた場合は例外 とすることもできます。詳細は Linux HOWTO の管理者に連絡してください。 要するに我々は、これらの情報を可能な限りの方法で広めたいと思っているの です。しかし我々は HOWTO 文書に関する著作権は保持し続けたいと望んでい ます。また HOWTO を再配布する計画については知らせてほしいと思っていま す (特にこちら!)。 Web ページの作成者は、この HOWTO へのリンクを何ら制 限なく自由に張ることができます。しかしそのことを電子メールで筆者に知ら せていただければ嬉しく思います。誰がこの文書を読み、誰がリンクしている かを知れば、自分のエゴを満足させることができますから。 この文書で挙げた多くの用語は商標です。特に断りがない限り、それぞれの商 標は各々の保有者に所属します。