お知らせ: にーやんのブログ 2 に移転しました。こちらのブログは、2009 年末までに削除します。

スポンサード リンク

Project N: 025 - Subtitle フィルタの複数行サポート(AviSynth v2.57 以降)

AviSynth 2.5.7 から、Subtitle フィルタにおいて複数行の文字列の表示が可能になっています。これまで tategaki というユーザー定義関数を作って、半ば無理矢理、縦書きを実現していましたが、もうその必要もなくなりました。

Subtitle フィルタで複数行の文字列を表示するためには、具体的に次の 2 つの条件を満たす必要があります:

  1. lsp パラメータを明示する。
  2. 文字列中の改行したい箇所に \n (バックスラッシュ+n。日本語環境では、円記号+n(ともに半角))を挿入する。

これで \n の部分で改行されるようになります。実際に試してみましょう:

BlankClip(width=320, height=240)
Subtitle("Line 1\nLine 2\n\nLine 4", lsp=0)

Subtilteフィルタの複数行のテスト

3 行目は空なので、空行(改行のみ)になっています。

これまで tategaki という自作の関数で実現していたものを、2.5.7 以降の Subtitle フィルタに置き換えるとこのようになります。

# 固定値の指定
font = "Courier NEW" # フォント
font_size = 18 # フォントのサイズ
font_color = $6FE47A # フォントの色
halo_color = $11B301 # 文字の縁の色
lsp = 0 # lsp パラメータ
# 背景
BlankClip(width=320, height=240)
# AviSynth 2.57 以降
Subtitle("A\nB\nC\nD\nE\n", 4,0, 0,0, font, font_size, font_color, halo_color, lsp=lsp)

Subtilteフィルタの複数行のテスト2

このままでは、少し文字と文字との縦の間隔が空いているように見えます。このようなときは、lsp パラメータの値を変更することで行間のスペースを調整することが可能です(lsp は line spacing に由来)。たとえば lsp = -24 にすると、このようになります:

Subtilteフィルタの複数行のテスト3

逆に lsp の値を大きくすると、行間が広くなります。

なお、Subtitle フィルタや lsp パラメータの詳細は、マニュアルを参考にしてください。AviSynth WikiSubtitle フィルタのページは古いままなので、複数行に関する説明はありません(2008-03-06 現在。後日、新しい訳に差し替える予定)。

関連記事

スポンサード リンク

Recent entries from same category
TrackBack ping me at
Trackbacks
[ No TrackBack ]
Comments
[ No Comment ]
Post a comment

writeback message: There was a problem posting your writeback.













Remember the above info?

Preview here...

  • [Preview]ボタンをクリックすると、コメント内容をプレビューすることができます(JavaScript使用)。
  • スパム対策としてリファラチェックを行っています。セキュリティソフトの設定でリファラを無効にしていると投稿できません。
  • エントリの内容と無関係と思われるコメントやトラックバックは削除されます。
  • 当ブログへの言及リンクがないトラックバックはブロックされます。