Subtitle

Subtitle (clip, string text, int "x", int "y", int "first_frame", int "last_frame", string "font", float "size", int "text_color", int "halo_color", int "align", int "spc", int "lsp", float "font_width", float "font_angle", bool "interlaced")

Subtitle (clip, string text)

Subtitle フィルタは、ある範囲のフレームにアンチエイリアス*1されたテキストを追加します。2 つ以上の字幕が必要なら、いくつかの Subtitle フィルタをつなげ合わせることによってこれを実現することも可能です。text 以降のパラメータはすべてオプションで、省略したり、名前= というシンタックス*2を使って順番に関係なく指定することができます。

パラメータ

text は、first_frame から last_frame までの範囲でクリップの上にオーバーレイされるテキストです。

(x, y) は、テキストの位置です。水平または垂直方向の中心座標を自動的に算出して使用するために、パラメータ xy を -1 に設定することができます。

font は、テキストのフォントです(現在のコンピュータにインストールされているすべてのフォントが利用可能です。それらのフォントは、「windows\fonts」*3フォルダにあります)。

size は、テキストのサイズ(0.125 単位)です。

text_color および halo_color は、16 進数値($AARRGGBB*4)として指定されます。これは HTML と似ています -- # の代わりに $ から始まる*5ことと、4 番目のオクテット*6がアルファ透明度を指定することを除けば。$00RRGGBB は完全に不透明、$FF000000 は完全に透明です。この色を選択することによって、テキストの縁の色を無効化することができます。色の指定に関する詳しい情報は、こちらを参照してください。

align パラメータは、テキストが (x,y) の位置に対して相対的にどこに配置されるのかを設定することを可能にします。次のようなテンキーに基づいています:

<左> 7 <上> <中央> 8 <上> <右> 9 <上> align=7,8,9 はテキストの上端を y の位置に揃える
<左> 4 <ベースライン> <中央> 5 <ベースライン> <右> 6 <ベースライン> align=4,5,6 はテキストのベースラインを y の位置に揃える
<左> 1 <下> <中央> 2 <下> <右> 3 <下> align=1,2,3 はテキストの下端を y の位置に揃える
align=1,4,7 は x から始まる align=2,5,8 は x の中央に align=3,6,9 は x で終わる  

注: 垂直方向の中央揃えの設定はありません。

spc パラメータは、文字の間隔を変更することを可能にします(0=変更なし)。テキストの間隔を広くするには正の値を、狭くするには負の値を指定することができます。このタスクを実行する SetTextCharacterExtra() 関数に関する Visual C++ のドキュメント*7によると、この値は論理単位*8であり、0.125 単位で最も近いピクセルに丸められます。これは、PC の典型的なフォントをフィルムや映画のクレジット*9で使用されるフォント(通常、同じ高さでも幅が広い)に調和させたり、固定した文字ごとの調整によって空白を入れたり空白を埋めたりするのに役立ちます。

「\n」を使った複数行の文字列が v2.57 で追加されました。これは、lsp (行間)パラメータが設定された場合に使用されます。lsp パラメータは、0.125 ピクセル単位で 2 つの行の間に追加の行間を設定します。

font_width パラメータは、CreateFont() 関数*10に関する Visual C++ のドキュメントによると、文字グリフのアスペクト比を 0.125 単位で変更することを可能にします。これは、GDI*11 のデフォルトのアスペクト比と選択されたフォント本来のアスペクト比によって、size パラメータに関連付けられています。

font_angle パラメータは、テキストのベースラインの角度を反時計回りに 0.1 度ずつ変更することを可能にします。

interlaced パラメータが有効化されると、インターレースディスプレイ上の急激な垂直方向のトランジションからフリッカ*12を低減します。アンチエイリアスフィルタが上下のラインからピクセルの重みの 0.5 を含めるようにウィンドウを拡大することによってこれを実現し、軽い垂直方向のぼかしを効果的に適用します。

見られさえすれば字幕の見た目はまったく気にしないというとき(たとえば、 あるフレームのいくつかのバージョンを同時に表示するために StackVertical やその同種のフィルタを使用していて、どれがどれか覚えておくためにラベルを付けたいとき)には、代替的な短い書式*13が役に立ちます。

このフィルタは、AviSynth の内部で Version コマンドやエラーメッセージの報告に使用されています。字幕を付ける装置は、ShowFrameNumber やその仲間のフィルタでも使われています。

デフォルト値

clip last*14
text デフォルトなし。必須。
x align=1,4,7 または 指定なし: 8。align=2,5,8: -1。align=3,6,9: width*15-8
y align=1,2,3: height*16-1。align=4,5,6 または 指定なし: size。align=7,8,9: 0
first_frame 0
last_frame framecount(clip)*17-1
font "Arial"
size 18.0
text_color $00FFFF00 <完全に不透明な黄色>
halo_color 0 <完全に不透明な黒>
align 通常: 4 <左&ベースライン>。x=-1: 5 <水平方向の中央&ベースライン>
spc 0 <フォント間隔変更なし>
lsp <複数行無効>
font_width 0 <システムデフォルト>
font_angle 0.0 度
interlaced false

使用例

# クリップの中央に「Hello world!」:
AviSource("D:\clip.avi")
Subtitle("Hello world!", align=5)
# 指定されたフォント、大きさ、色(赤)で
# クリップの右上隅に「Hello world!」:
AviSource("D:\clip.avi")
Subtitle("Hello world!", font="georgia", size=24, \
         text_color=$ff0000, align=9)
# 縁なしのテキストを複数行表示:
BlankClip()
Subtitle( \
  "Some text on line 1\\nMore text on line 1\n" + \
  "Some text on line 2", \
         lsp=10, halo_color=$ff000000)

これは、以下のようになります*18:

1行目のテキスト\nこのテキストも1行目
2行目のテキスト

更新履歴

v2.58 font_width、font_angle、interlaced の各パラメータと色のアルファブレンド*19を追加。
v2.57 複数行のテキストと行間(lsp)パラメータを追加。
v2.07 align パラメータと spc パラメータを追加。
y=-1 に設定すると垂直方向の中央を算出する(アラインメントに影響なし)。
x と y のデフォルト値はアラインメントに左右される(以前は x=8、y=size)
v1.00 x=-1 に設定すると、水平方向の中央と中央揃えを使用する(v2.07 より前はヘルプに記載されていなかった)

原文 Date: 2008/06/06 16:36:46
日本語訳 $Date: 2008/08/13 02:48:39 $