テキスト link

Ren'Py にはテキストを表示する方法がいくつかあります。ユーザーにテキストを表示する方法としてまず考えられるのは saymenu ステートメントです。スクリーン言語ステートメント text, textbutton, や label を使ってユーザーインタフェースにテキストを表示することもよくあります。これらやその他の関数は Text() displayable を作成し、それをスクリーンに表示します。

テキスト displayable の役割はユーザーにテキストを表示する工程の管理です。テキスト displayable は次の順序にそって処理されます:

  1. テキストを翻訳する。

  2. データをテキストに置換する。

  3. スタイルとテキストタグを使ってテキストの体裁を整える。

  4. 整えられたテキストをレイアウトする。

  5. テキストをスクリーンに描画する。

この章では Ren'Py のテキスト表示に焦点を当てます。

エスケープ文字 link

Ren'Py のテキスト表示を制御する文字が 3 つあります。クリエータはこれらの文字がエンジンに誤解釈されないよう気をつける必要があります。

\(バックスラッシュ)

バックスラッシュ文字は Ren'Py 、または Python の文字列を書くときの導入に使われます。よく使うエスケープコードは:

\" (バックスラッシュ-ダブルクォート)

ダブルクオートで囲まれた文字列にダブルクオートを含めます。

\' (バックスラッシュ-クォート)

シングルクオートで囲まれた文字列にシングルクオートを含めます。

\ (バックスラッシュ-スペース)

Ren'Py の文字列にスペースを含めます。デフォルトの Ren'Py スクリプトのテキストでは、連続する空白は一つのスペース文字に折りたたまれます。

\n (バックスラッシュ-n)

テキストに改行文字を含めます。

\\ (バックスラッシュ-バックスラッシュ)

テキストにバックスラッシュ文字を含めます。

