idnkitライブラリが内部で保持する、UincodeやIDNAのテーブルを更新する 方法について記します
idnkitライブラリ (およびidnkitliteライブラリ、以下同様) は、内部に UincodeやIDNAのデータテーブルを保持しています。
このうちたとえばUnicodeのテーブルは、特定のUnicodeのバージョン (例: 6.0.0) に依存したものになっています。 idnkitバージョン2では複数のバージョンのテーブルを保持し、実行時に 切り替えることはできませんので、他のバージョン用のテーブルを使用したい 場合はテーブルを生成してidnkitをコンパイルし直す必要があります。 本書は、テーブルの生成手順について記します。
注意点として、テーブルを再生成すると、もとから同梱されている テーブルファイルは上書きされます。 必要に応じて、もとのファイルは事前にバックアップするなどして下さい。
Unicodeテーブルを生成するには、次のようにします。
Unicode文字データベース (Unicode Character Database) のデータファイル のうち、idnkit用のテーブルを生成しようとしているバージョンのものを入手 します。 データファイルは、次の場所から入手できます。
少なくとも、以下のデータファイルが必要です。
UnicodeData.txt
SpecialCasing.txt
CompositionExclusions.txt
ArabicShaping.txt
Scripts.txt
DerivedCoreProperties.txt
UTS (Unicode Technical Standard) #46のデータファイルのうち、idnkit用 のテーブルを生成しようとしているバージョンのものを入手します。 データファイルは、次の場所から入手できます。
少なくとも、以下のデータファイルが必要です。
IdnaMappingTable.txt
なお、Unicode文字データベースとUTF #46のデータファイルのバージョンは、 同じにすることを強くお薦めします。
入手したUnicode文字データベースとUTF #46のデータファイルを、
idnkitのソースコードを展開すると作成されるdata
サブディレクトリにすべて配置します。
(他のディレクトリに配置することも可能です。詳しくは後述します。)
idnkitのソースコードを展開すると作成されるutil
サブディレクトリにカレントディレクトリを移し、次のコマンドを実行します。
% ./generate_unicodeall.sh Unicodeのバージョン
ここで、Unicodeのバージョンには、Unicode文字データベースと
UTS #46のデータファイルのバージョンを指定します (たとえば、Unicode
6.0.0用であれば "6.0.0")。
../data
以外の場所にデータファイルを配置したときは、
データファイルの場所を-datadir
オプションで指定して下さい。
% ./generate_unicodeall.sh -datadir /somewhere/else Unicodeのバージョン
成功すると、次のようなメッセージが出力されます。
** Generate Unicode version file ** Generate Bidi class table ** Generate Cased table ** Generate Case_Ignorable table ** Generate Combining character table ** Generate Combining class table ** Generate Composition table ** Generate Decomposition table ** Generate Joining type table ** Generate Lowercase table ** Generate Script table ** Generate TR #46 casefold table ** Generate TR #46 validation table ** Generate Width table ** Complete
UnicodeテーブルのCプログラムファイルが、../lib/auto/
に、
ヘッダファイルが../include/idn/auto/
にそれぞれ生成されます。
「idnkitのインストール」にしたがってidnkit
をコンパイルすることで、生成されたテーブルが使用されるようになります。
IDNAテーブルを生成するには、次のようにします。
idnkit用にテーブルを生成したいバージョンのIDNAパラメタ (IDNA Parameters) ファイルのXML版を入手します。 データファイルは、次の場所から入手できます。
http://www.iana.org/assignments/idnabis-tables/idnabis-tables.xml
idnkit用のテーブルを生成するには、PerlパッケージXML::Simpleが必要と なります。
入手したIDNAパラメタファイルを、idnkitのソースコードを展開すると
作成されるdata
サブディレクトリに配置します。
(他のディレクトリに配置することも可能です。詳しくは後述します。)
idnkitのソースコードを展開すると作成されるutil
サブディレクトリにカレントディレクトリを移し、次のコマンドを
実行します。
% ./generate_idnaall.sh [IDNAのバージョン]
ここで、IDNAのバージョンには、IDNAテーブルのバージョンを
指定します。
IDNAのバージョンを省略した際は、XMLデータからバージョン番号
が自動的に決定されます。
../data
以外の場所に
データファイルを配置したときは、データファイルの場所を-datadir
オプションで指定して下さい。
% ./generate_idnaall.sh -datadir /somewhere/else IDNAのバージョン
成功すると、次のようなメッセージが出力されます。
** Generate IDNA version file ** Generate IDNA category table ** Complete
IDNAテーブルのCプログラムファイルが、../lib/auto/
に、
ヘッダファイルが../include/idn/auto/
にそれぞれ生成されます。
「idnkitのインストール」にしたがってidnkit
をコンパイルすることで、生成されたテーブルが使用されるようになります。