==========================================
  パッケージについて
==========================================

■ パッケージの名称と配布場所

名称		php-3.0.18-i18n-ja-2
配布場所
	http://ftp.happysize.co.jp/php-ja-jp/
	ftp://ftp.happysize.co.jp/php-ja-jp/
	http://php.vdomains.org/
	ftp://ftp.vdomains.org/pub/php-ja-jp/
	http://php.jpnnet.com/


■ このパッケージは何?

PHPで複数のエンコーディング(SJIS, EUC, UTF-8, JIS)を容易に操作できるよ
うにした国際化バージョンです。現在は日本語しかサポートしてません。

不具合や不都合を発見された場合は、PHP-jp MLまでメールでご報告くださるよう
お願いします。公開の場所にメールを出すことを躊躇される場合は、下記の連絡
先メールアドレスまでメールを下さってもかまいませんが、個別の対応はできな
い場合がありますのでご了承ください。

PHP-jp ML
	mailto:PHP-jp@sidecar.ics.es.osaka-u.ac.jp
	http://sidecar.ics.es.osaka-u.ac.jp/php-jp/


■ 保証と著作権

このソフトウェアには保証はありません。ご自分の責任において使用してくださ
い。

著作権については、各ソースファイルに記述された内容を参照してください。一
般的に、各プログラムの著作権は、その作者が保有しています。著作権を保有し
ている人から提示された条件を満たさない限り、そのプログラムを使用すること
は許されません。


■ 再配布

各ソースファイルに記述されたとおり、このパッケージの一部または全部を再配
布することは、一定の条件を満たした上で自由です。

しかし、特にこのパッケージがベータ版であることもあり、なるべく、パッケー
ジ全体を配布してくださるようお願いいたします。また、開発者としては、パッ
チ(PHP3本体に対するdiff)として流通されることは望んでいません。今後数多
くの方々が議論し、著作をなし、発展させる対象となり得る単一の基点を手に入
れたいと考えます。そのため、今の時点では、パッチにパッチを重ねることによ
る少しづつ異なるバージョンの発生はあまり望みません。


■ だれが作ったの?

有志が集まり「PHP3国際化チーム」として活動しています。このチームとPHP3開
発チームとの特定の関係はありませんが、すでにPHP3開発チームに連絡済みであ
り、将来はPHP3の本体に取りこんでもらうことを期待しています。将来、PHP3の
本体に取りこんでもらうことを想定し、日本語に限定しない「国際化」もしくは
各国語化に対応できるプラットフォームを作成することを目標としています。

協力してくださる方はご連絡下さい。

連絡先メールアドレス
	phpjdev@kage.net

ウェブページのURL
	http://php.jpnnet.com/

目標とする仕様書
	http://www.happysize.co.jp/techie/php-ja-jp/spec.htm

参加者および担当分野
	佐藤 裕紀 
		ウェブページ、開発者用ML管理、開発、全体設計
	金本 茂 
		文字コード変換フィルタ、その他若干
	Tsukada Takuya 
	Jun Kuwamura  - php-3.0.16-i18n-ja パッチ
	廣川 類  -  php-3.0.18-i18n-ja パッチ
	U.Kenkichi 
	舘山  
	その他の方々


■ 今後の課題

・仕様書への合致
・日本語以外のサポート
・日本語用部分の共有ライブラリ化?
・MBCS用文字列操作関数(PHP3関数)の追加。
・日本語専用文字列操作関数の追加。
・テストたくさん。


■ Special Thanks to

PHPのページの広川さん http://www.cityfujisawa.ne.jp/%7Elouis/apps/phpfi/
PHP-JP MLの山本さん http://sidecar.ics.es.osaka-u.ac.jp/php-jp/
これまでのパッチの:くわむらさん、前田さん、浦栃さん、山本さん、村上さん、
内田さん、他の方々



==========================================
  国際化対応版を使用する利点
==========================================

