永井@知能.九工大です.

From: haruichi yabuki <hyabuki / zb.ztv.ne.jp>
Subject: [ruby-list:46804] ruby/tk のアンチエイリアス表示
Date: Sat, 23 Jan 2010 21:09:38 +0900
Message-ID: <20100123.210958.251075726.hyabuki / zb.ztv.ne.jp>
> Ruby/Tkを勉強しています。
> ubuntu9.10 を使っています。
> libtcltk-ruby1.8 および 1.9 のそれぞれに応じた設定で実験しましたが、
> --- apt-get でinstallしています:自分でコンパイルしていません ---
> いずれの場合も フォントがギザギザで アンチエリアス・フォント の表示
> が出来ません。
> tk8.5 と 一緒に tk8.4 も入っています
> (tk8.4 を削除しようとすると、libtcltk-ruby1.8 も1.9 も 一緒に削除
> と言うメッセージが出ますので)。
> tcltk では アンチエリアス・フォント の表示が出来ています。

Linux というか X 版の Tcl/Tk でアンチエイリアスが機能するのは,
8.5 以降のはずです.
Tcl/Tk8.4 を削除しようとすると 
libtcltk-ruby まで削除しようとすることからも,
現在 install されている ruby の tcltklib.so は
Tcl/Tk8.4 のライブラリを使用するようになっていると思います.
もし stub が使えるなら自動的により新しいバージョンを使うはずですので,
ライブラリパスでうまく見付けることができていないか,
stub 非対応になっているかのいずれかでしょう.
確実にするには,Tcl/Tk8.5 を使うように tcltklib.so を
作りなおす必要があると考えた方がいいでしょう.

# 本来であれば,stub を利用すれば 8.4 用に make された tcltklib.so で
# 8.5 でも使えるはずなのですが,どういうわけか 8.4 と 8.5 とでは
# 相性が悪くてうまく機能しないケースがあるようです.
# そのケースでは 8.5 と 8.6 との間もダメですが,
# 8.4 と 8.6 の間では機能したりします.

> 以下のプログラムを実行しました。
> 対処方法をお教え頂けないでしょうか。
> 
> ソースからコンパイルしょうと思いますが、どのようなオプションを付けて
> 実行すれば良いのか、どのソースファイルを用意すれば良いのか
> 分かりません。ネット上 および 書籍 で探し回りましたが、
> 古い情報しかありませんでした。

configure オプションについては,
ruby のソースの ext/tk/README.tcltklib を参照ください.
どのような環境になっているのかわかりませんので,
Tcl/Tk8.5 のヘッダやライブラリを適切に見付けるために
どこまで指定してやる必要があるかはわかりませんが,
Tcl/Tk8.4 のヘッダやライブラリとの曖昧さが出ないように
指定してあげれば大丈夫だと思います.

例えば 8.4 が /usr/lib に,8.5 が /usr/local/lib に
インストールされているようなら,
--with-tcltkversion=8.5 --with-tcl-dir=/usr/local --with-tk-dir=/usr/local
くらいの指定で OK かもしれません.
-- 
永井 秀利  (nagai / ai.kyutech.ac.jp)
九州工業大学 大学院情報工学研究院 知能情報工学研究系 知能情報メディア部門