Narou.rbの縦書化でやっていること
すこしまとめる機会があったので記しておきます。
Narou.rbでは縦書で読みやすくするために以下のようなことをやっています。
- 小数点変換
- 漢数字変換
- 漢数字単位化
- 分数変換
- 感嘆符直後の全角アキ挿入
- 擬似ローマ数字をローマ数字変換
- 特殊記号全角化
- 対の引用符ノノカギ化
- 感嘆符の自然な縦中横化
- 濁点表現のフォント切り替え
- 閉じかぎ括弧直前の句点削除
- …の偶数個化
- 不必要な句読点の削除
- 英単語の全角化及び英文の半角維持
- 行頭かぎ括弧への二分アキ挿入
- 自動判断によるパラグラフ先頭への全角アキ挿入
- 章区切りの自動字下げ及び前後空行挿入
- 節の区切り記号の自動認識による字下げ及び前後空行挿入
- かぎ括弧内の改行を自然に連結
- かぎ括弧のとじ開き不備の検出
- 行末読点による意図的な改行の連結
- ルビで圏点を表現している場合の圏点注記化
- URL文字列を認識した自動リンク
- 前書き・後書きの削除対応
- 無駄な空行の削除
- 日付表現変換
- 連続した中黒を三点リーダーに変換
この説明の中でも更に微妙に細かいことをやっている気がしますけど細かすぎるので略。
とりわけ縦書で読む場合に強烈に悪影響があるのが半角文字が横に倒れるパターン。英単語が横に倒れると見づらく、かといって英文章は全角だとこれまた見苦しいので両方を認識する必要がありますが、ここまでやってるのは見たことがありません。数字も縦中横で対応するのは限界があります。3桁の縦中横は正直かなり見苦しいでしょう。
あとは ・・・ 的な表現を …… へ変換することは導入していませんが、・・・を記号的に使っていたり圏点代わりに使っていたりと誤変換が怖いのでまだ実装していません。
ルビの中は無視したり、・・・の数を計測して多い場合は……への変換、という対応で実装はできそうですが。
3/18 追記
ver.1.1.2 で連続した中黒(・・・)を三点リーダー(……)へ変換する機能を実装しました。 中黒の数に応じて三点リーダーの数を適切に調整します。単純置換で・・・→……と変換した場合だと、・・・・と例えば4個だった場合に、……・ととても不自然になってしまう場合にも対応でき、より自然な変換が可能になります。