Ren'Py にはテキストを表示する方法がいくつかあります。ユーザーにテキストを表示する方法としてまず考えられるのは say や menu ステートメントです。スクリーン言語ステートメント text, textbutton, や label を使ってユーザーインタフェースにテキストを表示することもよくあります。これらやその他の関数は Text()
displayable を作成し、それをスクリーンに表示します。
テキスト displayable の役割はユーザーにテキストを表示する工程の管理です。テキスト displayable は次の順序にそって処理されます:
テキストを翻訳する。
データをテキストに置換する。
スタイルとテキストタグを使ってテキストの体裁を整える。
整えられたテキストをレイアウトする。
テキストをスクリーンに描画する。
この章では Ren'Py のテキスト表示に焦点を当てます。
Ren'Py のテキスト表示を制御する文字が 3 つあります。クリエータはこれらの文字がエンジンに誤解釈されないよう気をつける必要があります。
バックスラッシュ文字は Ren'Py 、または Python の文字列を書くときの導入に使われます。よく使うエスケープコードは:
ダブルクオートで囲まれた文字列にダブルクオートを含めます。
シングルクオートで囲まれた文字列にシングルクオートを含めます。
Ren'Py の文字列にスペースを含めます。デフォルトの Ren'Py スクリプトのテキストでは、連続する空白は一つのスペース文字に折りたたまれます。
テキストに改行文字を含めます。
テキストにバックスラッシュ文字を含めます。
テキストに保護されたパーセント文字を含めます。 %% としても書けます。 :どちらの保護でも、最終的に1つ % 文字が書かれます。
左角括弧はテキストへ値の置換を導入するために使われます。テキストに左角括弧自体を含めるには二重にして、 [[
と書いてください。
左波括弧はテキストタグを導入するために使われます。テキストに左波括弧自体を含めるには二重にして、 {{
と書いてください。
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
は最初の文字を大文字、残りを小文字にします。
注意点として :
フラグの指定順は結果を変更しません。 : !cl
は !lc
と同じく動作します。
また、感嘆符は無視されるので前のルールを回避できません: !l!c
は !c!l
や !cl
と同じです。
変換は次の順で実施されます。 :
r
/s
(repr または str)
t
(translate)i
(recursive interpolation)q
(quoting)u
(uppercase)l
(lowercase)c
(capitalize)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"
テキストタグには引数を取るものがあります。この場合、タグ名に等号 (=)、引数が続きます。引数には右波括弧文字 (}) を含められません。引数の意味は、テキストタグによって変わります。
以下のタグはテキスト全体に適用されます:
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
linkalpha テキストタグは自身と閉じたタグ間のテキストを指定の不透明度でレンダリングします。不透明度は 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
linkalt タグはテキストが表示されないようにする一方、読み上げ機能では利用可能にします。
g "Good to see you! {image=heart.png}{alt}heart{/alt}"
alt
文字も参照してください。
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
linknoalt タグはテキストが読み上げ機能で発話されないようにします。これは alt タグと共に使用され、アクセス可能な視覚的なオプションを提供します。
g "Good to see you! {noalt}<3{/noalt}{alt}heart{/alt}"
outlinecolor
linkoutlinecolor テキストタグは(影を含む)すべてのアウトラインを指定の色に変更します。色は #rgb, #rgba, #rrggbb, または #rrggbbaa の形式にしてください(訳注 このタグは既存のアウトラインの色を変更するものなので、変更前にアウトラインがなければ機能しません。通常アウトラインを使用しない場合、このタグを使用するには予め透明なアウトラインを使用するなどの必要があります)。:
"Let's have a {outlinecolor=#00ff00}Green{/outlinecolor} outline."
plain
linkplain タグはテキストから太字、イタリック、下線、打ち消し線をなくします。
"{b}This is bold. {plain}This is not.{/plain} This is bold.{/b}"
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
linkvスペースタグはテキストの行間に垂直スペースを挿入する自己終了タグです。引数として追加されるスペースのピクセル数を与える整数を取ります。
"Line 1{vspace=30}Line 2"
#
link# で始まるテキストタグは無視されますが、これを加えて翻訳時に文字列を区別できます。
"New{#playlist}"
台詞にのみ適用されるテキストタグです :
done
linkdoneタグ後のテキストは表示されません。これにより、 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
linkclear テキストタグは NVL モノローグモード でのみ意味があります。テキストブロックを終了しない他は nvl clear
ステートメントと同じことをします。
"""
Block 1 on page 1.
Block 2 on page 1.
{clear}
Block 1 on page 2.
etc.
"""
Pythonを使用して カスタムテキストタグ も定義出来ます。
Ren'Py はスタイルにアクセス出来るテキストタグもサポートしています。これらは、タグ名が空であるようなテキストタグです。この場合、引数はスタイルの名前として解釈されます。 例えば {=mystyle} タグは mystyle
スタイルにアクセスします。
タグと対応する閉じタグとの間のテキストはそのスタイルで定義された次のプロパティーを持ちます。 :
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()
関数を使用して更に設定出来ます。
vertical
スタイルが適切に設定されていると、Ren'Py は縦書きテキストを生成します。そのテキストは上から下。右から左に書かれます(訳注: 標準のsay, nvl スクリーンは縦書きをサポートしていません。 参照)。
縦書きテキストに作用する2つのテキストタグがあります。
horiz
link縦書きテキスト内に横書きテキストを含めます。
vert
link横書きテキスト内に縦書きテキストを含めます(これは縦向きの回転を行いません)。
注釈
フォントが縦書きテキストの情報を含んでいない場合、Ren'Py は横書きテキストの情報から縦書き用の情報を生成しようとします。行間隔は Ren'Py のリリースごとに異なる可能性があります。
ルビテキスト (ふりがな表記とも言います) は、文字や単語の上に小さなテキストを配置する方法です。貴方のゲームでルビテキストをサポートするためには必要な手順があります。
まずは、ルビテキストのスタイルを設定します。次のスタイル変更が必要です:
ルビテキストに十分な垂直スペースを残すために、 line_leading
プロパティーを使います。
新しく名前をつけたスタイルを作ります。このスタイルの size
などのプロパティーは、ルビテキストに合うように設定します。
新しいスタイル yoffse
を設定し、ルビテキストがベースラインの上に来るようにします。
テキストスタイルの ruby_style
フィールドは、 dialogue と history window text の両方で新しく作成されたスタイルに設定されるべきです。
例
style ruby_style is default:
size 12
yoffset -20
style say_dialogue:
line_leading 12
ruby_style style.ruby_style
style history_text:
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
プロパティーを使用します。
Ren'Py は Truetype/OpenType フォントと画像ベースのフォントをサポートしています。
Truetype や OpenType フォントは、フォントファイルの名前を与えて指定できます。ファイルはゲームディレクトリーにあるか、アーカイブファイルのひとつでなければなりません。
Ren'Py は、複数のフォントを定義している Truetype コレクションもサポートしています。コレクションにアクセスするときは、0 ベースのフォントインデクス、アットマーク、そしてファイル名の順に使ってください。例えば、「 0@font.ttc 」がコレクションの最初のフォントなら、次は「 1@font.ttc 」、などとなります。
config.font_replacement_map
変数は、フォントを対応付けるのに使われます。フォントのファイル名、ボールド体、イタリック体の組合せをべつの同様の組合せと対応付けられます。これにより、自動的に生成されるイタリック体の代わりに適切なイタリック体を使用できます。
このようなマッピングによって Deja Vu Sans font のイタリック版を公式の斜体版に置き換えます (web で斜体版をダウンロードする必要があります)。
init python:
config.font_replacement_map["DejaVuSans.ttf", False, True] = ("DejaVuSans-Oblique.ttf", False, False)
このマッピングでイタリックテキストの見た目が向上します。
画像ベースのフォントは、次の登録関数の何れかを呼び出いて登録できます。画像ベースのフォントの登録には、名前、大きさ、ボールド体、イタリック体、下線付きを指定する必要があります。これらすべてのプロパティーが登録されたフォントに合致すれば、その登録されたフォントが使われます。
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 にはラテン文字と一般的な句読点を含めることを推奨します。
登録するフォントの名前で、文字列です。
登録するフォントのサイズで、整数です。
登録するフォントがボールド体であるかどうかの 真偽値です。
登録するフォントがイタリック体であるかどうかの 真偽値です。
このパラメーターは無視されます。
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 文字番号であると想定しており、負の文字コードを無視します。
登録するフォントの名前で、文字列です。
登録するフォントのサイズで、整数です。
登録するフォントがボールド体であるかどうかの 真偽値です。
登録するフォントがイタリック体であるかどうかの 真偽値です。
このパラメーターは無視されます。
MudgeFont 画像を含むファイルの文字列です。この画像は通常 TGA ファイルですが、PNG その他の Ren'Py がサポートするフォーマットにもできます。
MudgeFont ツールによって生成された情報を含む xml ファイルです。
空白文字の幅で、整数のピクセル数です。
文字間のデフォルトのカーニング間隔で、ピクセル数です。
二文字の文字列から、その文字間に使われるカーニング間隔へのマップです。
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 はすべて (マッチングに使われる) 助言的なものであり、フォントの外見を変えるものではありません。
登録するフォントの名前で、文字列です。
登録するフォントのサイズで、整数です。
登録するフォントがボールド体であるかどうかの 真偽値です。
登録するフォントがイタリック体であるかどうかの 真偽値です。
このパラメーターは無視されます。
登録するフォントの名前で、文字列です。
空白文字の幅で、整数のピクセル数です。
フォントの上端からベースライン (文字を置く不可視のライン) までのピクセルの整数での距離です。このフォントが他のフォントと合成されるときには、ベースラインで合わせられます。負の値だと代わりにフォントの下端からの距離になり、 None
だとベースラインとの距離は高さと同じになります(つまりフォントの最下端になります)。
文字間のデフォルトのカーニング間隔で、ピクセル数です。
二文字の文字列から、その文字間に使われるカーニング間隔へのマップです。
フォントの文字セットです。画像で見つかる順に文字を含む文字列です。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."
マルチ言語のゲームを作成するとき、制作者が意図した雰囲気を保ちつつ、一つのフォントですべてのゲームが使用するシステムをカバーすることは多分不可能です。これをサポートするために、 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) linkfont と文字の範囲を関連づけます。
範囲の始まりです。これは一文字の文字列か、ユニコードのコードポイントの整数です。
範囲の終わりです。これは1文字の文字列か、ユニコードコードポイントの整数です。 start が None ならこれは無視されます。
与えられれば、特定の範囲の文字を、 target_increment の設定に合わせて指定のフォントの特定の文字に割り当てます。これは1文字の文字列またはユニコードコードポイントの整数です。その文字が既に追加されていればこれは無視されます。
True なら、 [start, end] の範囲が [target, target+end-start] の範囲に対応付けられます。 False なら、その範囲の全ての文字がそのターゲット文字に関連づけられます。
複数回の .add() 呼び出しが同じ文字を含めるときは最初の呼び出しが優先されます。
これは FontGroup を返すので、何回も .add() を呼び出して数珠つなぎに出来ます。
remap
(cha, target) link1つまたは複数の文字をある単一の文字にリマップします。
リマップする文字または文字群です。これは一文字の文字列か、ユニコードコードポイントの整数、またはそのどちらかのイテレータです。
リマップ先の文字です。これは1文字の文字列又はユニコードコードポイントの整数です。
(add や remap により)既にリマップされているどの指定の文字も無視されますが、その FontGroup にデフォルトフォントが無ければ、どんな文字も先に追加されていなければなりません。
同じ理由で、このメソッドも FontGroup を返します。
テキストは 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)
label start:
show top_text "This text is shown at the center-top of the screen"
Text
(text, slow=None, scope=None, substitute=None, slow_done=None, **properties) linkテキストを画面に表示する displayable です。
画面に表示するテキストです。これは文字列か、文字列または displayable のリストにできます。
テキストの表示を低速にして一文字づつ打ち出されるようにするかを決定します。None であれば、低速テキストモードは slow_cps
スタイルプロパティーによって決定されます。そうでなければ、低速テキストモードを使用するかはこのパラメーターの真偽値によって決定されます。
None を設定するか、テキスト置換を行うための追加のスコープを提供する辞書を指定します。
True なら、テキスト置換が行われます。 False なら行われません。None なら、 config.new_substitutions
で制御されます。
None でなく、スローテキストモード (slow パラメーターを参照してください) が有効ならば、これはそのテキストの表示が完了したときに引数なしで呼び出される呼び出し可能オブジェクト、または関数です。
他の Displayable のように、 Text も (とりわけ) mipmap
プロパティーを含むスタイルプロパティーを受け取ります。
テキストタグがフィルターされた s のコピーを返します。 allow と deny キーワード引数のどちらかが指定されなければなりません。
許可されたタグのセットです。タグがこのリストになければ、除去されます。
拒否されるタグのセットです。タグがこのリストになければ、文字列に保持されます。
renpy.
transform_text
(s, function) linkテキストタグと置換部分はそのままに、 s を変換します。
実行するテキストに対応する引数で呼び出される関数で、実行するテキストを置き換えた文字列を返すべきです。
init python:
def upper(s):
return s.upper()
$ upper_string = renpy.transform_text("{b}Not Upper{/b}", upper)
Ren'Py では、クリエータやユーザーがテキストの表示を低速にできます。この場合、Ren'Py はテキストをテクスチャにレンダリングし、そのテクスチャからスクリーンに長方形をレンダリングします。
残念ながらこれにより、文字が重複するときにレンダリングが乱れることがあります。このレンダリングの乱れを最小限にするためには、 line_leading
および line_spacing
を十分大きくとり、行が重複しないようにしてください。最初の行の文字の下部が切り捨てられている、特に line_spacing が負であるなら、 line_overlap_split
を増やすことも考えてください。
字詰めをしても水平方向の乱れは起こりえますが、この乱れはたった 1 フレームだけなのでそれほど深刻ではありません。
乱れはメニューやその他のユーザーインターフェースのテキストのような静的なテキストでは問題になりません。
Ren'Py はテキストが許可されたエリアからあふれた場合に記録出来ます。テキストオーバーフローの記録を有効化するためには、次の手順が必要です。
config.debug_text_overflow
変数を True にしましょう。
xmaximum
と ymaximum
スタイルをテキストdisplayable かそれを囲むものに適切に設定しましょう。
ゲームを起動します。
利用可能なエリアを超えてテキストが表示されると、 Ren'Py は text_overflow.txt
ファイルにエラーを記録します。