gdライブラリで日本語フォントを使用するには?

[上に] [前に] [次に]
やましゅう。 [E-Mail] 2000/01/26(水) 20:40:55
gdを使って、グラフを作成しようとしているのですが、
どこを探しても、日本語フォントの使い方が見つかりません。
どなたかご存知の方がいませんか?

やましゅう。 2000/01/26(水) 20:42:19
追加:
ちなみに、perlを使っています。

B-Cus 2000/01/27(木) 00:37:48
めんどくさい方法ですが、もし日本語版が存在しなかったら
参考にして下さい。VFlib や FreeType などがインストール
されていないサーバでも使える方法としては、こういうのしかないと思う。


文字コードを JIS (ISO-2022-JP) に修正。例えば「あ」は 0x24 0x22。

で、bdf 形式のフォントファイルを入手し、
0x24 0x22 に相当する部分を探す。具体的には以下の部分。

STARTCHAR 2422
ENCODING 9250
SWIDTH 96 0
DWIDTH 16 0
BBX 16 16 0 -2
BITMAP
0200
0200
3FF8
0400
0440
07F0
1C5C
3444
2446
6482
4482
4506
4604
381C
0070
0000
ENDCHAR

で、以下のようにしてビットデータに変換。

%table=(
   0=>'0000',1=>'0001',2=>'0010',3=>'0011',
   4=>'0100',5=>'0101',6=>'0110',7=>'0111',
   8=>'1000',9=>'1001',A=>'1010',B=>'1011',
   C=>'1100',D=>'1101',E=>'1110',F=>'1111',
); # 手抜き。

$data = <<END;
0200
0200
3FF8
0400
0440
07F0
1C5C
3444
2446
6482
4482
4506
4604
381C
0070
0000
END

foreach ( split(/\n/,$data) ){
    foreach (split(//,$_)){
        print "$table{$_}";
    }
    print "\n";
}

そしたら、以下のようにフォントデータが入手できるので、
1の部分にポチポチ点を打てばOK。

0000001000000000
0000001000000000
0011111111111000
0000010000000000
0000010001000000
0000011111110000
0001110001011100
0011010001000100
0010010001000110
0110010010000010
0100010010000010
0100010100000110
0100011000000100
0011100000011100
0000000001110000
0000000000000000

bdf フォントは、
  ftp://ftp.jp.freebsd.org/pub/XFree86/3.3.6/source/X336src-2.tgz
の中の xc/fonts/bdf/misc/ にあります。jiskan16.bdf が 16ドット。
k14.bdf が 14ドット。jiskan24.bdf が24ドット。

B-Cus 2000/01/27(木) 00:44:28
ちなみに、gd 自体には既に日本語フォントを使える仕組みが
入っています。ただし、TrueType サーバがないとダメなような
気がしますが、詳しくはわかりません (FreeType と 日本語
TrueType フォントがインストールされていれば OK?)。

あと、perl の GD モジュールで日本語フォントが使えるのか
どうかは知りません。

やましゅう。 2000/01/27(木) 16:05:05
回答ありがとうございます。
自分には、ちょっと難しいレベルですが、管理者と相談して色々と試してみます。
それでもわからなかったら、またお願いします。

[上に] [前に] [次に]