|
■ | ローマ字かな変換は人により趣味が異なるようなので、 対応表をもとにしてC/Perl/Lispの変換プログラムを生成するようにしています。 |
■ | デフォルトの対応表はrklistというファイルです。 ひとつの対応表から変換プログラムを生成することにより、 どのプログラムでも同じ変換ができるようになります。 |
■ | かなとローマ字は1対1に対応していません。 rklistではひとつのかなに対して 複数のローマ字を定義してあります。 (e.g. 「fu/ふ」「hu/ふ」) |
■ |
rklistはあまり使わないと思われる定義も
いろいろ含んでいます。
(e.g. 「ca/か」「gwa/ぐぁ」)
rklist.pbtは 普通に使われるエントリだけ残したものです。 Palm版などの辞書を作るときはこの変換表を使っています。 |
■ | 異なる対応表を使えば、 ヘボン式のローマ字を訓令式に変換するといったことができます。 |
Perlのローマ字かな変換プログラム |
■ |
rklist2rkplプログラムで、
rklistの定義にもとづいた
ローマ字かな変換表を生成することができます。
# EUCベースのローマ字/カタカナ変換表を生成 % perl rklist2rkpl rklist > rklist_ke.pl |
■ |
-s オプションでSJISベースの変換表が生成され、
-h オプションでひらがなの変換表が生成されます。
# SJISベースのローマ字/ひらがな変換表を生成 % perl rklist2rkpl -s -h rklist > rklist_hs.pl |
■ |
ローマ字かな変換プログラム本体は
romakana.plで、
ローマ字かな変換関数roma2kana() と
かなローマ字変換kana2roma() が
定義されています。
rklist2rkplで生成された変換表を読み込んだ後で これらの関数を呼びます。 % cat rktest require 'romakana.pl'; require 'rklist_ke.pl'; print &roma2kana('shachou'),"\n"; % perl rktest シャチョウ % |
■ |
kana2roma() は、
可能なあらゆるローマ字パタンをコンマで区切った文字列を返します。
% cat krtest require 'romakana.pl'; require 'rklist_ke.pl'; print &kana2roma('シャチョウ'),"\n"; % perl krtest shachou,shachowu,shacyou,shacyowu,shatyou,shatyowu,... % |
Cのローマ字かな変換プログラム |
■ | rklist2rkcプログラムで、 rklistの定義にもとづいた ローマ字かな変換プログラムを生成することができます。 |
■ |
-s オプションでSJISベースの変換プログラムが生成され、
-h オプションでひらがなの変換プログラムが生成されます。
# SJISベースのローマ字/ひらがな変換プログラムを生成 % perl rklist2rkc -s -h rklist > romakana.c |
■ |
InitRomaTable() でローマ字かな変換表を初期化し、
Roma2Kana() で変換を行なうことができます。
かなからローマ字への変換関数は(今のところ)ありません。
/* romakana.h */ RomaKana *InitRomaTable(); int Roma2Kana(unsigned char *roma, unsigned char *kana, RomaKana *rktable); % cat rktest.c #include "romakana.h" RomaKana *rktable; unsigned char kana[100]; main() { rktable = InitRomaTable(); Roma2Kana("shachou",kana,rktable); printf("%s\n",kana); } % rktest しゃちょう % |
Emacs Lispのローマ字かな変換プログラム |
-s
オプションでSJISベースの変換プログラムが生成され、
-h
オプションでひらがなの変換プログラムが生成されます。
# SJISベースのローマ字/ひらがな変換プログラムを生成 % perl rklist2rkel -s -h rklist > romakana.el
(require 'romakana "romakana.el") (roma2kana "shachou")