・スクリプトファイル、HTTP出力とで個別の文字コードを使用することができる。
・POST/GET/COOKIEで受け取った値の文字コードを推定することができる。
・文字列に対する文字コード変換機能(PHP3関数)。
・メール送信。本文はJIS、SubjectヘッダはMIME/Base64/JISで。
・HTTP出力のContent-Typeがtext/htmlの場合、適切なcharsetが自動的に指定される。
・安定した文字コード変換。
・マルチバイト正規表現



==========================================
  作成方法
==========================================

■ 概要

configureに対して--enable-i18nというオプションを追加して実行してください。
その他のオプションについては、利用する環境にしたがって通常通り指定してく
ださい。

php3.ini-distを適切な場所(/usr/local/lib/php3.iniなど)にコピーするのを
お忘れなく。すでにPHP3を使っている環境の場合は、php3.ini-distから、

    i18n.

で始まる行をコピーしてください。


■ configure のオプション
    --enable-i18n
      国際化機能を組み込む

    --enable-mbregex
      マルチバイト文字対応正規表現ライブラリを組み込む
      (国際化機能を組み込まない場合には mbereg() 等の PHP関数は機能しません)


■ CGI版の作成例

    % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
    % cd php-3.0.18-i18n-ja-2
    % ./configure --enable-i18n --enable-mbregex
    % make


■ Apache版の作成例

    % tar xvzf php-3.0.18-i18n-ja-2.tar.gz
    % tar xvzf apache_1.3.x.tar.gz
    % cd apache_1.3.x
    % ./configure
    % cd ../php-3.0.18-i18n-ja-2
    % ./configure --with-apache=../apache_1.3.x --enable-i18n --enable-mbregex
    % make
    % make install
    % cd ../apache_1.3.x
    % ./configure --activate-module=src/modules/php3/libphp3.a
    % make
    % make install


■ Apache DSO版の作成例(可能ならこれが一番ラク)

    先にDSO機能付きのApacheを作っておく。
    % tar xvzf apache_1.3.x.tar.gz
    % cd apache-1.3.x
    % ./configure --enable-shared=max
    % make
    % make install

    ここからがPHP3
    % cd php-3.0.18-i18n-ja-2
    % ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-i18n \
        --enable-mbregex
    % make
    % make install



==========================================
  注意点
==========================================

■ 正規表現ライブラリについて

マルチバイト文字用の正規表現ライブラリとして "Ruby" で使用されている
ものを組み込みました。
これによりEUC-JP、SJIS、UTF-8で正規表現が使えるようになります。
この正規表現ライブラリをPHPに組み込むにあたり、Apacheに付属の"HSREGEX"
やシステム付属のライブラリとの競合をさけるため、関数名などを独自のもの
に変更しました。ですから PHP の関数もオリジナルの ereg()などとは別に
mbereg()等を用意しました。
使用する文字コードは i18n.internal_encoding (後述)の設定値により
起動時に初期化されます。


■ バイナリデータの出力(GDなどを使用する場合)について

HTTP出力コードをpass以外に指定した場合、「内部コード」からHTTP出力コードへ
のコード変換が自動的に行われます。この結果、バイナリデータを出力したい場合
に、期待しないコード変換が行われてデータが壊れてしまいます。このような場合
には、HTTP出力コードをpassに指定してください。

    例
	


■ Content-Typeについて

設定したHTTP出力コードに従って適切な
    Content-Type: text/html; charset="..."
を出力する機能が付加されています。次の点に注意してください。

・header()関数によってContent-Typeヘッダを設定した場合はそちらが優先されます。
・スクリプト中でi18n_http_output()関数によって設定する場合は、それよりも
 前に何らかのデータが出力されることの無いようにしてください。何らかのデー
 タが出力される瞬間に全てのヘッダが準備され、出力されます。


■ 問題への対処

何か問題が起きた場合は、どのような条件で起きるのかなどを調べた上で、上記
の方法でご連絡下さいますようお願いします。サンプルのスクリプトを添付して
くださると助かります。

なお、Segmentation Violationなどメモリ関連のトラブルが発生する場合は、
./configureに--enable-debugオプションをつけてビルドしてから動作させると、
詳細なエラーメッセージが得られます。CGI版の場合はHTTP出力に、Apache版の
場合はApacheのエラーログに出力されます。



