X-TT project または フォント貧乏からの脱却
まずスクリーンショットを見てね
最終更新時刻:
このページの内容はかなり古くなっています。参考になりません。 最近のディストリビューションには 標準でX-TT入ってるし。昔の苦労を偲びたい人だけ見てください。
最近の情報については、 After X-TT Projectを みて下さい。
従来PC-UNIXで日本語を表示する場合は、k14等の固定サイズのフォントを使うか、 汚い上に遅いのを承知でbitmapフォントを拡大/縮小するしかありませんでした。 アプリケーションでは、k14やjis16、jis24などのフォントを使い分けて表示するか VFlibライブラリを利用して得たglyphをイメージとして扱うしかなく、不自由な思いを していたものです。
1997年の秋ごろ、高木淳司さんが日本語フォントを扱うライブラリであるVFlibを 組み込んだX server (X-V)を開発され、状況が一変しました。VFlibでは TrueTypeフォントを利用することができ、MS-Windows用に発売されている多くの フォントをXからダイレクトに利用できるようになりました。 X-Vの詳細についてはX-Vプロジェクトのページ(arhive.orgにある最新)を参照してください。でもリンク切れてます。移転先どこだろう...
X-Vから派生していろいろな試みが行われました。また、当時、 The FreeTye Projectで、TrueTypeフォントを綺麗に扱えるソフトウェアが 開発されつつあり、X-VにVFlib経由でFreeTypeを組み込むという試みもなされました。 これらの試みについてはX-Vプロジェクトのページが参考になります。
XでTrueTypeが使えるのなら、xfs(X font server)でもTrueTypeが使えるはずで 塩崎拓也さんが、xfs-VFlib … 「VFlib 対応のフォントサーバを作る試み」関連を開発しました。(リンクありません) 当初はxfsを利用すると速度が激しく低下するという現象がありましたが、 これはX serverとxfsの設定の変更を行うことで解決されました。
Xで多彩な日本語フォントが使えるようになったのですが、いろいろと気になる ところが出てきました。
一番気になったのは『VFlib経由でフォントをアクセスしているために VFlibとX側の両方でフォントの設定をしなければならず面倒臭い』ということです。 日本語を扱う場合、表示だけではなく印刷やアプリケーションごとに設定が 必要です。WindowsではWindowsのフォント名だけを意識していればいいのですが、 PC-UNIXの場合、フォントのファイル名、アプリケーションから見えるフォント名 (これはVFlibで付けた名前とXから見える名前の両方があります)、印刷時に利用する フォント名(PostScriptだとリュウミンとか)を意識し、設定する必要があります。
あるいは、xdviやghostscriptなど、スケーラブルな日本語フォントを扱わないと いけないアプリケーションは、(現在の実装では)VFlibからbitmapを得てそれを 表示するようにしていますが、X server側でスケーラブルフォントが利用できるなら それを使った方が自然です。仮に将来そうなった場合、X serverがVFlib経由で フォントをアクセスしているとやっぱり設定が面倒ですし、どうも不自然な気がします。
X serverが直接日本語スケーラブルフォントを扱えるようになれば 前述の問題は改善されると期待できます。そこで、Xに直接FreeTypeフォントを 組み込む試みがなされています。
The FreeTye ProjectのRelated Projectには、『The X11 TTF font server (Still in alpha)』 が記載されています。これも試してみたのですが、日本語を扱うのはまだまだという感じでした(1998/2上旬現在)。
もう一つの試みが、渡邊剛さんのX trueType Server(仮称)開発ノート(archive.orgの最新)です。 こちらも作成途上ですが、日本語スケーラブルフォントを扱うことはできるように なっています。
X上で多彩な日本語フォントが使えるようになったのですが、まだまだやるべきことは 残っています。例えばこんなことです。
ソースから自分でコンパイルする場合は、X11R6.3のソースツリーが必要になります。 X serverだけあればいい場合は、Server Onlyなパッケージを使うのもいいと思います。
1998/02/21,23に渡邊剛さん作成の 上記統合済パッチと バグ修正が出ました。
1998/02/20に森木さん作成の x-tt pl02 統合済パッチが出ました。塩崎さんのページからダウンロードできます。
上記いずれかのパッチを適用したあとで、make Worldでいける...んじゃないかなあ。ダメだったらメイルで報告ください。
以下は、個別のパッチの説明ですが、このへんの情報はもはや古いです。 読まない方がいいかも...
あとは普通にmake Worldでいける...んじゃないかなあ。 ダメだったらメイルで報告ください。
Linux(RedHat4.2+PJE)で作成したバイナリを置いておきます。 OpenBSD、FreeBSDな人は渡邊剛さんのX trueType Server(仮称)開発ノートを見てください。
TrueTypeフォントを格納したディレクトリを用意します。 私は『RICOH TrueTypeWorld』というフォント集を買ってきました。 19980211時点ではでWindows95標準のMS明朝、MSゴシックはまだ扱えませんし、 ライセンスの関係から使ってはいけないという話もあります。 三田吉郎さんの(ベクトルフォントの著作権について)を参考にしてください。 Taroh's FreeBSD tips/X11 + VFlib - buy fonts (in Japanese)も参考にしてください。
私は/usr/X11R6/lib/X11/fonts/ttfにフォントを置きました。 実体(.ttc)は別の場所にあってここにはsymbolic linkを張ってあります。 Windows95でinstallをしてあるフォントを流用する場合も、 /dosc/windows/fontsからsymboic linkするとディスクを節約できます。
[217]shin:/usr/X11R6/lib/X11/fonts/ttf:ls fonts.alias hgrhg3sj.ttc hgrhkpsj.ttc hgrkrsj.ttc fonts.dir hgrhg5sj.ttc hgrhm3sj.ttc hgrlksj.ttc hgrcbsj.ttc hgrhg7sj.ttc hgrhm9sj.ttc hgrpn1sj.ttc hgrcksj.ttc hgrhg9sj.ttc hgrhr4sj.ttc hgrpp1sj.ttc hgrcresj.ttc hgrhkfsj.ttc hgrhr8sj.ttc hgrpp2sj.ttc hgrgysj.ttc hgrhkgsj.ttc hgrkksj.ttc hgrsksj.ttc
fonts.dirにはフォントのファイル名とXでの名前との対応表を記載します。 また、アプリケーションからよく参照されそうな名前はfonts.aliasで別名を 付けるようにしました。
フォントファイル名と書体の対応表は、RICOH TrueType Worldのページに掲載されています。
[219]shin:/usr/X11R6/lib/X11/fonts/ttf:cat fonts.dir 21 hgrgysj.ttc -ricoh-gyosyo-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrkksj.ttc -ricoh-kyokasyo-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrsksj.ttc -ricoh-kaisyo-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrlksj.ttc -ricoh-ozawa kaisyo-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhkgsj.ttc -ricoh-sirasu gyosyo-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhkfsj.ttc -ricoh-sirasu kaisyo-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrkrsj.ttc -ricoh-kanteiryu-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrpn1sj.ttc -ricoh-souei pen-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhkpsj.ttc -ricoh-sirasu pen-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrpp1sj.ttc -ricoh-kaku pop-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrpp2sj.ttc -ricoh-maru pop-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhm3sj.ttc -ricoh-mincho-w3-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhm9sj.ttc -ricoh-mincho-w9-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhg3sj.ttc -ricoh-gothic-w3-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhg5sj.ttc -ricoh-gothic-w5-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhg7sj.ttc -ricoh-gothic-w7-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhg9sj.ttc -ricoh-gothic-w9-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrcresj.ttc -ricoh-reisic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrcbsj.ttc -ricoh-bouquet-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhr4sj.ttc -ricoh-maru gothic-w4-r-normal--0-0-0-0-c-0-jisx0208.1983-0 hgrhr8sj.ttc -ricoh-maru gothic-w8-r-normal--0-0-0-0-c-0-jisx0208.1983-0
[220]shin:/usr/X11R6/lib/X11/fonts/ttf:cat fonts.alias -ricoh-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-mincho-w3-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-mincho-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-mincho-w9-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-gothic-w3-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-gothic-w9-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-maru gothic-medium-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-maru gothic-w4-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-maru gothic-bold-r-normal--0-0-0-0-c-0-jisx0208.1983-0 -ricoh-maru gothic-w8-r-normal--0-0-0-0-c-0-jisx0208.1983-0
DYNALAB INC. のDynaFontプレミアム30書体パックの「DF平成明朝体W3」と「DF平成明朝体W9」を利用する場合は、 渡邊剛さんのX trueType Server(仮称)開発ノートを参考にするといいと思います。
TurboLinuxや、db NOTE for Linux/BSDのフォントも同様に使えると思います。
ディレクトリを作成したらmkfontdirしておきます。でも、いまの実装ではmkfontdir には対応してないらしいんでやらなくてもいいんですが、クセを付けておきましょう :)
セキュリティホールを塞ぐために、Xwrapperを使っている環境では 下記のように指定しないとroot以外ではXが起動しないかもしれません。[222]shin:/home/shin:cat .xserverrc exec X -deferglyphs all $@
xdmを使っている場合は、/usr/X11R6/lib/X11/xdm/Xservers に記述するそうです。 田口さんに教えていただきました。 ありがとうございます。[222]shin:/home/shin:cat .xserverrc Xwrapper -deferglyphs all $@
xfsの設定は /etc/X11/fs/configで行います。 catalogueにxfs経由で取得するフォントのディレクトリを指定します。% cat /usr/X11R6/lib/X11/xdm/Xservers :0 local /usr/X11R6/bin/X -bpp 16 -deferglyphs all
[223]shin:/home/shin:cat /etc/X11/fs/config # font server configuration file # $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $ clone-self = on use-syslog = off #catalogue = /usr/X11R6/lib/X11/fonts/VFlib/ catalogue = /usr/X11R6/lib/X11/fonts/ttf/ error-file = /usr/X11R6/lib/X11/fs/fs-errors # in decipoints default-point-size = 120 default-resolutions = 75,75,100,100 # deferglyphs=all
deferglyphsの設定には、none/16/allのいずれかが設定できます。 日本語だけであれば16でもallでもどちらでもいいと思いますが、 私はallに設定しました。
XFree86を利用している方は、 /etc/X11/XF86ConfigのFontPathの設定を変更して miscフォントはunscaledにした方がいいと思います。これがないと固定サイズの bitmapを無理矢理scaledにする機能が働いてしまい、意図しない結果を得ることが あります。 ついでに、xfs経由でフォントを持ってくるように定義を追加しましょう。
FontPath "/usr/X11R6/lib/X11/fonts/misc/:unscaled" FontPath "tcp/localhost:7000"
Accelareted-X Serverでは、FontPathにunscaledを設定することができないようです。 これでは困りますので、/etc/Xaccel.iniのFontPathの定義からmiscを定義している 部分を取り除いて、xfs側にmiscを追加してあります。
[root@salty specs]# cat /etc/Xaccel.ini // // Accelerated-X (tm) Display Server, Version 4.1, Xaccel.ini created at Tue Jan 13 07:24:47 1998 // [FONTPATH] "/usr/X11R6/lib/X11/AcceleratedX/fonts/misc/", "/usr/X11R6/lib/X11/fonts/Speedo/", "/usr/X11R6/lib/X11/fonts/75dpi/", "/usr/X11R6/lib/X11/fonts/100dpi/", "tcp/localhost:7000"; // "/usr/X11R6/lib/X11/fonts/misc/", [RGBPATH] "/usr/X11R6/lib/X11/AcceleratedX/etc/Xrgb"; [KEYBOARD] Layout = "en_US.xkm"; [MOUSE] Device = "/dev/mouse"; Protocol = PS/2; Emulate3Buttons = YES; [SCREEN] Board = "neomagic/nm2093.xqa"; Monitor = "mfreq/svga.vda"; Depth = 16; ColorTemperature = 6500; [RESOLUTIONS] 800x600@56;
[root@salty specs]# cat /etc/X11/fs/config # font server configuration file # $XConsortium: config.cpp,v 1.7 91/08/22 11:39:59 rws Exp $ clone-self = on use-syslog = off #catalogue = /usr/X11R6/lib/X11/fonts/VFlib/ catalogue = /usr/X11R6/lib/X11/fonts/ttf/,/usr/X11R6/lib/X11/fonts/misc/:unscaled error-file = /usr/X11R6/lib/X11/fs/fs-errors # in decipoints default-point-size = 120 default-resolutions = 75,75,100,100 # deferglyphs=all
ここまで設定できたら、『xfs -port 7000』と入力してxfsを起動したあとで、 Xを起動してフォントが利用できるか確認してください。
xfsは立ち上げっぱなしでも構いませんので、/etc/rc.d/に書いておくといいと 思います。
XでNetscapeを使う場合、最初に日本語化しておいた方が何かと便利です。 Linux版 Netscape Communicator 4.0x 及び Navigator 3.0xGold の 日本語表示/入力設定を参考に、 日本語化しましょう。あと、Netscapeでのスケーラブルフォントの扱いについては X-V XserverでのVFlibフォントとBitmapフォントの複合利用が参考になります。
上記の文章に目を通したら、フォントの設定をします。 Japanese(jis x0208-1983)のフォントの設定メニューにて X/FreeTypeで登録したファイルから好きなものを選びます。 私は、プロポーショナルとか等幅の区別はせず両方とも Mincho(Ricoh)を選びました。スケーラブルはON、 フォントの大きさは0(any)を選びます。 フォントの設定後はNetscapeを再起動してください。
なお、Netscapeでは通常の文字と太字はフォント名のmedium/boldで切替えます。 フォントの重さをw3等で指定している場合は、fonts.aliasでmedium/boldも 定義するようにしましょう。
gimpについては、The GIMP HomePage、 GIMPメーリングリスト、 Love Love GIMP、 Introduction to The GIMPあたりを見てください。
お定まりの呪文を唱えて、フォントの選択で日本語フォントを選んで (単にminchoを選ぶとdaewoo-minchoでハングルになっちゃうよ) kinput2を起動すると、日本語が入力...できないんだなあこれが。 kinput2までは起動するんだけど、まだうまくいかないみたい。
Japanese GIMPの ページにkinput2で入力できるようにするパッチを発見しました。
でも、入力フィールドでJISコードに相当する文字を直接入力すれば 一応文字は入力できるし、ASCIIの文字と同じ扱いで使えます。 例えば ?p7DMw と入力すると瑞慶覧って入るんだ。簡単でしょ? :)
tgifのフォントの設定については、ソースについてくるJAPANESEというドキュメントを まず、読んで欲しい。PJEのtgifを 利用している場合は、/usr/X11R6/lib/X11/tgif/3.0J0.12-p13/JAPANESE に存在する はずである。
印刷のことは余り考えずにとりあえず、フォントを使う設定をする場合は、 リソースで下の例のようにすればよい。各エントリの説明はJAPANESEを読んで欲しい。 スケーラブルフォントを利用する場合、一番最後のフォントサイズのエントリを allにしないとフォントが大きくならなくて大変悲しい思いをする。
Tgif*NihongoFonts: \ mincho-medium-r-normal, jisx0208.1983-*, \ Ryumin-Light-EUC-H, Ryumin, \ H, false, all \n\ gothic-medium-r-normal, jisx0208.1983-*, \ GothicBBB-Medium-EUC-H, Gothic, \ H, true, all \n\ fixed-medium-r-normal, jisx0208.1983-*, \ Ryumin-Light-EUC-V, Ryumin-V, \ V, false, 14 \n\ fixed-medium-r-normal, jisx0208.1983-*, \ GothicBBB-Medium-EUC-V, Gothic-V, \ V, true, 14
これはKDE(K Desktop Enviromnent)という Desktop環境です。 Window Managerであるkwmや、ファイルを管理するkfm、下のバーを表示する kpanelなどで構成されています。 メニューなどの変更は .XXXrc をいじるのではなく、GUIベースでできますので 非常に簡単に扱えますし、なにしろ綺麗です。
古いパッチではこの現象が発生します。なるべく最新のxttを使いましょう。
必要があって、古いパッチでxfsをコンパイルする場合は、 xfs-VFlib … 「VFlib 対応のフォントサーバを作る試み」 のxfs-VFlib.patchを当てる必要があります。
xc/docs/hardcopy/XLFD/xlfd.PS.Z の『4 Matrix Transformations』を 読んでください。
古いパッチではこの現象が発生します。なるべく最新のxttを使いましょう。
内部コードがUnicodeでエンコーディングされたフォントはxtt02では使えません。 塩崎さんのUnicode パッチを当ててください。
deferglyphsオプションをXサーバーとxfsの両方で指定しないと、 フォントをオープンしたときにグリフを一括して取得しようとして劇的に遅くなります。 『とりあえず使ってみたい人のために』を参考に、 オプションを設定してください。
フォント名を指定する際に、
-dynalab-mincho-bold-i-normal--0-0-0-0-p-0-jisx0208.1983-0
とすると、プロポーショナルにするためのデータの取得のため全glyphに対して
Load_Glyph, Get_Metrics, Get_Glyph_Outline,
Transform_Outline, Get_Outline_BBox が実行されます。
# 正確には要求があった code に対してだけど、結局全部要求がくる(^^;;
この処理、はっきりいって、かなり時間かかります。
256 個程度だと気にならないのですが、日本語だと....(T_T)
-dynalab-mincho-bold-i-normal--0-0-0-0-c-0-jisx0208.1983-0
とすると、Metric 要求に対して全部固定値を返すようになるので、一瞬になります。
フォントの指定を間違うと、TrueTypeフォントではなくて通常のmiscフォント(k14等)を Xサーバーが勝手にbitmap scalingしようとして時間がかかることがあります。 この場合も、『とりあえず使ってみたい人のために』を参考に、 miscフォントではscalingしない(unscaled)を設定してください。