プログラミング

oyagameで日本語を使う

2008年5月30日

oyagameで日本語を表示するのは、意外と簡単であることが分かった。これに気がつくのを難しくしていた原因は、私の今のPC環境でShift-JISがうまく使えなかったことにあった。

OSで日本語がちゃんと使える環境になると、oyagameでの日本語表示は簡単。

もしもし亀よ


SDL_ttfではUNICODEを用いれば日本語表示ができることが、わかっていた。もともと、COMの呼び出しでは文字列としてUNICODEが使われており、Shift-JISからUNICODEへの変換は自動的にWSHがしてくれるので、先の記事のような難しいことをする必要は一切無かった。上記テストスクリプトのソースコードは以下のとおり。

set SDL=CreateObject("sfcmini.oyagame")
execute SDL.ConstVBS
SDL.Init(SDL_INIT_EVERYTHING)
set surface=SDL.SetVideoMode(200,100,32,SDL_HWSURFACE+SDL_DOUBLEBUFF)
set TTF=CreateObject("sfcmini.oyagame")
call TTF.LoadLibrary("SDL_ttf.dll","TTF_")
TTF.Init()
font=TTF.OpenFont("c:\windows\fonts\msgothic.ttc",16)
call TTF.LoadLibraryW("SDL_ttf.dll","TTF_")
text=TTF.RenderUNICODE_Solid(font,"もしもし亀よ、親亀さん!",&Hffffff)
set text=SDL.CreateStructure("SDL_Surface",text)
set ev=SDL.CreateStructure("SDL_Event")
call SDL.BlitSurface(text,0,surface,text.clip_rect)
SDL.Flip(surface)
do
  SDL.WaitEvent(ev)
loop until ev.type=SDL_QUIT

一箇所だけ工夫しないといけない点がある。上記ソースコードからその部分だけピックアップしたのが、下。
call TTF.LoadLibrary("SDL_ttf.dll","TTF_")
TTF.Init()
font=TTF.OpenFont("c:\windows\fonts\msgothic.ttc",16)
call TTF.LoadLibraryW("SDL_ttf.dll","TTF_")
まずLoadLibrary()でライブラリ呼び出しを行い、Init()とOpenFont()を行った後、LoadLibraryW()でもう一度ライブラリ呼び出しを行っている。このような煩雑な手続きになるのはOpenFont()ではANSI文字列を、RenderUNICODE_Solid()ではUNICODE文字列を使わないといけないためである。今のoyagameの仕様では、この手続きを覚えるしかない。Pygame互換のインターフェースを整備すれば、もっと簡単に日本語が使えるようになるだろう。

コメント

コメントはありません

コメント送信