Linux + X-VFlib + Accelerated-X + Let's note mini


Xで日本語スケーラブルフォントを使おうの方が 内容が新しいし、これから使う人は楽ができます。まず、そこを読んでください。


Let's note mini とか FMV-BIBLOはNeoMagicのVideo Chip(NM209X)を使っているんで XFree86が動作しません。まあ、それだけなら、Accelareted-X を買えば済むんですが、 こいつを入れると、XF86版のX-Vが動きません。それではあまりにも悲しいので 少しほげってみました。

Accelareted-Xの内部なんかよくわからんので、適当にほげってあります。 いまのところ安定しているような気がしますが、落ちても責任は持ちません。

以下の情報を読んで、VGA/16colorでX-Vが動くことを確認してから作業しましょう。

xfs側でVFlibに対応できるようになりました。これから使ってみたい人は、 そっちを使った方が楽です。X入れ換えないで済むし。


お知らせ


X-V関係のページ
X-V プロジェクトのページ
X-V Project Linux バイナリのページ (Slackwareって書いてあるけどRedhat4.2+PJE0.1でも動いた)
VFlib
ベクトルフォントライブラリ VFlib
Let's note関係の情報はここ
Mobile Office Let's Note(B5 SubNote) Machine
xfs-VFlibの情報があります。
アジテーション
PC-UNIXとX-VFlibと日本語アプリケーション

Accelerated-Xのほげり方

まず、Accel-Xを入手しましょう。plathomeで売っています。 ちょっと動かすだけなら10分動くデモがXinside にあります。

動くことを確認したら、 http://www.ryukyu.ad.jp/%7eshin/linux/VFlib/VFlib.fnt.gzをダウンロードしてください。 (直接VFlib.fnt.gzにリンク張ってるんで、Netscapeは人は右ボタンでSaveしてください)

-rw-rw-r--   1 shin     staff      82009 Dec 18 06:23 VFlib.fnt

あるいは、daisukeさんのTrueType.fntをWe Love Linuxのページから拾いましょう。 実は、こちらの方がフォントが綺麗でおすすめです。どちらを使っても以下の手順は ほとんど同じです(ファイル名が違う)。

上記のVFlib.fntを /usr/X11R6/lib/X11/AcceleratedX/modules/ に置き、 /usr/X11R6/lib/X11/AcceleratedX/etc/Xrenderers に次の行を追加してください。

.vflib    VFlibRegisterFontFileFunctions        VFlib.fnt

あと、/etc/Xaccel.ini の FontPath に "/usr/X11R6/lib/X11/fonts/VFlib/", を追加して、Xを起動すればVFlibなAccel-Xが動くかもしれません。


自分でばんばんしたい人へ

Accel-Xはもともとrendererやddxをdynamic loadできる仕掛けになっていますので そこで動くように X11R6/xc/lib/font/VFlib をほげりました。 (VFlib本体もほげらんとだめです)

このとき、dynamic loadされる側のモジュール(VFlib.fnt) がXaccelが 持っていないシンボルを参照するとエラーになりますので、そこを がんばってほげるのがメインの仕事です (libcのバージョンか何かの問題くさい)。

  1. ctype.h の中にある isxdigitなどの関数はそのままでは __ctype_b という 配列を参照するため、エラーになる → -D__NO_CTYPE すると関数呼出になる。
  2. stdlib.h の中にある strtolなどの関数は、strtol_internalという関数を 呼ぶがこれは存在しないのでエラーになる → -D__STRICT_ANSI__ する。
  3. bcopy, bzeroなどは存在しない → VFlibを -DSYSVでコンパイル
  4. stderrなどを参照すると _IO_stderrなどの参照になるが、これもない。
    → どーせdebugルーチンがメインなので取る (^^;
    → write(2, ...) で書く (こっちがおすすめ)
  5. なぜかlseekがない (-.-; → VFcap.cのそのへんをint fd使っている部分を FILE *fdとしてがんばってほげる。

こうやって libVFlib.a と X11R6/xc/lib/font/VFlib ができたら、 ld -x -r -o VFlib.fnt *.o /usr/local/lib/libVFlib.a を実行して relocatable objectを作ります。

作業洩れがあると、起動時に undefined symbol hogehoge と表示されるので 気をとりなおしてがんばりましょう。

ここまでやればあとは誰かいい人がFreeType版も作ってくれるだろう...


xfs-Vflib

xfsにVFlibを実装すると遅くて使い物にならねーぜ、という話がありましたが 実はそんなことは4年ぐらい前にわかっててしかも解決していたようです。

上記の記事によりますと対策として以下の2つを実装してあるからそれを使えという ことで使ってみると、そこそこの速度で動くようになりました。 ちなみにLet's note mini (Pentium 120/MHz) + Accelerated-Xの構成です。

  1. Xserver起動時に -deferglyphs [none|16|all] をつける。私は -deferglyphs 16 にしましたが、allでもいいかも。
  2. xfsのconfigに deferglyphs=[none|16|all] を追加する。ここも16にした。

フォントキャッシュの関係で、同一のフォントを使っていると最初は遅いけど だんだん速くなってきます。きっとその分メモリ食ってるんだろうな(^^; NetscapeのフォントをRICOH TrueTypeWorldのものにしてみましたが、 ちょっと遅いぐらいで問題なく利用できました。

試してみたいという方のためにバイナリ置いておきます。RedHat 4.2 + PJE環境で 作成しましたので、vfontcapは/etc/vfontcapにないといけません。


Xに直接FreeTypeのレンダラーを仕込んだサーバーで、 X TrueType ServerのLinuxバイナリです。

関連ページ


ずけらん しん / shin@opus.or.jp