Glyph-Keeper をSDL 用にコンパイルする

(03.15 SDL で TrueTypeフォント描画成功!!)
(03.14 コンパイルだけは一応成功、)

概略

SDLにおいてTrueTypeの描画はSDL_ttf がよく使われていますが、 今回はGlyph-Keeperというフォントレンダリングライブラリを使ってフォントを表示する方法を紹介します。

(Glyph-Keeper のヘッダファイル glyph.h は SDL,Allegro 両方から共有できます。またFreeType2.1.9 が必要なので先にインストールしておいてください。)
FreeType 2.1.9のインストールについては、 こちら を参考にしてください。
環境は MacOSX 10.3.8, Xcode1.1, SDL 1.2.8 です。

※最近のバージョンでは makefile が整備されつつある。

ライブラリのコンパイル方法

Glyph-Keeper の解凍された src ディレクトリ内に、 includeディレクトリ を作っておく。
このinclude ディレクトリ の中へ「FreeTypeを 解凍したディレクトリ」 にある include ディレクトリから、
freetype ディレクトリ と ft2build.h ファイルを コピーする 。

SDLを解凍したディレクトリ にある include ディレクトリから いくつかファイルを コピーする
これらのファイルを入れた後の、Glyph-Keeper/include ディレクトリ の中身はこうなっている

Glyph-Keeper/<ディレクトリ>
include <ディレクトリ>
freetype<ディレクトリ>
ft2build.h

SDL.h
SDL_main.h
SDL_types.h
SDL_getenv.h
SDL_error.h
SDL_rwops.h
SDL_timer.h
SDL_audio.h
SDL_cdrom.h
SDL_joystick.h
SDL_events.h
SDL_video.h
SDL_byteorder.h
SDL_version.h
begin_code.h
それで、src ディレクトリに移って、 ターミナルから 次のコマンドを入力

 gcc -W -Wall -O2 -c -s -I./include -DGLYPH_TARGET=GLYPH_TARGET_SDL -o glyph-sdl-osx.o glyph.c
( SDL 用の場合は、説明書によるとターゲットを -DGLYPH_TARGET=GLYPH_TARGET_SDL とする)

In file included from glyph.c:606:
glyph_to_sdl.c: In function `_gk_sdl_putpixel':
glyph_to_sdl.c:151: warning: unused parameter `a'
glyph_to_sdl.c: In function `_gk_put_glyph_any':
glyph_to_sdl.c:204: warning: suggest explicit braces to avoid ambiguous `else'
と warning が出るが glyph-sdl-osx.o が作成される。

ar -rcs libglyph-sdl-osx.a glyph-sdl-osx.o
上のコマンドで 生成した libglyph-sdl-osx.a というファイルを、
 /usr/local/lib/ にコピー。

glyph-keeper-0.22.0/include にある glyph.h というファイルを、
 /usr/local/include/ にコピー。

ライブラリをリンクする場合は、オプションに -lglyph-sdl-osx -lfreetype を追加する。

動作させてみる



使い方はAllegro の場合と同じで、gk_render_line_ 関数を使って、サーフェスに対して直接描画するという方法をとっています。 Xcode で新規SDLアプリケーションのプロジェクトを作成するとSDLの必要最低限のコードができあがっているので、それに追加する形になります。

glyph-keeperをインクルードする。
#define GLYPH_TARGET GLYPH_TARGET_SDL
#include <glyph.h >

SDL_Surface *screen;
screen=SDL_SetVideoMode(640,480, video_bpp, videoflags);

それぞれ宣言も必要。
GLYPH_FACE *face;
GLYPH_REND *rend;

フォント描画処理
face = gk_load_face_from_file("mikachan.ttf",0);//みかちゃんフォント
rend = gk_create_renderer(face,0);
gk_rend_set_size_pixels(rend,32,32);
gk_rend_set_text_color(rend,29,102,185);

gk_render_line_utf8(screen,rend,"Hello, World! ",50,50);
gk_rend_set_text_color(rend,180,50,80);
gk_render_line_utf8(screen,rend,"SDLでTrueTypeFontを表示!",50,100);

最後に、使い終わったら
gk_unload_face (face );//フェイスデータを破棄
gk_library_cleanup();//フォントのメモリを解放

Last modified 2005/03/15 

Tsukubado