カスタムテキストタグ link

Ren'Pyはテキストタグの定義をサポートしています。これらのテキストタグは、内部でテキストやその他のタグを追加削除してテキストやタグを扱えます。

カスタムテキストタグはテキストタグ関数を config.custom_text_tags の辞書に加えれば作成出来ます。

define config.custom_text_tags link

テキストタグの名前からテキストタグ関数への辞書です。

テキストタグ関数は 3 つの引数を取ります。 : タグ自身とそのタグへの引数、内容のタプルのリストです。 例えば以下のテキストでは

"{big=2}Hello, {b}World{/b}{/big}"

タグは "big" であり、引数は文字列の "2" に、内容のタプルは以下になります。

[
    (renpy.TEXT_TEXT, "Hello, "),
    (renpy.TEXT_TAG, "b"),
    (renpy.TEXT_TEXT, "World"),
    (renpy.TEXT_TAG, "/b"),
]

テキストタグ関数は新しい内容のタプルのリストを返すべきで、それを使用して、テキストタグとその内容を置き換えます。

内容のタプルは 2 つの要素で構成されます。最初の要素は以下のリストにある定数の 1 つです。 2 つ目の要素は後述するとおり、最初の要素により様々です。

renpy.TEXT_TEXT

2 つ目の要素はユーザーに表示されることを意図したテキストです。

renpy.TEXT_TAG

2 つ目の要素はテキストタグの中身で、閉じ括弧は含みません。

renpy.TEXT_DISPLAYABLE

2 つ目の要素はテキストに埋め込まれる displayable です。

renpy.TEXT_PARAGRAPH

これは段落分けを表し、2 つ目の要素は未定義です(が、なくてはなりません)。

注意 link

{p} や {w}, {nw}, {fast} のような台詞のテキストタグはカスタムテキストタグの前に処理されます。また、カスタムテキストタグ内には含まないか、変更せずに渡すべきです。

link

例えば big テキストタグは {size} テキストタグのように動作しますが、その引数を乗算して適用します。

init python:

    def big_tag(tag, argument, contents):

        size = int(argument) * 20

        return [
                (renpy.TEXT_TAG, u"size={}".format(size)),
            ] + contents + [
                (renpy.TEXT_TAG, u"/size"),
            ]

    config.custom_text_tags["big"] = big_tag


"This is {big=3}BIG!{/big}"

例えば rot13 テキストタグは rot13 変換をテキストに適用します。 rot26 - rot13 は 2 回適用されると元のテキストに戻ることに注意してください。

init python:

    def rot13_tag(tag, argument, contents):
        rv = [ ]

        for kind, text in contents:

            if kind == renpy.TEXT_TEXT:
                text = text.encode("rot13")

            rv.append((kind, text))

        return rv

    config.custom_text_tags["rot13"] = rot13_tag

"Rot0. {rot13}Rot13. {rot13}Rot26. {/rot13}Rot13. {/rot13}Rot0."