fixedpoint.jp - Running gd-pango




Running gd-pango

昨年2007/01/09で紹介していた gd-pango をインストールして動かしてみました。利用した OS は Debian lenny です。

ビルドに必要なツールがインストールされていることを確認
gcc や autotools や gettext が当然必要。
必要なライブラリをインストールする
Debian lenny ではパッケージとしてをインストールする。
CVS から gd の最新のソースを取得する
取得手順は http://www.libgd.org/Downloads に書かれている。
libgd をインストールする
$ cd libgd/src
$ ./bootstrap.sh
Now run configure and make
$ ./configure --prefix=/home/tabe/usr
checking build system type... i686-pc-linux-gnu
(snip)
checking if more special flags are required for pthreads... no

** Configuration summary for gd 2.1.0:

   Support for PNG library:          yes
   Support for JPEG library:         no
   Support for Freetype 2.x library: yes
   Support for Fontconfig library:   yes
   Support for Xpm library:          no
   Support for pthreads:             yes

configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/Makefile
config.status: creating config/gdlib-config
config.status: creating test/Makefile
config.status: creating config.h
config.status: executing depfiles commands
$ make
(snip)
このまま使うのでインストールはしない。
最新の libgd に合わせて gd_pango.c および gd_pang.h を修正
gd_rect.patch
build.sh を編集する
README に従う。
$ cat build.sh
cc -o examples/simple gd_pango.c examples/simple.c -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/pango-1.0 -I/home/tabe/var/gd-20080424/libgd/src -L/home/tabe/var/gd-20080424/libgd/src/.libs -I. -lpango-1.0 -lpangoft2-1.0 -lgd
cc -o examples/rotated gd_pango.c examples/rotated.c -g -O2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/pango-1.0 -I/home/tabe/var/gd-20080424/libgd/src -L/home/tabe/var/gd-20080424/libgd/src/.libs -I. -lpango-1.0 -lpangoft2-1.0 -lgd
$ ./build.sh
examples/simple.c: In function ‘main’:
examples/simple.c:104: warning: ‘return’ with a value, in function returning void
examples/simple.c:47: warning: return type of ‘main’ is not ‘int’
$ 
examples で simple と rotated を実行
$ cd examples
$ LD_LIBRARY_PATH=/home/tabe/var/gd-20080424/libgd/src/.libs ./simle
これによってアラビア語がレンダリングされた画像ができる: c.png d.png
さらに
$ LD_LIBRARY_PATH=/home/tabe/var/gd-20080424/libgd/src/.libs ./rotated
によって回転された画像ができる: c.png d.png

そして独自に日本語を出力してみました。examples に UTF-8 でエンコーディングされた japanese.txt を用意し、simple.c および rotated.c からそれぞれ呼び出します: japanese.txt.patch

実際に simple や rotated を実行する前に、日本語の TrueType フォントを用意しておく必要があります。lenny の場合は

があれば十分です。Unicode の言語全てをカバーすることを目標にしている期待の DejaVu フォントは、今現在 CJK に対応していません: http://dejavu.sourceforge.net/wiki/index.php/Current_status

結果、d.png で rotated による回転に失敗しているようですが、それ以外ではテキストのレンダリングに成功しています:

simple
c.png d.png
rotated
c.png d.png

© 2006-2008 Takeshi Abe