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 ページを参照のこと。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください