## 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( \
      "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 $`

- 訳者註:
  - *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用語辞典