「なろう」から取得した青空文庫形式ファイルと「読書尚友」の相性対策
ここ4年ばかり「小説家になろう」の作品を青空文庫形式に変換してオフラインで楽しんでいます。その中で、たまに変なルビが現れることがありました。
青空文庫の作業マニュアルによると「《》」タイプの山括弧で囲まれた文字をルビとし、ルビを付ける文字列の冒頭に「|」(全角縦棒)があれば「|」以後にルビを付け、「|」が無ければ「前の文節(漢字で構成される部分)」にルビを付ける、という仕様になっています。
「読書尚友」のルビ表示は少しクセがあり、ルビを付ける文字列が独自の区切りになっているようで、さらに「《》」に囲まれているのが何文字でもルビだとみなします。
一方、「小説家になろう」では「《》」についてのルールは無く、作家さんが山括弧として自由に使うことができます。ただ、多くの作家さんは山括弧に(「かっこ」や、キーボードの不等号マーク「<>」で容易に変換できる)「≪≫」を使っておられて、「《》」は稀に出てくる程度のようです。例えば長編の「本好きの下剋上」で「《》」は2カ所だけですし(1つ目はここ、表示例は末尾)、他でもいくつかの小説で数カ所たまたま出てくる程度でした。 ところが最近読み始めた、のの原兎太著「生き残り錬金術師は街で静かに暮らしたい」では冒頭から「《》」を山括弧として多用されていました。「小説家になろう」上での表示例が次なのですが:
narou2az.pyで取得したテキストファイルが次のようになり:
これを「読書尚友」で読むと、前の行の末尾あたりを「前の文節」とみなしてルビになります:
これまで「たまに」化けていたときは、作者さんの狙った字面とはたぶん違うと思いつつ、「《》」をエディタで「≪≫」へ置換していました:
すると「読書尚友」上でも縦書き山括弧として、比較的近い形で読めます:
文中のルビが少ない作品であれば、取得したテキストファイルの「《》」を「≪≫」に全置換してしまえばいいのですが、「生き残り錬金術師は街で静かに暮らしたい」は文中のルビも多く、正しくルビ表示されているところとルビのように文字化けしているところが大いに混在し、ちょっと困ったことになりました。(最も極端な例:「《回復 》」)
そこで、「読書尚友」で読みたい場合用にスクリプトを改造しました。他のアプリでは問題無いかも知れませんし、作者さんの思う字面とも違うでしょうから、別スクリプトに分けることにします。
改造したスクリプトはGitHubのnarou2azリポジトリに「narou2az_d.py」という名前で置いておきました。使い方は従来と同じです。
また、一緒に2つのスクリプトを追加で置いてあります。
1. ruby_chk.py …… ルビでない「《》」があるかチェックし、あった場合はその行番号と行の内容を表示します。
使い方: ruby_chk.py target
2. ruby_conv.py …… いったん「《》」を「≪≫」に全置換し、ルビ開始文字「|」がある場合のみ「《》」にして、ファイル出力します。
使い方: ruby_conv.py input output
以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (2017) おまけ:
「本好きの下剋上」でのルビ化け例:
青空文庫の作業マニュアルによると「《》」タイプの山括弧で囲まれた文字をルビとし、ルビを付ける文字列の冒頭に「|」(全角縦棒)があれば「|」以後にルビを付け、「|」が無ければ「前の文節(漢字で構成される部分)」にルビを付ける、という仕様になっています。
「読書尚友」のルビ表示は少しクセがあり、ルビを付ける文字列が独自の区切りになっているようで、さらに「《》」に囲まれているのが何文字でもルビだとみなします。
一方、「小説家になろう」では「《》」についてのルールは無く、作家さんが山括弧として自由に使うことができます。ただ、多くの作家さんは山括弧に(「かっこ」や、キーボードの不等号マーク「<>」で容易に変換できる)「≪≫」を使っておられて、「《》」は稀に出てくる程度のようです。例えば長編の「本好きの下剋上」で「《》」は2カ所だけですし(1つ目はここ、表示例は末尾)、他でもいくつかの小説で数カ所たまたま出てくる程度でした。 ところが最近読み始めた、のの原兎太著「生き残り錬金術師は街で静かに暮らしたい」では冒頭から「《》」を山括弧として多用されていました。「小説家になろう」上での表示例が次なのですが:
narou2az.pyで取得したテキストファイルが次のようになり:
これを「読書尚友」で読むと、前の行の末尾あたりを「前の文節」とみなしてルビになります:
これまで「たまに」化けていたときは、作者さんの狙った字面とはたぶん違うと思いつつ、「《》」をエディタで「≪≫」へ置換していました:
すると「読書尚友」上でも縦書き山括弧として、比較的近い形で読めます:
文中のルビが少ない作品であれば、取得したテキストファイルの「《》」を「≪≫」に全置換してしまえばいいのですが、「生き残り錬金術師は街で静かに暮らしたい」は文中のルビも多く、正しくルビ表示されているところとルビのように文字化けしているところが大いに混在し、ちょっと困ったことになりました。(最も極端な例:「《
また、一緒に2つのスクリプトを追加で置いてあります。
1. ruby_chk.py …… ルビでない「《》」があるかチェックし、あった場合はその行番号と行の内容を表示します。
使い方: ruby_chk.py target
2. ruby_conv.py …… いったん「《》」を「≪≫」に全置換し、ルビ開始文字「|」がある場合のみ「《》」にして、ファイル出力します。
使い方: ruby_conv.py input output
以上、何かの参考になれば幸いです。 パドラッパ from MacBook Air (2017) おまけ:
「本好きの下剋上」でのルビ化け例:
| 固定リンク | 0
コメント