Ming/Ruby で遊ぼう 以下必要なもの。 Ruby 1.6.7 以上 ftp://ftp.ruby-lang.org/pub/ruby/ JaMing http://blue.ribbon.to/~harpy/ming/jaming/ もしくは Ming http://ming.sourceforge.net/ Ming/Ruby http://www.aist-nara.ac.jp/~daisu-ik/ruby/ming/ uconv http://www.yoshidam.net/Ruby_ja.html#uconv freetype2 ftp://ring.so-net.ne.jp/pub/graphics/freetype/ Kochi font http://www.on.cs.keio.ac.jp/~yasu/jp_fonts.html imlib2 http://www.enlightenment.org/pages/imlib2.html http://prdownloads.sourceforge.net/enlightenment/ ( download ) imlib2/doc/ ( document ) ごっそり wget rin@mariko[~/cmp/ming]% wget http://www.aist-nara.ac.jp/~daisu-ik/sources/ming-ruby-0.1.4.tar.gz && wget http://blue.ribbon.to/~harpy/ming/jaming/jaming-0.1.5.tar.gz && wget http://www.yoshidam.net/uconv-0.4.11.tar.gz && wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.6.7.tar.gz rin@mariko[~/cmp/ming]% for i in * > do > tar xzf $i > done 例のごとく make install 大会。 < ruby > rin@mariko[~/cmp/ming]% cd ruby-1.6.7 rin@mariko[~/cmp/ming/ruby-1.6.7]% ./configure && make && make test rin@mariko[~/cmp/ming/ruby-1.6.7]% su bash-2.04# make install bash-2.04# ruby --version ruby 1.6.7 (2002-03-01) [i686-linux] < jaming > デフォルトだと Makefile の PREFIX が /usr/local/lib になっているので /usr/lib に変更。 ##PREFIX = /usr/local PREFIX = /usr あとは make rin@mariko[~/cmp/ming/jaming-0.1.5]% make rin@mariko[~/cmp/ming/jaming-0.1.5]% su bash-2.04# make install < uconv > rin@mariko[~/cmp/ming]% cd uconv rin@mariko[~/cmp/ming/uconv]% ruby extconf.rb ruby extconf.rb creating Makefile rin@mariko[~/cmp/ming/uconv]% make rin@mariko[~/cmp/ming/uconv]% su bash-2.04# make install < Ming/Ruby > README を読みながら作業。 Ming JaMing が fdb ちうのを使用するらしい。 ttf -> fft -> fdb と変換して fdb を作成する。 http://blue.ribbon.to/~harpy/ming/jaming/usage.html rin@mariko[~/cmp/ming]% cd ming-ruby rin@mariko[~/cmp/ming/ming-ruby]% find /usr -name '*.ttf' -print /usr/X11R6/lib/X11/fonts/TrueType/wadalab-gothic.ttf /usr/X11R6/lib/X11/fonts/TrueType/watanabe-mincho.ttf とりあえず上記 URI に書いてあるとーりに作業してみる。 でも手もとに東風フォントが無いので持って来る。 rin@mariko[~/cmp/ming]% wget http://www.on.ics.keio.ac.jp/~yasu/linux/fonts/kochi-mincho-0.0.20010816.tar.bz2 && wget http://www.on.ics.keio.ac.jp/~yasu/linux/fonts/kochi-gothic-0.2.20020727.tar.bz2 rin@mariko[~/cmp/ming]% tar xIf kochi-mincho-0.0.20010816.tar.bz2 rin@mariko[~/cmp/ming]% tar xIf kochi-gothic-0.2.20020727.tar.bz2 bash-2.04# cd /home/rin/cmp/ming/kochi-mincho bash-2.04# cp fonts/kochi-mincho.ttf /usr/X11R6/lib/X11/fonts/TrueType/ bash-2.04#cp /usr/X11R6/lib/X11/fonts/TrueType/fonts.dir /usr/X11R6/lib/X11/fonts/TrueType/fonts.dir.src bash-2.04# cat examples/fonts.dir.xtt >> /usr/X11R6/lib/X11/fonts/TrueType/fonts.dir < freetype2 > rin@mariko[~/cmp/ming]% wget ftp://ring.so-net.ne.jp/pub/graphics/freetype/freetype2/freetype-2.1.2.tar.gz && tar xzf freetype-2.1.2.tar.gz rin@mariko[~/cmp/ming]% cd freetype-2.1.2 rin@mariko[~/cmp/ming/freetype-2.1.2]% rin@mariko[~/cmp/ming/freetype-2.1.2]% ./configure --prefix=/usr rin@mariko[~/cmp/ming/freetype-2.1.2]% make rin@mariko[~/cmp/ming/freetype-2.1.2]% su bash-2.04# make install < ttf2fft > rin@mariko[~/cmp/ming]% wget http://blue.ribbon.to/~harpy/ming/jaming/ttf2fft.tar.gz && tar xzf ttf2fft.tar.gz && cd ttf2fft rin@mariko[~/cmp/ming/ttf2fft]% make gcc -o ttf2fft *.cxx `freetype-config --cflags` -l/usr/lib/libfreetype.la -lm ttf2fft.cxx: In function `FlashBuffer* createFFTFont()': ttf2fft.cxx:730: `TT_Kern_0_Pair' undeclared (first use this function) ttf2fft.cxx:730: (Each undeclared identifier is reported only once for each function it appears in.) ttf2fft.cxx:730: `pair' undeclared (first use this function) make: *** [ttf2fft] エラー 1 って、 kouchi mincho を fdb にしてあるじゃんか。 http://blue.ribbon.to/~harpy/ming/ttf2fft/ rin@mariko[~/diary/2002]% cd rin@mariko[~/cmp]% cd ming rin@mariko[~/cmp/ming]% wget http://blue.ribbon.to/~harpy/ming/ttf2fft/Kochi_Mincho.fdb.gz rin@mariko[~/cmp/ming]% gunzip Kochi_Mincho.fdb.gz 'Kochi Mincho.fdb' に rename しろと書いてあるが理由が分からないのでそのまま。 rin@mariko[~/cmp/ming]% mv Kochi_Mincho.fdb ~/usr/local/lib < 再度 Ming/Ruby > README.ja どーりに作業。 rin@mariko[~/cmp/ming/ming-ruby]% ruby install.rb config ruby install.rb config install.rb: entering config phase... ---> ext ---> ext/ming ---> ext/ming/ming /usr/local/bin/ruby /home/rin/cmp/ming/ming-ruby/ext/ming/ming/extconf.rb checking for newSWFShape() in -lming... yes checking for ming.h... yes checking for SWFMovie_setButtonSound() in -lming... yes checking for SWFBrowserFont_setFlags() in -lming... yes creating Makefile <--- ext/ming/ming <--- ext/ming <--- ext install.rb: config done. rin@mariko[~/cmp/ming/ming-ruby]% ruby install.rb setup install.rb: entering setup phase... ---> ext ---> ext/ming ---> ext/ming/ming make make: `all' に対して行うべき事はありません。 <--- ext/ming/ming <--- ext/ming <--- ext install.rb: setup done. rin@mariko[~/cmp/ming/ming-ruby]% su su bash-2.04# ruby install.rb install ---> ext ---> ext/ming ---> ext/ming/ming mkdir -p /usr/local/lib/ruby/site_ruby/1.6/i686-linux/ming install ming.so /usr/local/lib/ruby/site_ruby/1.6/i686-linux/ming <--- ext/ming/ming <--- ext/ming <--- ext install.rb: install done. bash-2.04# exit 終わり。 < 実行 > 以下のサイトのサンプルプログラムをだいたいそのまま http://www.aist-nara.ac.jp/~daisu-ik/ruby/ming/ -------------------- ここから ---------------------- #!/usr/local/bin/ruby require 'ming/ming' require 'uconv' include Ming $KCODE = 'e' $THRE_IS_FONT = "#{ENV[ "HOME" ]}/usr/local/lib/Kochi_Mincho.fdb" s = Uconv.euctou8('ヨタヨタ') m = SWFMovie.new t = SWFText.new ##f = SWFFont.new('some_japanese.fdb') # you have to prepare the Japanese font f = SWFFont.new( $THRE_IS_FONT ) # you have to prepare the Japanese font t.set_font(f) t.set_color(0x00, 0x70, 0xc0) t.set_height(48) t.add_string(s) i = m.add(t) i.move_to(100, 150) m.save('yota.swf') -------------------- ここまで ---------------------- 実行する。 怒られた。 rin@mariko[~/work/ruby]% ./m.rb ./m.rb:2:in `require': /usr/lib/libming.so: undefined symbol: floor - /usr/local/lib/ruby/site_ruby/1.6/i686-linux/ming/ming.so (LoadError) from ./m.rb:2 floor は mathlib な関数。 普通は #inlcude してコンパイル時には -lm する( gcc の場合 )。 jaming の Makefile にはどこにも -lm してる所がない。 なぜこれで make が通ったのだろう。 .so って実際にプログラムから呼ばれたときに評価されるんでしょうか。 ライブラリ libming.so を作っている賞味の部分を変更。 rin@mariko[~/cmp/ming/jaming-0.1.5/src]% diff -ur Makefile.src Makefile --- Makefile.src Fri Nov 1 18:33:16 2002 +++ Makefile Fri Nov 1 18:33:29 2002 @@ -22,7 +22,7 @@ cd blocks && make cd actioncompiler && make ${CC} ${OFILES} ${COMPILEROFILES} blocks/*.o -shared -fpic \ - -o libming.so + -o libming.so -lm cp libming.so .. static: ${OFILES} 再度 make して install rin@mariko[~/cmp/ming/jaming-0.1.5]% make clean rin@mariko[~/cmp/ming/jaming-0.1.5]% make rin@mariko[~/cmp/ming/jaming-0.1.5]% su bash-2.04# make install Ming/Ruby も再度 install rin@mariko[~/cmp/ming/ming-ruby]% ruby install.rb config rin@mariko[~/cmp/ming/ming-ruby]% ruby install.rb setup rin@mariko[~/cmp/ming/ming-ruby]% su bash-2.04# ruby install.rb install 上記の サンプルを実行。 rin@mariko[~]% cd work/ruby/ rin@mariko[~/work/ruby]% ./m.rb rin@mariko[~/work/ruby]% cp yota.swf ~/public_html/ あれ。なんも表示されない。 s/ヨタヨタ/yotayota/ して再度実行。 うーむ。 下記 URI に「 裏技のフォントを使っちゃだめぽ 」とある。 Ming/Ruby いじり http://nite.kuicr.kyoto-u.ac.jp/~katayama/ming/ あと、make 時にエラーになった ttf2fft だが 追いかける季力が無いので上記 URI から ttf2fft と makefdb を取得。 実行。 rin@mariko[~/cmp/ming/kochi-gothic/fonts]% ttf2fft kochi-gothic.ttf Converting font kochi-gothic.ttf family: Kochi Gothic style: Regular using charmap: 0: platform: Macintosh, encoding: Roman retrieving chars from current charmap ... found 159 chars using 1-byte char codes retrieving glyphs outlines ... done. generating glyph outlines ... done. using short glyph offsets generating layout writing advance table writing bbox table no kerning table found! rin@mariko[~/cmp/ming/kochi-gothic/fonts]% makefdb KochiGGothic.fft makefdb KochiGGothic.fft Found DefineFont2 block at offset 23 Block length: 8446 Writing Kochi Gothic.fdb, 8448 bytes rin@mariko[~/cmp/ming/kochi-gothic/fonts]% mv 'Kochi Gothic.fdb' 'Kochi_Gothic.fdb' rin@mariko[~/cmp/ming/kochi-gothic/fonts]% cp Kochi_Gothic.fdb ~/usr/local/lib 再度サンプルを実行。 rin@mariko[~]% cd work/ruby/ rin@mariko[~/work/ruby]% ./m.rb rin@mariko[~/work/ruby]% cp yota.swf ~/public_html/ ( つづく )