新→旧漢字  java script 版  旧→新漢字  青空文庫の※ 

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

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

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

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

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


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

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

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

旧字一覧423文字の中には、よくよく見ないと新字との字形の違いが分からないものもあります。「勉、勉」など、手書きにすれば同じだろうし、別々の文字にする意味があるのだろうかと首を傾げてしまうのですが、それに、旧字に変換しても面白みがないし、フォントが簡易対応になる場合もあるし、テキストリーダーによっては表示できない文字もあります。こういう旧字109文字は変換の対象から除外しました。
perl の shift-jis encode で出力できる漢字だけを変換する basic version も用意しました。こちらはさらに35文字を除外しています。
除外した文字につては「旧字新字対照表」をご覧ください。

たわむれに、この説明文を旧字変換してみました。実用性は皆無だとしても、なんか楽しい。遊べます。    旧漢字版の説明

新漢字を旧漢字に変換する java script 版のページ、作りました。1メガを超える分厚い小説もあっという間です。試してみてください。
   
スクリプトの修正など
○ 生成ファイル名を変更する方法
元ファイルを「青空.txt」だとします。
aozora_kanji.pl では、生成ファイル名を、kanji_青空.txt としています。
これを、
rename($file,$file . ".org");
rename("tmp.txt",$file);
とすれば、
生成ファイルが「青空.txt」、元ファイルは「青空.txt.org」となります。
また、
$file =~ s/(.*)\.\w{3,4}/$1/;
rename("tmp.txt", $file . ".text");
とすれば、
生成ファイルは「青空.text」となり、元のファイルは変更なしです。
元のファイルを残す必要がないのであれば、
unlink($file);
rename("tmp.txt", $file);
として、元ファイルを生成ファイルで置き換えることが出来ます。
都合のいいように書き換えてください。

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

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

○ 新旧漢字変換のスクリプト
新旧漢字変換は正規表現で総当たりする原始的なプログラムです。
不要なものがあれば、「#」を付けてコメントアウトしてください。
java script を修正するときは、「//」を付けてコメントアウトします。

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

komekome.pl
 

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

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