Ren'Py memo

Ren'Pyの個人的なメモ

ルビ(ふりがな)をオンオフできるようにする

2024/12/04 追記

ルビ(ふりがな)をオンオフできるようにする

引用・参考
https://www.reddit.com/r/RenPy/comments/1gthq3l/enablingdisabling_text_tags/
https://ja.renpy.org/doc/html/text.html#ruby-text
https://ja.renpy.org/doc/html/custom_text_tags.html

ルビの設定
screens.rpy

style ruby_style is default:
    size 30
    yoffset -50
    color None

style say_dialogue:
    ruby_style style.ruby_style

永続変数の設定
options.rpy

default persistent.ruby_pref = False

設定画面を作る
screens.rpy

        if preferences.language == None:
            vbox:
                style_prefix "radio"
                label _("ふりがなの有無")
                null height 30
                hbox:
                    textbutton _("あり") action SetVariable("persistent.ruby_pref", True), Function(gui.rebuild)
                    null width 10
                    textbutton _("なし") action SetVariable("persistent.ruby_pref", False), Function(gui.rebuild)

ルビの設定
options.rpy

        def ruby_tag1(tag, argument, contents):
            if persistent.ruby_pref:
                return [
                        (renpy.TEXT_TAG, u"rt"),
                    ] + contents + [
                        (renpy.TEXT_TAG, u"/rt"),
                    ]
            else:
                return ""

        def ruby_tag2(tag, argument, contents):
            if persistent.ruby_pref:
                return [
                        (renpy.TEXT_TAG, u"rb"),
                    ] + contents + [
                        (renpy.TEXT_TAG, u"/rb"),
                    ]
            else:
                return contents

        config.custom_text_tags["r1"] = ruby_tag1
        config.custom_text_tags["r2"] = ruby_tag2

バックログでスルーされないよう設定
screens.rpy

define gui.history_allow_tags = ("r1", "r2", "rb","rt","alt","noalt","i", "k")

テスト
script.rpy

”{r2}傘{/r2}{r1}かさ{/r1}”

入力した文章を自動でふりがなをつけてくれるツール紹介

accessreading.org

\(([ぁ-ん]+)\){r1}\1{/r1}
半角カッコを正規表現でr1タグに囲って置き換える正規表現

[一-龥]{1,}{r2}$&{/r2}
1文字以上の漢字をr2タグで囲う正規表現

ルビをつけると翻訳テキストが煩雑になる

"{――}時{r1}とき{/r1}は{r2}十二月{/r2}{r1}じゅうにがつ{/r1}の{r2}某日{/r2}{r1}ぼうじつ{/r1}。"

正規表現で除去する。

\{r1\}(.*?)\{\/r1\}
正規表現。r1タグで囲んだひらがなを含んでマッチできます。

\{\/?r2\}
正規表現。r2タグマッチかつ、囲んだ漢字は残したままに出来ます。