なんとか年内で終わらせることができた 。
翻訳ファイルを本家にマージしてもらうよう Sebastian にお願いした。あといくつか誤植があったんだけど、こちらは暇な時にでも Issues on GitHub に登録する予定 (日本語版は修正済み)。
The Python GTK+ 3 Tutorial: 本家 (英語)
Python GTK+ 3 チュートリアル: 日本語
月別アーカイブ: 2012年12月
Removed the codeset of PANGO_RENDER_TYPE_X.
Pango のバージョン 1.31.x (公式版は 1.32.x) から X11 のフォントバックエンドのコードが完全に削除されてしまった。まぁ最低限でも freetype と xft のレンダリングを使っている今時のデスクトップ環境では不要ということでかなり前から予告はあったのだけれど:
$ git log 194b6ee552318ec6c494f34ed9f0979d0460fe4f -p
commit 194b6ee552318ec6c494f34ed9f0979d0460fe4f Author: Behdad Esfahbod Date: Thu Aug 16 21:48:50 2012 -0400 Remove PangoX Been overdue... diff --git a/Makefile.am b/Makefile.am index b0b56ec..1ac018a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -6,13 +6,11 @@ EXTRA_DIST = \ autogen.sh \ pango.pc.in \ pangocairo.pc.in \ - pangox.pc.in \ pangoxft.pc.in \ pangoft2.pc.in \ pangowin32.pc.in \ pango-uninstalled.pc.in \ pangocairo-uninstalled.pc.in \ - pangox-uninstalled.pc.in \ pangoxft-uninstalled.pc.in \ pangoft2-uninstalled.pc.in \ pangowin32-uninstalled.pc.in \ @@ -84,10 +82,6 @@ if HAVE_CAIRO pkgconfig_DATA += pangocairo.pc endif -if HAVE_X -pkgconfig_DATA += pangox.pc -endif - if HAVE_XFT pkgconfig_DATA += pangoxft.pc endif diff --git a/configure.in b/configure.in index fc5a0f7..90ed3c4 100644 --- a/configure.in +++ b/configure.in @@ -225,21 +225,6 @@ AC_ARG_ENABLE(rebuilds, AM_CONDITIONAL(CROSS_COMPILING, [test $cross_compiling = yes]) -have_x=false -if test "x$pango_os_win32" != xyes; then - AC_PATH_XTRA - - if test x$no_x = xyes ; then - AC_MSG_WARN([X development libraries not found]) - have_x=false - else - X_LIBS="$X_LIBS -lX11" - have_x=true - AC_DEFINE(HAVE_X, 1, [Have X libraries]) - fi -fi -AM_CONDITIONAL(HAVE_X, $have_x) (...SNIP...)
その一方で新しく導入されたのが OpenType のフリーなレンダリングの HarfBuzz。試しに今の GNOME 3.6 な環境に両ライブラリをビルド・インストールしてみたが特にレンダリングの方は問題はなかった。今の環境のフォント設定ははベクタだけでビットマップなんて使っていないので当然といえば当然だけれども。
但し弊害が無いわけではなくて、上記のコードが削除されたことで libpangox-1.0.so.0 というモジュール用ライブラリが無くなってしまうため、このライブラリと動的にリンクしているアプリは当然起動できない等の問題が発生する。
例えば、自分の環境だと GTK+ バージョン2系のアプリで ATOKX が使えなくなった。Justsystem が日本語入力システム ATOK X3 for Linux としてリリースしているバイナリはかなり古いバージョンのフレームワークでビルドされており、まさにこのモジュール用ライブラリを動的にリンクしていた:
$ ls -al /usr/lib/gtk-2.0/2.10.0/immodules/im-iiim.so -rw-r--r-- 1 root root 103278 Nov 17 13:14 /usr/lib/gtk-2.0/2.10.0/immodules/im-iiim.so $ ldd /usr/lib/gtk-2.0/2.10.0/immodules/im-iiim.so linux-vdso.so.1 => (0x00007fff99fff000) (...SNIP...) libpangoxft-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoxft-1.0.so.0 (0x00007f44a5a87000) libpangox-1.0.so.0 => not found (...SNIP...) $ $ gtk-demo (gtk-demo:4567): Gtk-WARNING **: libpangox-1.0.so.0: cannot open shared object file: No such file or directory (gtk-demo:4567): Gtk-WARNING **: Loading IM context type 'iiim' failed
その影響で google-chrome とか firefox3 とか OpenOffice で日本語が入力できなくなってしまった 。
解決方法の一つはリビルドすること。Pango のXのバックエンドが廃止になると予告していたのはかなり前のバージョンからなので、最近の GTK+ バージョン2系のフレームワークであれば libpangox-1.0.so.0 は動的にリンクされない (正確には ${LIBDIR}/pkgconfig/pango*.pc を確認のこと)。
で、ATOKX ならば製品付属のソースから iiimcf 相当のモジュールをリビルドしてインストールしておけば回避できる。
$ sudo install -c -m644 .libs/im-iiim.so /usr/lib/gtk-2.0/2.10.0/immodules/im-iiim.so
ビルド方法は昔 GTK+ バージョン3系向けにブログした時の Wiki ページを参照のこと。
GTK+ Ref. translation (TAKE 5).
「数値や文字列を入力するためのウィジェット」が完了。エントリ・フィールド向けにいくつか API が追加された以外は、前の翻訳版とは大きな差分はなし。
GTK+ リファレンスマニュアル: v2.14.7 版の API リファレンス
GIT リポジトリ: 作業用の GIT リポジトリ (英文併記)
誤植/誤訳の報告はメールの他にこちらにて。
Translation of Python GTK+3 Tutorial (TAKE 4).
前回からの差分、「16. メニュー」から「18. クリップボード」まで完了。
適宜、本家にマージしてもらおうと思ったけど、このまま残りを終わらせてから送付するかな。
The Python GTK+ 3 Tutorial: 本家 (英語)
Python GTK+ 3 チュートリアル: 日本語 (翻訳中)