==========================================
  php3.ini 設定ファイルへの記述
==========================================

以下のキーワードと値をphp3.iniファイルに記述することで、デフォルトの動作
を指定します。これはphp3.iniのglobalセクション(tmp directoryなどを指定す
るブロック)に記述します。

キーワードの大文字、小文字は無視されます。

■ 設定ファイルおよびPHP関数で使用する文字コード名称

    名称には正式名称、エイリアス、MIME名称の3種類があります。

  ・文字コード(エンコーディング)名称の一覧
    - UTF-8
         正式名称 : UTF-8
         エイリアス : "無し"
         MIME名称 : UTF-8

    - ASCII
         正式名称 : ASCII
         エイリアス : "無し"
         MIME名称 : US-ASCII

    - 日本語EUC
         正式名称 : EUC-JP
         エイリアス : EUC, EUC_JP, eucJP, x-euc-jp
         MIME名称 : EUC-JP

    - シフトJIS
         正式名称 : SJIS
         エイリアス : x-sjis, MS_Kanji
         MIME名称 : Shift_JIS

    - JIS
         正式名称 : JIS
         エイリアス : "無し"
         MIME名称 : ISO-2022-JP

    - Quoted-Printable
         正式名称 : Quoted-Printable
         エイリアス : qprint
         MIME名称 : "無し"

    - BASE64
         正式名称 : BASE64
         エイリアス : "無し"
         MIME名称 : "無し"

    - 無変換
         正式名称 : pass
         エイリアス : none
         MIME名称 : "無し"

    - 入力自動判定
         正式名称 : auto
         エイリアス : unknown
         MIME名称 : "無し"


■ i18n.http_output デフォルトのHTTP出力コードの指定

    i18n.http_output = EUC-JP|SJIS|JIS|UTF-8|pass
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	pass: 無変換

    指定が無い場合は無変換です(内部コードがそのまま出力される)。
    i18n_http_output()関数で一時的に変更することができます。
    この設定値が i18n.internal_encoding の文字コードと異なる場合は
    出力の際に文字コードの変換が行われます。


■ i18n.internal_encoding 内部コードの指定

    i18n.internal_encoding = EUC-JP|SJIS|UTF-8
	EUC-JP : EUC
	SJIS: SJIS
	UTF-8: UTF-8

    指定が無い場合はEUC-JPです。

    PHP のパーサは ISO-8859-1 を前提に作られているのだと考えられます。
    それ以外のエンコーディングについては
      ・バイト単位のエンコーディング
      ・シングルバイト文字の 00h〜7Fh が ASCII と互換性がある
      ・マルチバイト文字の中に 00h〜7Fh が現れない
    の条件を満たしていれば問題無く使えると思います。
    日本語では EUC-JP と UTF-8 になります。

    i18n.internal_encoding と i18n.http_output が異なる場合には
    出力の際に変換されますが、スクリプト上で URLエンコード、BASE64、
    Quoted-Printable などの変換を行ってしまうと、
    その部分は i18n.internal_encoding のままになります。
    ですから文字列に何らかの変換を加える前には i18n_convert()で
    i18n.http_output のエンコーディングに変換すると問題が起こる
    可能性が低くなります。
    例)
        $str = urlencode( i18n_convert($str, i18n_http_output()) );

    また、内部コードで ISO-2022-**、HZエンコーディング 等のように
    シフトシーケンスを使用して文字セットを切りかえるエンコーディング
    は使用できません。そのようなエンコーディングの問題点は、
      ・パーサーでエラーになる。
      ・magic_quotes_***で文字列が壊れる。(SJISでも問題あり?)
      ・文字処理関数、正規表現関数が正常に動作しない。


