新漢字→旧漢字   旧漢字を新漢字に  青空文庫の※を漢字に

説明です
aozora_kanji.pl
青空文庫の作品は、第3水準、第4水準漢字をすべて「※」に置き換えて、[#]タグの中に文字コード情報を記す形となっています。
 (例) 惝 ⇒ ※[#「りっしんべん+淌のつくり」、第3水準1-84-54]
この※と[#]タグをもとの漢字に戻すための変換プログラムです。

○ 「※」の変換について
[#]タグの中に句点番号の無いものは、当然のことながら変換できません。また、「※」が文章の中で普通の記号として使われている場合もあります。
変換した「※」も、残った「※」もその数をカウントして、生成ファイルの末尾に表示します。
変換元ファイルを EmEditor などで開いて「※」を検索、全選択すると一致した個数が表示されます。確認してください。

○ 例外について
[#二の字点、1-2-22]は「〻」に該当する句点番号ですが、ここでは例外措置として「々」に変換します。
また、[#コト、1-2-24]は「ヿ」ですが、ここでは「コト」とします。

ヿは「事」の草書体の一部で、片仮名の一つだそうです。 2音節の仮名です。
例:ヨウナ事柄ヲモアエテ書キ留メルヿニシタ。  谷崎潤一郎 「鍵」

1-1-52 と 1-1-53 の《 》はそれぞれ〈 〉とします。
これらは普通に扱える文字の範囲内ですが、青空文庫ではこの括弧を《ルビ》として使っているため、底本の中に現れる《 》は「※」になっていることがあります。


○ 変換プログラムについて
プログラムが完成するまでの悪戦苦闘ぶりを「cgi版の変換プログラム」に書いています。暇な人はこちらもご覧になってください。
   
kyukanji.pl
旧漢字を新漢字に置き換えます。
旧字の中には現在でも使い分けするなど、広く用いられている漢字もあります。変換したくない漢字があれば、スクリプトの不要な行をコメントアウトしてください。とりあえず、次の6つの文字「櫻 嶽 燈 佛 萬 龍」は変換の対象から外しています。

旧字新字対照表」もご覧ください。

   
shin_to_kyu.pl
新漢字を旧漢字に置き換えます。
実用性はほとんど皆無だろうと思われます。まあ、旧字に慣れて賢くなったような気分になる、それくらいでしょうか。

旧字と新字は、基本的には正字(伝統的漢字)と略字の関係であることが多いのですが、書体の違うものや異体字の一部も旧字と呼ばれることがあるようです。
漢字には手書き文字と活字の違いもあります。活字の誇張の問題もあります。 高校生の頃、「比」の画数を問う試験問題があったのを思い出しました。「比」は4画です。活字の誇張に惑わされてはならない、という出題意図だったと思います。令和の「令」も手書きでこのような字形に書くことはありません。
「羽、羽」「悅、悦」なども筆遣いの違いだけのように思われます。また、漢字源によると「間」は「閒」の俗字なのだそうです。いずれも新旧の関係ではないようですが、とりあえず旧字変換の対象としています。

旧字一覧の中には、よくよく見ないと新字との字形の違いが分からないものもあります。「勉、勉」など、手書きにすれば同じだろうし、別々の文字にする意味があるのだろうかと首を傾げてしまうのですが、それに、旧字に変換しても面白みがないし、フォントが簡易対応になる場合もあるし、テキストリーダーによっては表示できない文字もあります。こういう旧字は変換の対象から除外することにしました。
除外した文字は「旧字新字対照表」の最後の方に記しておきます。

たわむれに、この説明文を旧字変換してみました。実用性は皆無だとしても、なんか楽しい。遊べます。    旧漢字版の説明
   
スクリプトの修正など
○ 生成ファイル名を変更する方法
元ファイルを「青空.txt」だとします。
aozora_kanji.pl では、生成ファイル名を、kanji_青空.txt としています。
これを、
rename($file,$file . ".org");
rename("temp.txt",$file);
とすれば、
生成ファイルが「青空.txt」、元ファイルは「青空.txt.org」となります。
また、
$file =~ s/(.*\.)\w{3,4}/$1/;
rename("temp.txt", $file . "text");
とすれば、
生成ファイルは「青空.text」となり、元のファイルは変更なしです。
元のファイルを残す必要がないのであれば、
unlink($file);
rename("temp.txt", $file);
として、元ファイルを生成ファイルで置き換えることが出来ます。
都合のいいように書き換えてください。

○ 入力フォルダと出力フォルダを別にする方法
作業フォルダは、変数 $crdr に記入します。
$crdr = "./works/"; は適当に書き換えてください。

入力(作業)フォルダを input、出力フォルダを output とするのであれば、
$crdr = "./input/";
rename("temp.txt", "../output/$file");
とします。出力フォルダもあらかじめ作っておいてください。

○ 新旧漢字変換のスクリプト
新旧漢字変換は正規表現で総当たりする原始的なプログラムです。
不要なものがあれば、「#」を付けてコメントアウトしてください。
旧字→新字変換で「櫻」などをコメントアウトしていますが、この要領です。「櫻」も「#」を外せば「桜」に変換出来るようになります。

○ 変換テストのために
青空文庫の「※」を漢字に変換する際には、何度か試してみる必要があります。
そこで、「※」のあるセンテンスだけを抜き出すスクリプトを作りました。
青空文庫の小説など10冊ぐらいworksフォルダにコピーして、 komekome.pl を実行してみてください。生成したkomekome.txtには、「※」のある文だけがコンパクトにまとまっていますので、確認するのに便利です。
下のテキストボックスからコピーしてください。使い方は aozora_kanji.pl などと同じです。

komekome.pl
 

昔々ですが、新潮文庫の百冊というCDROM からテキストファイルを抽出する方法を教わったのがパールとの出会いでした。パールは便利なツールです。

これらのスクリプトは、 Strawberry Perl 5.42.0.1-64bit において動作確認しています。