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 друзъями.

Значения по умолчанию:

cliplast 
textдолжен быть определён
x8 если align=1,4,7 или не задан; -1 если align=2,5,8; width-8 если align=3,6,9 
yheight-1 если align=1,2,3; size если align=4,5,6 или не задан; 0 если align=7,8,9
first_frame0
last_frameframecount(clip)-1
font"Arial"
size18.0
text_color$FFFF00 <непрозрачный желтый>
halo_color0 <черный>
alignОбычно 4 <левый угол, базовая линия>; если x=-1, то 5 <середина и базовая линия>
spc0 <без дополнительных интервалов шрифта>
lsp0 <многострочный не разрешен>
font_width0 <system default>
font_angle0.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