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) は、テキストの位置です。水平または垂直方向の中心座標を自動的に算出して使用するために、パラメータ x と y を -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( \ "1行目のテキスト\\nこのテキストも1行目\n" + \ "2行目のテキスト", \ lsp=10, halo_color=$ff000000, font="MS Pゴシック")
これは、以下のようになります*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 より前はヘルプに記載されていなかった) |
註: このページは、AviSynth 2.5.8 RC3 に同梱されている英語版ヘルプの日本語訳です。原文は、AviSynth をインストールしたフォルダ内の Docs/english/corefilters/subtitle.htm にあります。なお、このページのテキストおよび画像のライセンスは、オリジナルのそれに準じます。詳しくは、AboutLicense を参照してください。
*1 訳者註: 参考: アンチエイリアス、アンチエイリアスとは:デジカメ画像のためのphotoshop講座、「アンチエイリアス」について
*2 訳者註: この「名前=値」という形式で指定される引数は、「名前付き引数」や「キーワード引数」と呼ばれます。
*3 訳者註: Windows2000 の場合は、「WINNT\Fonts」。
*4 訳者註: $AARRGGBB で表される色は、それぞれ AA = 透明度、RR = 赤、GG = 緑、BB = 青に相当します。
*5 訳者註: AviSynth では、# は すでに 1 行コメントの開始を意味する記号として使用されています。
*6 訳者註: オクテットは情報の単位の 1 つで、1 オクテットは 8 ビットに相当します。ここでは、「4 番目のオクテット」は $AARRGGBB の AA の部分を指してます。参考: オクテット - Wikipedia
*7 訳者註: 参考: SetTextCharacterExtra 関数
*8 訳者註: 参考: 論理単位とデバイス単位について
*9 訳者註: 映画やドラマの冒頭と(または)最後に流される、出演者やスタッフなどの名前の表示。謝辞。
*10 訳者註: 参考: CreateFont 関数
*11 訳者註: 参考: GDI(ジーディーアイ。Graphics Device Interface):RBB TODAY (ブロードバンド辞典)、GDIとは 【Graphic Device Interface】 - 意味・解説 : IT用語辞典、Graphics Device Interface - Wikipedia
*12 訳者註: 一般にフリッカ(flicker)とは、画面のちらつきのことを指します。ここでは、Subtitle で追加された字幕がインターレースディスプレイでちらつくことを指していると考えられます。参考: フリッカー - Wikipedia
*13 訳者註: このページの冒頭に示されているシンタックスの 2 つ目、「Subtitle (clip, string text)」を指しているものと考えられます。
*14 訳者註: 最後に処理したクリップ。
*15 訳者註: clip の幅。
*16 訳者註: clip の高さ。
*17 訳者註: clip の総フレーム数。
*18 訳者註: 1 つ目の \n は、直前の \ でエスケープされているため、改行されることなく、文字そのものとして表示されます。
*19 訳者註: ここでは、アルファ値を使って文字の色と縁の色の透明度を設定することを指す。詳しい指定方法は、上述の text_color と halo_color の説明を参照。参考: アルファブレンドとは 【alpha blend】 - 意味・解説 : IT用語辞典