別にも書いたように、 tgifは古めのアプリケーションではあるが、 今でも私の手元にはその形式データが残っている。 ところが、VineLinux5.0ではいろいろと不具合があるようで、 文字が化けたり日本語が使えなかったりする。 そんな風だと自分が困るので調べてみることにした。
いろいろと調べてみた結果、 問題は以下のような構造になっていることがわかった。
tgifの内部エンコーディングは、 EUC-JP (もしくはそれ系)であることを前提として プログラムが組まれており、これを変更することは 大変な労力を要する。その一方で、 Vine 5.0からはutf-8を基本として システムが構成されるようになっている
環境変数LANGをEUC-JPのものにしてtgifを起動した場合、 tgifは日本語入力時にEUC-JPをシステムに要求するが、 システムはutf-8しか対応していないためエラーが出る。 環境変数をデフォルトのままtgifを起動した場合、 tgifは意図せずutf-8の入力をシステムに要求してしまうため、 その後実際に日本語文字が入力されたとき 文字の解釈を誤り、見えない/化けた文字となってしまう。
そこで、非常に汚い対応であるが、 tgifはutf-8の環境で起動させ、 文字が入力された直後にtgifの内部で強制的にEUC-JPに変換すればよいと考える。
Vine 5.0のXでは、Times-RomanやHelvetica, Courier等のビットマップフォントのスケーリングが無いようである。 そのため、複数のサイズの英字の文字列が扱えなくなっている。
解決策としては、urwのType1フォントがTimes-RomanやHelvetica等の 代替フォントとして利用できるようなので、これをXのフォントパスに加え、 その代替フォントを利用するようにapp-defaults/Tgifで指定すればよい。
これはよくわからない。
ただ、これはtgif側だけの問題ではなく、 Vine5.0のXの側というかフォント側にも問題があるようである。
解決策としては、app-defaults/Tgifにおける メニューやダイアログのフォントセットの適切な設定、 Xのフォントのencodingsディレクトリにおける encodings.dirファイルの作成、 一見存在するように見えて、実はjisx0208.1983では利用できない (Xサーバのほうにfaceがどうとかいうエラーが出る) TrueTypeフォントの回避で何とかなるようである。
複数存在する不具合の原因を解決するため、 tgifパッケージ以外についての作業も必要となる。 以下にその手順を記す。
普通すでにインストールされていると思うが、 urw-fontsがインストールされていなければ、 「apt-get install urw-fonts」 などとして、まずインストールする。
次にXからurw-fontsを使えるようにするために、
cd /etc/X11/fontpath.d ln -s /usr/share/fonts/default/Type1 .
として、当該フォントの存在するディレクトリに対しリンクを張る。
多分これはそもそもxorg-X11-fonts-miscパッケージの スクリプトで行う作業だと思うのだけど、 無いものは仕方ないので手で行うことにする。
(xorg-X11-fonts-miscパッケージが入っていなければ 先にインストールしておくこと)
以下のコマンドで、encodings.dirファイルが生成される。
cd /usr/share/X11/fonts/encodings mkfontdir -n -r -e . -e large
これは、TrueType-ipafont-minchoパッケージの スクリプトで行っている作業なのだけど、 Requireするパッケージの中にmktcapdirが入っていないため、 インストールする順番により、fonts.dir等が生成されていない時がある。
まず、「ls /usr/share/fonts/TrueType-ipafont」として、 もし、fonts.dirが存在しなければ、以下のコマンドで作成しておく。
mktcapdir /usr/share/fonts/TrueType-ipafont /usr/share/fonts/TrueType-ipafont/*.ttfconf
ベースとするtgifのソースパッケージであるtgif-4.1.45-1vl5.src.rpmは VineのFTPサイトのVinePlus/5/pool/に存在するのでダウンロードする。
rpm -ivh tgif-4.1.45-1vl5.src.rpm
などとして自分のrpmディレクトリにインストールした後は、 こちらで作成した utf8入力パッチファイル(汚い) と Vine5.0専用app-defaults/Tgifファイル (いい加減なフォント設定) の二つを取得してから、
mv tgif-utf8dirtyhack.patch Tgif-vine50.ad ~/rpm/SOURCES/
などとして、rpmのSOURCESディレクトリに移動させる。 さらに、 こちらで変更したSPECファイル も取ってきた後、
mv tgif.spec ~/rpm/SPEC/
などとして、rpmのSPECディクトリのspecファイルを上書きしてしまう。
後は、
rpm -bb ~/rpm/SPEC/tgif.spec
としてバイナリパッケージの生成を行えばよい。
(書き忘れていたけど開発環境が入っていることは前提)
先に生成したバイナリのtgifパッケージをインストールすれば、 多分動くと思う。
rpm -ivh ~/rpm/RPMS/i386/tgif-4.1.45-1vl5tpu1.i386.rpm
パッケージが足りなければapt-getなりその他のツールなりを つかってそのパッケージをインストールすること。
「(d)」の作業が面倒な人のために バイナリパッケージ とその元となる ソースパッケージ も置いておくけれど、 「(a)〜(c)」の作業(もしくはチェック)は必要である。 (こっちはちょい古い。下のやつの方が新しい。)
フォントパスやらの変更をXに反映させるために、 一旦ログアウトしてもう一度ログインしてから tgifを動かしてみるとよい。
私の所では何となく動いている気がする。
ある時VineSeedにtgif-QPL-4.2.2のパッケージがあることに気がついた。
手元のVine 5.1に入れて試してみたが、あまりうまく動かなかった。
手元で発生した問題は大まかに以下の通りである。
この辺を直したものを以下に記載する。 先の章の(a)-(c)の作業を行うインストールスクリプトとかを書いてみたので、 うまくいけばインストールするだけで他の作業はいらないかも。
取り合えず、こちらのVine5.1では動いている。
(2009.9.8作成)
(2009.9.9追加)
(2009.9.21ルーラが見難いので修正)
(2009.11.18 Helveticaフォントの設定を間違っていたので修正)
(2010.4.10 tgif-4.2.2用を追加)
(2011.8.19 ここにあるパッチは64ビット版では使えないことが判明。 こっちなら動くと思う)