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 вставляет в группу кадров строку текста (с использованием сглаживания - anti-aliasing). Если необходимо вставить несколько титров или титр из нескольких строк, нужно использовать фильтр Subtitle несколько раз подряд. Видимо, он не очень подходит для сколько-нибудь сложных случаев использования. Все параметры, кроме самой текстовой строки, являются необязательными. Можно задавать их в произвольном порядке, используя конструкцию вида name=value.

Параметры

text – текст, размещаемый на кадрах в интервале first_framelast_frame.

(x,y) – координаты текста (см. ниже таблицу точек привязки). Можно установить их в -1 для автоматического центрирования текста по горизонтали и/или вертикали. Другие отрицательные значения x и y могут быть использованы, чтобы задать субтитры частично вне экрана. Предупреждение: Если ваш скрипт использует Subtitle вместе с Animate, и отрицательными величинами x или y, то x или y могут в некоторый момент стать -1, вызывая глюки на видео.

font – шрифт (любой из установленных в системе, см. папку 'windows\fonts').

size – размер шрифта (видимо, в пикселах, а не в пунктах – прим.перев.)

text_color и halo_color задают цвет текста и окантовки соответственно в шестнадцатиричных RGB величинах, как в формате html (т.е. три двузначных шестнадцатиричных числа, записанных подряд. Только перед ними надо ставить символ $, т.к. # уже используется для обозначения комментария).

Параметр align (выравнивание) позволяет задать точку привязки, т.е. тот угол текста, координаты которого задаются в x, y, значение аналогично цифровому блоку клавиатуры :

<левый угол> 7 <верх> <середина> 8 <верх> <правый угол> 9 <верх> верхний край текста имеет координату y для align=7,8,9
<левый угол> 4 <базовая линия> <середина> 5 <базовая линия> <правый угол> 6 <базовая линия> базовая линия (нижний край букв типа 'к', 'а', не имеющих выступающих вниз элементов) имеет координату y для align=4,5,6
<левый угол> 1 <низ> <середина> 2 <низ> <правый угол> 3 <низ> нижний край текста имеет координату y для align=1,2,3
левый край текста имеет координату x для align=1,4,7 середина текста имеет координату x для align=2,5,8 правый край текста имеет координату x для align=3,6,9  

Примечание: установка для середины по высоте не предусмотрена.

Параметр spc позволяет регулировать межсимвольный интервал (положительное число увеличивает, отрицательное уменьшает интервал относительно номинала). Согласно документации Visual C++ по функции SetTextCharacterExtra(), выполняющей данную задачу, значение задаётся в логических единицах и округляется до ближайшего 0.125 пиксела. Это бывает полезно для подгонки шрифта текста под размер шрифта в титрах фильмов, который обычно шире при той же высоте, или для заполнения заданного прямоугольника текстом с равными межсимвольными расстояниями.

Многострочный текст использующий "\n" добавлен в v2.57 и это используется если установлен параметр lsp. Он устанавливает интервал между строками в единицах 0.125 пиксела.

Параметр font_width позволяет вам изменять, в единицах 0.125, аспектное отношение знака символов согласно документации Visual C++ для функции CreateFont(). Он соотносится к параметру size через аспектное значение по умолчанию GDI и натуральное аспектное значение выбранного шрифта.

Параметр font_angle позволяет вам изменять угол наклона текста в 0.1 градус приращениях против часовой стрелки.

Параметр interlaced, если включен, снижает мерцания от резких тонких вертикальных переходов на чересстрочных дисплеях. Он делает это путем увеличения окна для понижения ступенчатости включением 0.5 веса пиксела от строк сверху и снизу, это эффективно применяет мягкое вертикальное размывание.

Краткая форма вызова функции (со всеми параметрами по умолчанию) полезна, когда важен не внешний вид текста, а содержание, например, для вывода отладочной информации. Пример: если вы используете фильтр StackVertical для отображения нескольких вариантов кадра и хотите как-то пометить их.

Этот фильтр используется в команде Version и для отображения собщений об ошибке, а также в фильтрах типа ShowFrameNumber c друзъями.

Значения по умолчанию:
clip last 
text должен быть определён
x 8 если align=1,4,7 или не задан; -1 если align=2,5,8; width-8 если align=3,6,9 
y height-1 если align=1,2,3; size если align=4,5,6 или не задан; 0 если align=7,8,9
first_frame 0
last_frame framecount(clip)-1
font "Arial"
size 18.0
text_color $FFFF00 <непрозрачный желтый>
halo_color 0 <черный>
align Обычно 4 <левый угол, базовая линия>; если x=-1, то 5 <середина и базовая линия>
spc 0 <без дополнительных интервалов шрифта>
lsp 0 <многострочный не разрешен>
font_width 0 <system default>
font_angle 0.0 градусов
interlaced нет

Примеры

# сообщение посередине клипа:
AviSource("D:\clip.avi")
Subtitle("Hello world!", align=5)
# сообщение в верхнем левом углу с заданным шрифтом, размером и цветом:
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\nSome text on line 2", \
          lsp=10, halo_color=$ff000000)

# Это дает результат:
Some text on line 1\nMore text on line 1
Some text on line 2

Особенности в разных версиях
v2.58 Добавлены font_width, font_angle, interlaced и alpha color смешивание.
v2.57 Добавлен многострочный текст и параметр межстрочного интервала.
v2.07 Добавлены параметры align и spc.
Задание y=-1 вычисляет середину по вертикали (вертикальное выравнивание не меняется) 
Значения x и y по умолчанию зависят от выравнивания (в прежних версиях x=8, y=size) 
v1.00 Задание x=-1 центрирует по горизонтали (недокументировано до v2.07)

$English Date: 2008/11/16 13:59:30 $
Русский перевод 18.05.2005 Eugene Vasiliev (eugvas@mccme.ru)
Обновления 31.12.2006-06.12.2008 Fizick http://avisynth.org.ru