新→舊漢字  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 において動作確認しています。