■ i18n.script_encoding スクリプトファイルのコードの指定

    i18n.script_encoding = auto|EUC-JP|SJIS|JIS|UTF-8
	auto: 自動判定
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8

    指定が無い場合はautoです。
    ファイルから読み込んだ文字列はパーサに入る前にi18n.internal_encoding
    で指定した内部コードに変換されます。

    この設定を auto とする場合の注意点として、
    文字コードの "自動判定" は失敗する場合もあります!!
    auto の設定でマルチバイト文字列を使う場合には、スクリプトの始めに
    マルチバイト文字列のコメントを書いておいて、確実にエンコーディング
    の判定が行われるようにしておくと良いでしょう。


■ i18n.http_input HTTPからの入力の取り扱いの指定

    i18n.http_input = pass|auto
	auto: 自動判定
	pass: 無変換

    指定が無い場合はautoです。
    pass を指定した場合は変換を行いません。
    auto を指定した場合は入力の文字コードを判定します。
    文字コードが確定できた場合には、その文字コードから内部コードへ
    変換が行われます。確定できない場合は i18n.http_input_default の
    設定により処理されます。


■ i18n.http_input_default  HTTPからの入力のデフォルト

    i18n.http_input_default = pass|EUC-JP|SJIS|JIS|UTF-8
	pass: 無変換
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8

    指定が無い場合は pass です。
    この設定は i18n.http_input が auto の場合のみ有効です。
    入力の文字コードが確実に判定できない場合には、文字コードが
    この設定値であるものとして処理を行います。
    pass を指定した場合は変換を行いません。
    EUC-JP、SJIS、JIS、UTF-8 を指定した場合はこれらの文字コードから
    内部コードへの変換が行われます。


■ 設定例

  1)  これは設定の自由度と、これまでに分かっているさまざまな問題を
      考慮したもので、これを使いこなせばベストだと思います。
      しかし文字コードや HTTP に関して知識が少ないと問題が
      起こった時に原因の究明が難しいかもしれません。

    i18n.http_output = SJIS
    i18n.internal_encoding = EUC-JP
    i18n.script_encoding = auto
    i18n.http_input = auto
    i18n.http_input_default = SJIS


  2)  原因不明の問題に悩みたくなければ、この設定で開発するのが
      良いかもしれません。

    i18n.http_output = pass
    i18n.internal_encoding = EUC-JP
    i18n.script_encoding = pass
    i18n.http_input = pass
    i18n.http_input_default = pass



==========================================
  PHP関数
==========================================

以下にPHPに追加された関数と使用法を示します。

キーワードの大文字、小文字は無視されます。

■ i18n_http_output(文字コード)
■ 文字コード = i18n_http_output()

    HTTP出力の文字コードを設定します。以降、ここで指定した文字コードで出
    力されます。また、引数を指定しないで呼び出すと、現在使用されている
    HTTP出力の文字コードの名称が文字列として返されます。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	pass: 無変換


■ 文字コード = i18n_internal_encoding()

    現在の「内部コード」の名称が文字列として返されます。

    内部コード
	EUC-JP : EUC
	SJIS: SJIS
	UTF-8: UTF-8


■ 文字コード = i18n_http_input()

    HTTP入力の文字コード判定結果が返されます。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	pass: 無変換(i18n.http_inputでpassとした場合)


■ 文字列 = i18n_convert(文字列, 文字コード)
■ 文字列 = i18n_convert(文字列, 文字コード, 変換前の文字コード)

    文字列を指定した文字コードに変換します。変換前の文字コードを指定しな
    い場合は、文字列が現在の「内部コード」で記憶されているものとして変換
    します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	pass: 無変換

    変換前の文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	pass: 無変換
	auto: 自動認識


■ 文字コード = i18n_discover_encoding(文字列)

    文字列の文字コードを判定します

    文字コード
	EUC-JP: EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	ASCII: ASCII(09h, 0Ah, 0Dh, 20h-7Ehのコードのみ)
	pass: 判定不可(文字列が短い場合など)
    unknown: 不明(処理のエラー等も含む)


■ 整数 = mbstrlen(文字列)
■ 整数 = mbstrlen(文字列, 文字コード)

    文字列に含まれる文字の数を答えます。文字コードを指定しない場合は、文
    字列が現在の「内部コード」で記憶されているものとして処理します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8
	auto: 自動認識


■ 整数 = mbstrpos(文字列1, 文字列2)
■ 整数 = mbstrpos(文字列1, 文字列2, 開始位置)
■ 整数 = mbstrpos(文字列1, 文字列2, 開始位置, 文字コード)

    strpos()と同等の処理を、文字数に基づいて行います。文字コードを指定し
    ない場合は、文字列が現在の「内部コード」で記憶されているものとして処
    理します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8


■ 整数 = mbstrrpos(文字列1, 文字列2)
■ 整数 = mbstrrpos(文字列1, 文字列2, 文字コード)

    strrpos()と同等の処理を、文字数に基づいて行います。文字コードを指定し
    ない場合は、文字列が現在の「内部コード」で記憶されているものとして処
    理します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8


■ 文字列 = mbsubstr(文字列, 位置)
■ 文字列 = mbsubstr(文字列, 位置, 長さ)
■ 文字列 = mbsubstr(文字列, 位置, 長さ, 文字コード)

    substr()と同等の処理を、文字数に基づいて行います。文字コードを指定し
    ない場合は、文字列が現在の「内部コード」で記憶されているものとして処
    理します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8


■ 文字列 = mbstrcut(文字列, 位置)
■ 文字列 = mbstrcut(文字列, 位置, 長さ)
■ 文字列 = mbstrcut(文字列, 位置, 長さ, 文字コード)

    substr()と同様の処理を行いますが、位置がマルチバイト文字の2バイト目
    以降の場合はその文字の1バイト目から始め、長さに収まり、且つマルチバ
    イト文字またはシフトシーケンスの途中とならない最大の位置まで文字列を
    切り取ります。文字コードを指定しない場合は、文字列が現在の「内部コード」
    で記憶されているものとして処理します。

    文字コード
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8


■ 文字列 = i18n_mime_header_encode(文字列)
    文字列をMIMEヘッダーエンコードします。(=?ISO-2022-JP?B?[文字列]?=の形式)


■ 文字列 = i18n_mime_header_decode(文字列)
    MIMEヘッダーエンコードされた文字列をデコードします。


■ 文字列 = i18n_ja_jp_hantozen(文字列)
■ 文字列 = i18n_ja_jp_hantozen(文字列, オプション)
■ 文字列 = i18n_ja_jp_hantozen(文字列, オプション, 文字コード)

    文字列の半角と全角の変換をします。

    オプション
    下記文字の組み合わせで指定。デフォルト "KV"

    "r" :  英字を全角から半角に変換

    "R" :  英字を半角から全角に変換

    "n" :  数字を全角から半角に変換

    "N" :  数字を半角から全角に変換

    "a" :  英数字(21h - 7Eh)を全角から半角に変換

    "A" :  英数字(21h - 7Eh)を半角から全角に変換

    "k" :  全角カタカナを半角カナに変換

    "K" :  半角カナを全角カタカナに変換

    "h" :  全角ひらがなを半角カナに変換

    "H" :  半角カナを全角ひらがなに変換

    "c" :  全角カタカナを全角ひらがなに変換

    "C" :  全角ひらがなを全角カタカナに変換

    "V" :  濁音記号を貼り付けて一文字にする、"K"、"H"と組み合わせて使用

    文字コード
    文字コードを指定しない場合は、文字列が現在の「内部コード」で記憶され
    ているものとして処理します。
	EUC-JP : EUC
	SJIS: SJIS
	JIS : JIS
	UTF-8: UTF-8

■ 整数 = mbereg(正規表現, 文字列, [一致配列])
■ 整数 = mberegi(正規表現, 文字列, [一致配列])
    ereg()、eregi()のマルチバイト文字対応版


■ 文字列 = mbereg_replace(正規表現, 置換文字列, 文字列)
■ 文字列 = mberegi_replace(正規表現, 置換文字列, 文字列)
    ereg_replace()、eregi_replace()のマルチバイト文字対応版


■ 配列 = mbsplit(正規表現, 文字列, 上限値)
    split()のマルチバイト文字対応版



==========================================
  FAQ (よくある質問)
==========================================

ここではPHP-jpでとりあげられた問題などを簡単にまとめてみました。


■ GETメソッドに日本語を使う

PHPに何らかの処理をさせてアンカーに「xxxx.php?data=日本語」を指定する
場合、PHPでurlencodeをしてください。urlencodeをしないと、ブラウザによっ
ては正しくデータを渡せなくなります。

例:Link


■ 一部の文字の後に必ず`\'がつく

内部エンコードをShift_JISにしたとき、一部の文字の後に必ず`\'がついたり、
それ以外の場合でも`"'などの文字が`\"'のようにクォートされる。

PHPの設定であるmagic_quotes_gpcがデフォルトで有効(On)になっているのが
原因です。php3.ini(もしくは、.htaccess)の設定を無効(Off)にするか、スク
リプト側で、StripSlashes関数を使うことによって取り除くことが出来ます。

また、日本語文字列だけ取り除くには、$quote_strが、Shift_JISで表現されて
いるならば ereg_replace関数を用いて、

ereg_replace(sprintf("([%c-%c%c-%c]\\\\)\\\\",0x81,0x9f,0xe0,0xfc),
	"\\1",$quote_str);

とすれば、可能です。

Shift_JISでの「一部の文字」の例(部分):
―⊇そソЫ綾噂化浬棺欺興圭現構砂蚕悉十晶申製曾遜箪捗貼峠能判表塀暴冥予僚禄


■ たまにPOSTで渡したデータがおかしい(コード認識問題)

もしi18n_http_input()がpassを返してくるようでしたら、漢字のコード認識が
できなかった事です。これはSJISとEUCのコードが非常に似ている為発生する
現象であり、長めの日本語テキストをで
隠し渡してあげると解決します。



==========================================
  日本語マニュアル
==========================================

"PHP3 日本語マニュアル作成プロジェクト"の方々が翻訳されたマニュアル:

http://www.php.net/manual/ja/manual.php

* 3.0.18-i18n-ja 以降、doc-jp をパッケージから外しました。



==========================================
  更新履歴
==========================================

■ php-3.0.18: 

o 2000-10-28, 廣川 類 

  このパッチは、PHP国際化チームによる php-3.0.15-i18n-ja および
桑村氏が作成された PHP-3.0.16 への i18n-ja パッチを php-3.0.18
に適用したもので、前記のパッチに対して以下のような変更を行って
います。

1. mail 関数で charset をオプション引数により指定可能とするパッチを施し
   ています。(i18n.c)
2. mbregex 関数のソースにおいてシステムのregex関数の定義との衝突を
   避けるため、re* -> mbre* の名前変更を行っています。
3. php3.ini-dist において設定値を以下のように変更しています。
    旧: i18n.http_output = SJIS
    新: i18n.http_output = PASS

o 2000-11-24, 佐藤 裕紀 

  上記のパッチを導入し、gdのTTF出力部分、configure でgdImageStringTTF
をチェックするように修正。動作確認済み (RH 6.2使用):

gd-1.3-6, gd-devel-1.3-6, freetype-1.3.1-5, freetype-devel-1.3.1-5
	ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf",
		i18n_convert("日本語"));
	ImageGif($im);

gd-1.7.3-1k1, gd-devel-1.7.3-1k1, freetype-1.3.1-5, freetype-devel-1.3.1-5
	ImageTTFText($im,$size,$angle,$x1,$y1,$color,"/path/to/font.ttf","日本語");
	ImagePng($im);
	* i18n_internal_encoding = EUC 又は SJIS

gd-1.6.2以前のバージョンはinternal_encodingがUTF-8でない場合、i18n_convertを
使う必要がある。gd-1.6.2/3は1.7以上にアップグレードすればi18n_convertを使わ
ないでも内部コードのEUC又はSJISでImageTTFText使える。注意点にも書いてあります
が、イメージ出力の際にはi18n_http_output("pass")を忘れずに!

o 2000-12-09, 廣川 類 

  mail()内でheaderがNULLの場合にsegmentation faultする部分を修正。