新漢字→舊漢字   舊漢字を新漢字に  靑空文庫の※を漢字に

説明です
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 において動作確認しています。