Ren’Pyで縦書きをする

 Ren’Pyは縦書き機能をサポートしていますが、標準のスクリーンは縦書きサポートしていません。使う人ほぼいないからでしょうね。

https://www.renpy.org/wiki/renpy/ja/doc/cookbook/%E7%B8%A6%E6%9B%B8%E3%81%8D%E3%81%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B

 縦書きにはverticalスタイルをテキストに使用します。新規プロジェクトで試しに以下のように使用してみます。

define v = Character('キャラ名', who_vertical=True, what_vertical=True)


label start:

    scene bg room
    show eileen happy at center
    with dissolve
    v "Ren'Py の新しいゲームを作成しました。"
    v "ストーリー、画像、音楽を追加すれば、世界にリリースすることができます!"

    return

結果はこうなります。通常のsayスクリーンに表示しているのでまあそうなりますね。

 なのでスクリーンを弄って縦書きに対応させます。以下のリンク先でvertical_text変数をフラグにし、Trueなら縦書きスクリーンを表示するようにしました。スクリーン自体でvertical styleを有効化しているので、キャラクターは変えずフラグを変更するだけで切り替えられます。取りあえず形を整えただけですので、実際に使いたい方はサンプルとして参考にするだけで細かい部分を自分でカスタマイズしてください。

https://github.com/kyouryuukunn/renpy/commit/a898d0f2700e8c3eaec2ec29efe5a4329b49e24b

上記の記述でsayスクリーンが以下のように表示されます。

 ここで付属の標準フォント(SourceHanSansLite.ttf)では縦書き未対応のため伸ばし棒の表示がおかしくなります。縦書き対応フォントならちゃんと表示されるはずですが、縦書き対応かはどこの仕様をみればわかるのでしょうね?

 アルファベットも縦に表示されるのでテキスト中でhorizタグで囲めばそこは90時計回りしたような表示になります。line_spacingが小さいと行同士がぶつかって表示がおかしくなるので注意してください。

NVLモードではこんな感じです。ルビスタイルを設定すればちゃんとルビも使えます。注意点としてはルビスタイルは90度回転しているようでxoffsetでなくyoffsetでないと反応しませんでした。

 ちなみに縦書きのノベルゲームには装甲悪鬼 村正があります、縦書き表示のデザイン参考にするとよいでしょう。

Pocket