[ (左角括弧)

左角括弧はテキストへ値の置換を導入するために使われます。テキストに左角括弧自体を含めるには二重にして、 [[ と書いてください。

{ (左波括弧)

左波括弧はテキストタグを導入するために使われます。テキストに左波括弧自体を含めるには二重にして、 {{ と書いてください。

データの置換 link

Ren'Py ではテキスト文字列が表示される前にデータを置換できます。例えば、プレイヤー名が playername 変数に保存されているとすると、台詞をこのように書けます:

g "Welcome to the Nekomimi Institute, [playername]!"

Ren'Py はグローバルスコープに保存されている変数を置換します。スクリーンでテキストウィジェットを使っているときは、Ren'Py はスクリーンのローカル変数も置換します(テキスト displayable にスコープ引数を明示的に与えて、これをオーバーライドできます)。

Ren'Py の置換は単なる変数に限りません。フィールドやタプルの要素も置換できます。ですから、次のコードも書けます

g "My first name is [player.names[0]]."

数を表示するときにはフォーマット化コードを適用できます。次のコードは、浮動小数点数を小数第 2 位まで表示します

$ percent = 100.0 * points / max_points
g "I like you [percent:.2] percent!"

Ren'Py の文字列置換は PEP 3101 文字列フォーマット化構文を引き継いでいます。Ren'Py では { をテキストタグに使うので、文字列フォーマット化に [ を使います。

Python でサポートされている !s!r 変換フラグに加え、 Ren'Py は他にもいくつかのフラグをサポートします。 !q 変換フラグはテキストタグが適切にクォートされていることを保証し、表示する文字列を望まない形式の構造にしません。例

g "Don't pull a fast one on me, [playername!q]."

!t 変換フラグは置換した文字列を翻訳します。

if points > 5:
    $ mood = _("happy")
else:
    $ mood = _("annoyed")

g "I'm [mood!t] to see you."

!i 変換フラグは置換された文字列をさらに置換します。

define earned_points_info = _("[points]{image=points.png} earned points")
g "I'm happy to see you you have [earned_points_info!ti]."

これは置換を含むテキストを置換するのに使用するべきです。スクリーン言語で役立つでしょう。 Const Text も参照してください。

!u フラグはテキストを大文字に、 !l フラグは小文字にします。 !c フラグは最初の一文字にのみ作用し、大文字にします。これらのフラグは組み合わせ可能で、 !cl は最初の文字を大文字、残りを小文字にします。

スタイリングとテキストタグ link

Ren'Py でテキストにスタイル情報を与える方法は 2 つあります。1 つめはテキストのブロック全体に適用されるスタイルを使う方法です。詳細は スタイルシステム 、特に テキストスタイルプロパティー の節を参照してください。

2 つ目はテキストタグを使う方法です。テキストタグはテキストブロックの一部にスタイルを適用するのに向いています。行ごとに同じテキストタグを適用しているようなら、代わりにスタイルの使用を考えてください。

ここに2種類のテキストタグがあります。テキストタグには自動的に閉じるもの(*訳注 自己終了タグ)と、閉じタグが必要なものがあります。複数の閉じタグが使われたときは、最後に開かれたものが最初に閉じられる順になります。Ren'Py は不適切なネストを却下します。例

# This line is correct.
"Plain {b}Bold {i}Bold-Italic{/i} Bold{/b} Plain"

# This line is incorrect, and will cause an error or incorrect
# behavior.
"Plain {b}Bold {i}Bold-Italic{/b} Italic{/i} Plain"

テキストタグには引数を取るものがあります。この場合、タグ名に等号 (=)、引数が続きます。引数には右波括弧文字 (}) を含められません。引数の意味は、テキストタグによって変わります。

全体のテキストタグ link

以下のタグはテキスト全体に適用されます:

a link

アンカータグは自身からその閉じタグまでの間にハイパーリンクを作成します。ハイパーリンクの働きは hyperlink_functions スタイルプロパティーで制御でき、デフォルトの処理は次のように働きます。

  • 引数が jump: で始まるなら、残りの引数はジャンプ先のラベルです。

  • 引数が call: で始まるなら、残りの引数は呼び出し先のラベルです。通常、呼び出しは現在の Ren'Py ステートメントを終わらせます。

  • 引数が call_in_new_context: で始まるなら、残りの引数は( renpy.call_in_new_context() を使用して)新しいコンテキストで呼び出すラベルです。

  • 引数が show: で始まるなら、残りの引数は表示するスクリーンです。

  • 引数が showmenu: で始まるなら、残りの引数は表示するゲーム内選択肢のスクリーンです。

  • そうでなければ、引数はシステムのウェブブラウザで開かれるURLです。

引数にプロトコルセクションはなく、 config.hyperlink_protocol がそのために用意されています。 config.hyperlink_protocol が "jump" に設定されると、 {a=label} と {a=jump:label} は等しくなります。制作者は config.hyperlink_handlers を使って新しいプロトコルを定義できます。

label test:

    e "Why don't you visit {a=https://renpy.org}Ren'Py's home page{/a}?"

    e "Or {a=jump:more_text}here for more info{/a}."

    return

label more_text:

    e "In Hot Springs, Arkansas, there's a statue of Al Capone you can take a picture with."

    e "That's more info, but not the kind you wanted, is it?"

    return
alpha link

alpha テキストタグは自身と閉じたタグ間のテキストを指定の不透明度でレンダリングします。不透明度は 0.0から1.0までの値で、それぞれ完全な透明と不透明に対応します。値の接頭辞に+ または - があると、不透明度はその数だけ変更されます。値の接頭辞が * なら不透明度はその数で乗算されます。:

"{alpha=0.1}This text is barely readable!{/alpha}"
"{alpha=-0.1}This text is 10 percent more transparent than the default.{/alpha}"
"{alpha=*0.5}This text is half as opaque as the default.{/alpha}"
alt link

alt タグはテキストが表示されないようにする一方、読み上げ機能では利用可能にします。

g "Good to see you! {image=heart.png}{alt}heart{/alt}"

alt 文字も参照してください。

art link

代替ルビタグは自身からその閉じタグまでの間のテキストをルビの内容としてマークします。詳細は ルビテキスト の節をご覧ください。

b link

ボールドタグは自身からその閉じタグまでの間をボールドフォントでレンダリングします。:

"An example of {b}bold test{/b}."
color link

カラーテキストタグは自身からその閉じタグまでの間を指定された色でレンダリングします。色は #rgb, #rgba, #rrggbb, または #rrggbbaa の形式にしてください。:

"{color=#f00}Red{/color}, {color=#00ff00}Green{/color}, {color=#0000ffff}Blue{/color}"
cps link

秒あたり文字数タグは自身からその閉じタグまでの間のテキストにおける、テキスト表示の速度を設定します。引数がアスタリスクで始まっていたら、それが現在のテキスト速度に乗ぜられます。そうでなければ、テキストを表示する速度を秒あたりの文字数で与えます。

"{cps=20}Fixed Speed{/cps} {cps=*2}Double Speed{/cps}
font link

フォントタグは自身からその閉じタグまでの間を指定されたフォントでレンダリングします。引数は、使用するフォントのファイル名です。

"Try out the {font=mikachan.ttf}mikachan font{/font}."
i link

イタリックタグは自身からその閉じタグまでの間をイタリック体でレンダリングします。

"Visit the {i}leaning tower of Pisa{/i}."
image link

イメージタグはテキストに画像を挿入する自己終了タグです。画像はテキスト一行の高さであるべきです。引数は画像のファイル名または、image ステートメントで定義された画像でなければなりません。

g "Good to see you! {image=heart.png}{alt}heart{/alt}"
k link

カーニングタグは自身からその閉じタグまでの間の文字のカーニングを調整します。これは浮動小数点数の引数を取り、それが各カーニングペアに加えられるカーニングのピクセル数を与えます(負数にしてカーニングを減ずることもできます)。

"{k=-.5}Negative{/k} Normal {k=.5}Positive{/k}"
noalt link

noalt タグはテキストが読み上げ機能で発話されないようにします。これは alt タグと共に使用され、アクセス可能な視覚的なオプションを提供します。

g "Good to see you! {noalt}<3{/noalt}{alt}heart{/alt}"
outlinecolor link

outlinecolor テキストタグは(影を含む)すべてのアウトラインを指定の色に変更します。色は #rgb, #rgba, #rrggbb, または #rrggbbaa の形式にしてください。:

"Let's have a {outlinecolor=#00ff00}Green{/outlinecolor} outline."
plain link

plain タグはテキストから太字、イタリック、下線、打ち消し線をなくします。

"{b}This is bold. {plain}This is not.{/plain} This is bold.{/b}"
rb link

ルビ下部タグは自身からその閉じタグまでの間のテキストをルビをふる対象としてマークします。詳細は ルビテキスト の節をご覧ください。

rt link

ルビ上部タグは自身からその閉じタグまでの間のテキストをルビの内容としてマークします。詳細は ルビテキスト の節をご覧ください。

s link

打ち消し線タグは自身からその閉じタグまでの間のテキストに打ち消し線を引きます。

g "It's good {s}to see you{/s}."
size link

サイズタグは自身からその閉じタグまでの間のテキストの大きさを変更します。引数は整数で、+ か - を前置できます。引数が整数だけなら、その大きさに設定されます。そうでなければ、大きさが指定された分だけ増減されます。

"{size=+10}Bigger{/size} {size=-10}Smaller{/size} {size=24}24 px{/size}."
space link

スペースタグはテキストに水平スペースを挿入する自己終了タグです。引数として追加されるスペースのピクセル数を与える整数を取ります。

"Before the space.{space=30}After the space."
u link

下線タグは自身からその閉じタグまでの間のテキストに下線を引きます。

g "It's good to {u}see{/u} you."
vspace link

スペースタグはテキストの行間に水平スペースを挿入する自己終了タグです。引数として追加されるスペースのピクセル数を与える整数を取ります。

"Line 1{vspace=30}Line 2"
# link

# で始まるテキストタグは無視されますが、翻訳時に文字列を区別するために加えられます

"New{#playlist}"

台詞のテキストタグ link

台詞にのみ適用されるテキストタグです :

done link

doneタグ後のテキストは表示されません。これにより、 adjust_spacing が True のときでもテキストが飛び回らないようにします。

done タグがあると、その台詞の行はヒストリーバッファに追加されません。 nw タグがあるなら、 done タグより前にあるべきです。

g "Looks like they're{nw}{done} playing with their trebuchet again."
show trebuchet
g "Looks like they're{fast} playing with their trebuchet again."
fast link

テキストの行内に fast タグがあると、低速テキストモードであっても、その前にあるテキストがすべて瞬間表示されます。

g "Looks like they're{nw}"
show trebuchet
g "Looks like they're{fast} playing with their trebuchet again."
nw link

ノーウェイトタグは現在の行が最後まで表示されきった時点で台詞を自動的に消し去る自己終了タグです。

g "Looks like they're{nw}"
show trebuchet
g "Looks like they're{fast} playing with their trebuchet again."

no-wait タグはボイスまたはセルフボイスが完了するまで進行を待ちます。

p link

段落ポーズタグは自己終了タグです。これは現在の段落を終了し、ユーザーがクリックして読み進めるのを待ちます。引数を与えられると、その引数が数字として解釈され、それだけの時間が経過すると自動的に待機が終了します。

"Line 1{p}Line 2{p=1.0}Line 3"
w link

ウェイトタグはユーザーがクリックして読み進めるまで待機する自己終了タグです。引数を与えられると、その引数は数字と解釈され、待機はその秒数が経過後に自動的に終了します。

"Line 1{w} Line 1{w=1.0} Line 1"
clear link

clear テキストタグは NVL モノローグモード でのみ意味があります。テキストブロックを終了しない他は nvl clear ステートメントと同じことをします。

"""
Block 1 on page 1.

Block 2 on page 1.

{clear}

Block 1 on page 2.

etc.
"""

Pythonを使用して カスタムテキストタグ も定義出来ます。

スタイルテキストタグ link

Ren'Py はスタイルにアクセス出来るテキストタグもサポートしています。これらは、タグ名が空であるようなテキストタグです。この場合、引数はスタイルの名前として解釈されます。 例えば {=mystyle} タグは mystyle スタイルにアクセスします。

タグと対応する閉じタグとの間のテキストはそのスタイルで定義された次のプロパティーを持ちます。 :

  • antialias
  • font
  • size
  • bold
  • italic
  • underline
  • strikethrough
  • color
  • black_color
  • kerning

英語以外の言語 link

Ren'Py のデフォルトフォントには、英語やその他多くの文字が含まれています。容量の都合から、中国語、日本語、韓国語などに必要な文字は含まれていません。あるプロジェクトでこれらの言語をサポートするためには、まず使用するフォントを変更しなければなりません。

これだけの設定で、Ren'Py は世界の殆どの言語をサポートするでしょう。しかし、韓国語は分かち書きをするかしないかを選べます。Ren'Py には韓国語の分かち書きをサポートする特別なモードがあり、このコードで有効にできます

define gui.language = "korean-with-spaces"

これは gui.rpy の "unicode" のデフォルトから変更可能です。

日本語には複数の改行方法があります。「 japanese-normal 」で始めて、改行の機会を増やす、または減らすために、それぞれ 「 japanese-loose 」または「 japanese-strict 」に移ることを勧めます。

define gui.language = "japanese-loose"

表意文字の言語には改行が多いです。高速だが不正確な改行アルゴリズムを有効にするには、このコードを使ってください

define gui.language = "greedy"

高速な改行アルゴリズムは、NVL モードのような莫大な量のテキストを表示するゲームでなければ必要有りません。

改行アルゴリズムは renpy.language_tailor() 関数を使用して更に設定出来ます。

縦書き link

vertical スタイルが適切に設定されていると、Ren'Py は縦書きテキストを生成します。そのテキストは上から下。右から左に書かれます。

縦書きテキストに作用する2つのテキストタグがあります。

horiz link

縦書きテキスト内に横書きテキストを含めます。

vert link

横書きテキスト内に縦書きテキストを含めます(これは縦向きの回転を行いません)。

注釈

フォントが縦書きテキストの情報を含んでいない場合、Ren'Py は横書きテキストの情報から縦書き用の情報を生成しようとします。行間隔は Ren'Py のリリースごとに異なる可能性があります。

ルビテキスト link

ルビテキスト (ふりがな表記とも言います) は、文字や単語の上に小さなテキストを配置する方法です。貴方のゲームでルビテキストをサポートするためには必要な手順があります。

まずは、ルビテキストのスタイルを設定します。次のスタイル変更が必要です:

  1. ルビテキストに十分な垂直スペースを残すために、 line_leading プロパティーを使います。

  2. 新しく名前をつけたスタイルを作ります。このスタイルの size などのプロパティーは、ルビテキストに合うように設定します。

  3. 新しいスタイル yoffse を設定し、ルビテキストがベースラインの上に来るようにします。

  4. テキストのスタイルの ruby_style フィールドを、新しく作成されたスタイルに設定します。

style ruby_style is default:
    size 12
    yoffset -20

style say_dialogue:
    line_leading 12
    ruby_style style.ruby_style

(style.style_name を使用してこの目的でスタイルを参照します)

Ren'Py の設定が済めば、{rt} と {rb} を使ってルビテキストを使えます。{rt} タグは、文字がルビテキストとして表示されるようにマークします。ルビテキストの前に {rb} タグで囲まれたテキストがあると、ルビはその上で中央寄せされます。そうでなければ、直前の一文字の上で中央寄せされます。

e "Ruby can be used for furigana (東{rt}とう{/rt} 京{rt}きょう{/rt})."

e "It's also used for translations ({rb}東京{/rb}{rt}Tokyo{/rt})."

クリエータは、ルビテキストがテキストの境界を超えないようにしなければなりません。そのようなエラーが起こらないように、先頭や左右に文字間のスペースを開ける必要があるかもしれません。

Ren'Py は代替テキストタグもサポートします。これは {rt} の代わりに {art} テキストタグで始まり、( ruby_style の代わりに) altruby_style プロパティーを使用します。

フォント link

Ren'Py は Truetype/OpenType フォントと画像ベースのフォントをサポートしています。

Truetype や OpenType フォントは、フォントファイルの名前を与えて指定できます。ファイルはゲームディレクトリーにあるか、アーカイブファイルのひとつでなければなりません。

Ren'Py は、複数のフォントを定義している Truetype コレクションもサポートしています。コレクションにアクセスするときは、0 ベースのフォントインデクス、アットマーク、そしてファイル名の順に使ってください。例えば、「 0@font.ttc 」がコレクションの最初のフォントなら、次は「 1@font.ttc 」、などとなります。

フォントの置き換え link

config.font_replacement_map 変数は、フォントを対応付けるのに使われます。フォントのファイル名、ボールド体、イタリック体の組合せをべつの同様の組合せと対応付けられます。これにより、自動的に生成されたイタリック体の代わりに適切なイタリック体を使用できます。

このようなマッピングによって Deja Vu Sans font のイタリック版を公式の斜体版に置き換えます (web で斜体版をダウンロードする必要があります)。

init python:
    config.font_replacement_map["DejaVuSans.ttf", False, True] = ("DejaVuSans-Oblique.ttf", False, False)

このマッピングでイタリックテキストの見た目が向上します。

画像ベースのフォント link

画像ベースのフォントは、次の登録関数の何れかを呼び出すことで登録できます。画像ベースのフォントの登録には、名前、大きさ、ボールド体、イタリック体、下線付きを指定する必要があります。これらすべてのプロパティーが登録されたフォントに合致するとき、登録されたフォントが使われます。

renpy.register_bmfont(name=None, size=None, bold=False, italics=False, underline=False, filename=None) link

これは、与えられた詳細の BMFont を登録します。なお、size, bold, italic, および underline はすべて (マッチングに使われる) 助言的なものであり、フォントの外見を変えるものではありません。

BMPFont を作成するツールは BMFont home page をご覧ください。Ren'Py は、filename パラメーターが BMFont テキストフォーマットのファイルであることを期待し、 32-bit フォントを記述するものでなければなりません。アルファチャンネルはフォント情報を含まなければならず、そこに Red, Green, および Blue チャンネルが設定されます。 画像ファイル、カーニング、その他の制御情報は BMPFont から読み取られます。

Ren'Py の全てのインタフェースが確実にレンダリングできるように、BMFont にはラテン文字と一般的な句読点を含めることを推奨します。

name

登録するフォントの名前で、文字列です。

size

登録するフォントのサイズで、整数です。

bold

登録するフォントがボールド体であるかどうかの 真偽値です。

italics

登録するフォントがイタリック体であるかどうかの 真偽値です。

underline

このパラメーターは無視されます。

filename

BMFont 制御情報を含むファイルです。

renpy.register_mudgefont(name=None, size=None, bold=False, italics=False, underline=False, filename=None, xml=None, spacewidth=10, default_kern=0, kerns={}) link

これは、指定の書体で MudgeFont を登録します。なお、size, bold, italic, および underline はすべて (マッチングに使われる) 助言的なものであり、フォントの外見を変えるものではありません。

MudgeFonts を作成するツールについては、 MudgeFont home page をご覧ください。Ren'Py は、MudgeFont xml ファイルに見つかった文字コードが Unicode 文字番号であると推測し、負の文字コードを無視します。

name

登録するフォントの名前で、文字列です。

size

登録するフォントのサイズで、整数です。

bold

登録するフォントがボールド体であるかどうかの 真偽値です。

italics

登録するフォントがイタリック体であるかどうかの 真偽値です。

underline

このパラメーターは無視されます。

filename

MudgeFont 画像を含むファイルの文字列です。この画像は通常 TGA ファイルですが、PNG その他の Ren'Py がサポートするフォーマットにもできます。

xml

MudgeFont ツールによって生成された情報を含む xml ファイルです。

spacewidth

空白文字の幅で、整数のピクセル数です。

default_kern

文字間のデフォルトのカーニング間隔で、ピクセル数です。

kerns

二文字の文字列から、その文字間に使われるカーニング間隔へのマッピングです。

renpy.register_sfont(name=None, size=None, bold=False, italics=False, underline=False, filename=None, spacewidth=10, baseline=None, default_kern=0, kerns={}, charset=u'!"#$%&'()*+, -./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~') link

これは、指定の書体で SFont を登録します。なお、size, bold, italic, および underline はすべて (マッチングに使われる) 助言的なものであり、フォントの外見を変えるものではありません。

SFont についてのさらなる情報

name

登録するフォントの名前で、文字列です。

size

登録するフォントのサイズで、整数です。

bold

登録するフォントがボールド体であるかどうかの 真偽値です。

italics

登録するフォントがイタリック体であるかどうかの 真偽値です。

underline

このパラメーターは無視されます。

filename

登録するフォントの名前で、文字列です。

spacewidth

空白文字の幅で、整数のピクセル数です。

baseline

フォントの上端からベースライン (文字を置く不可視のライン) までのピクセルの整数での距離です。このフォントが他のフォントと合成されると、ベースラインで合わせられます。負の値だと代わりにフォントの下端からの距離になり、 None だとベースラインとの距離は高さと同じになります(つまりフォントの最下端になります)。

default_kern

文字間のデフォルトのカーニング間隔で、ピクセル数です。

kerns

二文字の文字列から、その文字間に使われるカーニング間隔へのマッピングです。

charset

フォントの文字セットです。画像で見つかる順に文字を含む文字列です。SFont用のデフォルトの文字セットは次の通りです。

! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _
` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~

BMFont は Ren'Py がサポートする三つの画像フォント中では最も完全なものなので、新しいプロジェクトでは推奨されます。 BMFont の使用例は次の通りです :

init python:
    renpy.register_bmfont("bmfont", 22, filename="bmfont.fnt")

define ebf = Character('Eileen', what_font="bmfont", what_size=22)

label demo_bmfont:

    ebf "Finally, Ren'Py supports BMFonts."

フォントグループ link

マルチ言語のゲームを作成するとき、制作者が意図した雰囲気を保ちつつ、一つのフォントですべてのゲームが使用するシステムをカバーすることは多分不可能です。これをサポートするために、 Ren'Py はフォントグループをサポートして二つ以上のフォントから文字を受け取って一つのフォントに合成出来るようにします。

フォントグループを作成するためには、 FontGroup オブジェクトを作成し、その .add メソッドを一回以上呼び出してください。フォントグループはフォント名が使用可能などこででも使用できます。 add メソッドはユニコードの文字コードの最初と最後を引数にし、ある文字コードをカバーする最初の範囲が使用されます。

style default:
     font FontGroup().add("english.ttf", 0x0020, 0x007f).add("japanese.ttf", 0x0000, 0xffff)
FontGroup() link

フォントグループは一つのフォントとして使用されます。

add(font, start, end, target=None, target_increment=False) link

font と文字の範囲を関連づけます。

start

範囲の始まりです。これは一文字の文字列か、ユニコードのコードポイントの整数です。

end

範囲の終わりです。これは1文字の文字列か、ユニコードコードポイントの整数です。 start が None ならこれは無視されます。

target

与えられれば、特定の範囲の文字を、 target_increment の設定に合わせて指定のフォントの特定の文字に割り当てます。これは1文字の文字列またはユニコードコードポイントの整数です。その文字が既に追加されていればこれは無視されます。

target_increment

True なら、 [start, end] の範囲が [target, target+end-start] の範囲にマッピングされます。 False なら、その範囲の全ての文字がそのターゲット文字に関連づけられます。

複数回の .add() 呼び出しが同じ文字を含めるとき、最初の呼び出しが優先されます。

これは FontGroup を返すので、何回も .add() を呼び出して数珠つなぎに出来ます。

remap(cha, target) link

1つまたは複数の文字をある単一の文字にリマップします。

cha

リマップする文字または文字群です。1文字の文字列、ユニコード番号の整数または範囲の終わりです。これは一文字の文字列か、ユニコードコードポイントの整数、またはそのどちらかのイテレータです。

target

リマップ先の文字です。これは1文字の文字列又はユニコードコードポイントの整数です。

(add や remap により)既にリマップされているどの指定の文字も無視されますが、その FontGroup にデフォルトフォントが無ければ、どんな文字も先に追加されていなければなりません。

同じ理由で、このメソッドも FontGroup を返します。

Text Displayables link

テキストは displayable としても使えます。これによりテキストに transform を適用し、画像であるかのように transform して画面上を移動させられます。

ParameterizedText(style=u'default', **properties) link

これは追加の文字列パラメーターを表示可能な displayable で、文字列を画像のように表示出来ます。これは通常、予め定義された text 画像の一部で使用されます。

show text "Hello, World" at truecenter
with dissolve
pause 1
hide text
with dissolve

ParameterizedText を直接使用して、別のスタイルプロパティーを持つ同じ画像を定義出来ます。例えば次のように書けます。

image top_text = ParameterizedText(xalign=0.5, yalign=0.0)
Text(text, slow=None, scope=None, substitute=None, slow_done=None, mipmap=None, **properties) link

テキストを画面に表示する displayable です。

text

画面に表示するテキストです。これは文字列か、文字列や displayable のリストにできます。

slow

テキストの表示を低速にして一文字づつ打ち出されるようにするかを決定します。None であれば、低速テキストモードは slow_cps スタイルプロパティーによって決定されます。そうでなければ、低速テキストモードを使用するかはこのパラメーターの真偽値によって決定されます。

scope

None を設定するか、テキスト置換を行うための追加のスコープを提供する辞書を指定します。

substitute

True なら、テキスト置換が行われます。 False なら行われません。None なら、 config.new_substitutions で制御されます。

テキストユーソリティー関数 link

renpy.filter_text_tags(s, allow=None, deny=None) link

テキストタグがフィルターされた s のコピーを返します。 allowdeny キーワード引数のどちらかが指定されなければなりません。

allow

許可されたタグのセットです。タグがこのリストになければ、除去されます。

deny

拒否されるタグのセットです。タグがこのリストになければ、文字列に保持されます。

renpy.transform_text(s, function) link

テキストタグと置換はそのままに、 s を変換します。

function

実行するテキストに対応する引数で呼び出される関数で、実行するテキストを置き換えた文字列を返すべきです。

init python:
    def upper(s):
        return s.upper()

$ upper_string = renpy.transform_text("{b}Not Upper{/b}", upper)

低速テキストについて link

Ren'Py では、クリエータやユーザーがテキストの表示を低速にできます。この場合、Ren'Py はテキストをテクスチャにレンダリングし、そのテクスチャからスクリーンに長方形をレンダリングします。

残念ながらこれにより、文字が重複するときにレンダリングが乱れることがあります。このレンダリングの乱れを最小限にするためには、 line_leading および line_spacing を十分大きくとり、行が重複しないようにしてください。最初の行の文字の下部が切り捨てられている、特に line_spacing が負であるなら、 line_overlap_split を増やすことも考えてください。

字詰めをしても水平方向の乱れ起こりえますが、この乱れはたった 1 フレームだけなのでそれほど深刻ではありません。

乱れはメニューやその他のユーザーインターフェースのテキストのような静的なテキストでは問題になりません。

テキストオーバーフローの記録 link

Ren'Py はテキストが許可されたエリアからあふれた場合に記録出来ます。テキストオーバーフローの記録を有効化するためには、次の手順が必要です。

  1. config.debug_text_overflow 変数を True にしましょう。

  2. xmaximumymaximum スタイルをテキストdisplayable かそれを囲むものに適切に設定しましょう。

  3. ゲームを起動します。

利用可能なエリアを超えてテキストが表示されると、 Ren'Py は text_overflow.txt ファイルにエラーを記録します。