Audio triggering "times out" after 10 minutes - If no audio peak of sufficient magnitude is received, and "P" is not pressed within 10 minutes - then playback will resume anyway.
附A. 风格覆盖代码(Tags, Codes)
风格覆写控制代码专用于[Events]这一部分的最后一个字段中, 对于文字/图片风格的重新定义.
除了\n, \N, \h这三个代码之外, 其余所有代码都必须放在大括号{ }之内
所有覆写代码都以反斜线开头\
多个代码可以放在一个{ }内
所有覆写代码作用于其后的所有文字. 如果只想作用于选定的文字, 则需要在选定文字的后面加一个"取消"作用的代码. 但也有少数代码会自动应用于整行文字, 如设定位置的代码.
下面将所有代码分成一般, 绘图两组来详细解释:
(一) 一般的代码
\n 软性分行(回车), 只在分行模式(WrapStyle)为2时有效. 在其它分行模式下相当于一个空格
\N 硬性分行(回车), 在任何分行模式下都有效
\h 硬性空格. 它保证显示字幕时不会在它的这个空格上分行(保证左右两个词在同一行)
\b<0 或 1> \b1令文字变为粗体. \b0强制文字不是粗体(bold)
当参数大于1时, 会被作为字体的重量值. (注: 大多字体只有量化到2级或3级的粗度, 所以很少用到这个重量值)
字体重量值为100的倍数, 如100为最细, 400为普通, 700为粗体, 900为最粗
\i<0 或 1> \i1令文字变为斜体. \i0强制文字不是斜体(italic)
\u<0 或 1> 下划线(underline)开关
\s<0 或 1> 中划线(删除线)开关(strikeout)
\bord<宽度> 指定边框宽度(border), 像素数. 可以为小数
\shad<深度> 指定阴影深度(shadow), 不能为负数
\be<0 或 1> 模糊边缘blur edges
\fn<字体名称> 指定使用系统中已安装的字体, 区分大小写. 如果使用的字体没有安装, 则会用Arial来替代(font name).
注字体名与fn间不能有空格, 也没有其它的括号等
\fs<字号> 指定文字的大小, <字号>是一个指代高度的像素值, 只能用整数. (font size)
\fsc
\fsp<像素值> 文字间增加额外的间隔(font spacing), 默认为0
\fr[
原点由\org代码来指定, 否则由默认的定位点来决定(参见\pos的说明)
\fr 默认代表\frz. <度数>可以为负值, 可以大于360. 此命令同样适用于矢量图形.
\fe<字符集> 指定文字的编码(font encoding). 例如0为英文, 134为简体中文, 136为繁体中文. 1为系统默认.
注: 当ASS/SSA文件本身的编码为非Unicode编码时, 这个数值总影响到按哪种代码页来显示字幕.
推荐保存ASS/SSA文件时选择Unicode方式的编码, 例如UTF-8. 这样可以忽略这个值的设置
\c&H
\1c&Hbbggrr&, \2c&Hbbggrr&, \3c&Hbbggrr&, \4c&Hbbggrr&分别设定主要, 次要, 边框, 阴影颜色
\c 相当于\1c, 为字体本身填充颜色
\alpha&H
\1a&Haa&, \2a&Haa&, \3a&Haa&, \4a&Haa&分别设定主要, 次要, 边框, 阴影颜色的透明度
\alpha一次性调整文字所有元素的透明度
\a<位置> <位置>是一个数字代码, 用来代表字幕出现在屏幕中的位置(alignment)
1, 2, 3代表出现在画面底端的字幕, 分别为左对齐, 居中, 右对齐
5, 6, 7代表出现在画面顶端的字幕, 分别为左对齐, 居中, 右对齐(在1,2,3基础上加了4)
9, 10, 11代表出现在画面中间的字幕, 分别为左对齐, 居中, 右对齐(在1,2,3基础上加了8)
当一行出现多个\a代码时, 只有最前面的一个有效
\an<位置> <位置>为一数字代码, 代表字幕的位置, 从1到9, 与小键盘的数字键代表的位置一致
当一行出现多个\an代码时, 只有最前面的一个有效
注: 一般情况下\a, \an设置字幕位置, 但当有\pos, \move等代码时, \a和\an设置的是文字的定位点.
\k<时间长度> 卡拉OK效果, 高亮之前文字使用次要颜色, 高亮后使用主要颜色
<时间长度>代表在下一小段出现高亮效果之前的当前段高亮停留时间, 值为百分之一秒的倍数
\k<时间长度>按照每一分隔好的小段来进行高亮显示
\kf 或者\K<时间长度>是从左至右的流畅填充高亮
\ko<时间长度>, 与\k相似, 但在高亮之前文字边框也被去掉, 高亮后才显示边框
\q<方式> 定义分行方式, 即WrapStyle
值为0: 智能分行, 大致平均分行, 不能完全平均时上面的行较长.
值为1: 行尾分行, 尽管排满一整行后, 再分到下一行
值为2: 不分行, 超出长度的行会排到屏幕以外. 这种方式下, \n和\N都可以强制分行
值为3: 智能分行, 与方式0相似, 但下面的行比较长
\r[<风格>] 取消一行中之前的所有覆写代码效果, 包括动态特效. (restore/reset)
<风格>令其恢复到指定的风格, 如果没有指定<风格>则恢复到这一行的默认风格
\t([<时值1>, <时值2>, ] [<加速度>,] <风格代码>)
提供从一种风格转到另一种风格的逐渐变化的动态效果. 只有部分风格代码可以用\t 进行动态变换:
字体 几何形 其它
\fs \fscx \bord
\fsp \fscy \shad
\c \frx \clip
\1c \fry
\2c \frz
\3c \fr
\4c
\alpha
\1a
\2a
\3a
\4a
注: 对于 \clip, 只有矩形可以呈动态效果, 矢量绘画图形无法呈动态
<时值1>与<时值2>是从该行开始显示后计算的毫秒数, 两时值间的时间间隔就是动态效果的运行时间(两时值无先后之分).
这两个时候没有指定时相当于<时值1> = <时值2> = 0. 这时动态效果在整行的时间内运行
<加速度>没有指定时相当于1, 此时匀速变化. <加速度>在0和1之间时速度由快变慢, 大于1时由慢变快.
在<时值1>之前, 显示内容是{\t}代码之前的风格, <时值2>以后是<风格代码>所指定的风格.
\pos(
对于不同屏幕排列的字幕, 定位点的相对位置不同.
\an1的定位点在字幕左下角, \an2的定位点在字幕正中下方, \an3的定位点在字幕右下角
\an4的定位点在字幕正中左端, \an5的定位点在字幕正中, \an6的定位点在字幕正中最右端
\an7的定位点在字幕左上角, \an8的定位点在字幕正中上方, \an9的定位点在字幕右上角
一行中有多个\pos时以最前面的\pos值为准
\move(
提供从一个位置到另一个位置的移动动态效果.
x1, y1是定位点起始的坐标(定位点的说明参见\pos 代码), x2, y2是定位点结束的坐标
1)未达到<时值1>时, 文字位置的定位点在(x1, y1)
2)在<时值1>和<时值2>之间, 定位点从(x1, y1)移动到(x2, y2)
3)超过<时值2>后, 文字的定位点固定在(x2, y2)点.
当时值1, 时值2没有指明时相当于两个都是0, 此时在该行的整个时间段内匀速移动(时值的具体说明参见\t 代码)
时值1, 时值2可以大于该行的总时间段, 令没有达到终点时结束移动.
\move 只能够匀速移动, 不能够加速移动
一行中有多个\move代码时只有排在最前面的\move效果有效
一行中不能同时使用{\pos}和{\move}代码, 如果同时出现则只有排在最前面的效果有效
\org(
当有旋转效果的一行中没有\org代码, 则用于旋转的原点坐标就是默认的定位点.
原点坐标可以放置在画面可见区域以外, 足够远时通过旋转一个小角度可让字幕产生"穿过屏幕"的效果
一行中有多个\org代码时只有排在最前面的\org有效
注意: \t, \move 和 \pos 会忽略位置重叠的检测
\fad(<淡入时间>,<淡出时间>)
提供简单的淡入淡出效果. <淡入时间>与<淡出时间>之和不能超过该行的时间长度.
\fade(
提供复杂的透明度变化效果.
这个代码里的7个参数要求全部写齐, 作用方式如下:
1) 在<时值1>之前, 透明度为
2) 在<时值1>与<时值2>之间, 透明度从
3) 在<时值2>与<时值3>之间, 透明度为固定的
4) 在<时值3>与<时值4>之间, 透明度从
5) 在<时值4>之后, 透明度为
\clip(
定义一个矩形框, 只有在这个框里的字幕才为可见
\clip([<等级>,] <绘图命令>)
定义一个绘画图形, 令这个图形内的字幕可见
<绘图命令>参见第二组代码.
<等级>是指定图形的缩放等级. 为2的(等级-1)次方. 如/clip4, 2的(4-1)次方为8, 即将后面的图形缩至1/8
(二)绘图代码
\p<等级> 进入绘图模式并指定坐标的放大等级.
<等级>为坐标的缩放等级, 按2的(等级-1)次方计算. 如/clip4, 2的(4-1)次方为8, 即将后面的坐标缩至1/8
当<等级>=0时, 关闭绘图模式.
\pbo
当y>0时, 图形的所有坐标沿y轴向下移指定的像素值
当y<0时, 图形的所有坐标沿y轴向上移指定的像素值
绘图命令:
m
n
l
b
画一条三度贝塞尔曲线至(x3, y3), 以(x1, y1), (x2, y2)作为控制点
s
从现有坐标画一条"三次均匀B样条"(cubic uniform b-spline)到点(xN, yN)
该命令至少要含有三个坐标点(三个坐标时等同于贝塞尔曲线)
这个命令实质上是把几条贝塞尔曲线连结到一起.
p
c 结束B样条(b-spline)
绘图代码的注意事项:
1) 除了在\clip(..)命令中, 绘图命令必须以{\p1+}开头, 以{\p0}结尾. ("1+"指大于等于1的整数)
2) 所有绘图都必须以m 命令开头
3) 所有图形都必须最终闭合
4) 所有没有闭合的图形会在起始点和终点之间连上一条直线来闭合
5) 在同一行中, 若图形有重叠, 则重叠部分执行异或逻辑运算(即正正得负, 负负得正)
6) 如果相同的绘图命令在一起, 则只需保留最前面命令代码, 后面的坐标可以连着写
7) 绘图中使用的是相对坐标系. 坐标原点由当前的基线位置(\pbo), 当前行的排列方式决定(参见\pos的定位点说明)
8) 命令p c只能用在B样条命令s的后面
ASS之后又有更新的版本, 如ASS2, ASS3等. 这些在开发中没有整合出最终版本, 因此没有官方的相关具体说明文件, 也没有得到广泛使用. 而它新增的一些代码和改动, 可以为VSFilter 2.39以上的版本识别和使用. 虽不推荐在字幕发布中使用, 但可用于压制中.
边框宽度 \xbord<字号>
\ybord<字号>
沿x轴和y轴分别对文字边框宽度进行调整. 注: 如果在一行中用了\xbord, \ybord后又使用\bord, 则会被\bord覆写.
阴影深度 \xshad
\yshad
沿x轴和y轴分别对文字阴影深度进行调整, 可以使用负值
边缘模糊 \be<强度>
按一般模糊的倍数来模糊文字边缘, <强度>必须为整数. 注当强度过大时会导致文字"消失"
\blur<强度>
与\be相似, 但它用的是更加高级的高斯模糊, <强度>可以为非整数. 注意过高的值可能占用过多系统CPU
文字倾斜 \fax<因数>
\fay<因数>
沿x轴和y轴分别对文字行进行倾斜调整. <因数>可以为负数. 如\fax-0.5等同于斜体. (注: 一般情况下因数的绝对值不要超过2)
卡拉OK \kt<时间长度>
传统的卡拉OK模式是从左至右, 依次填充音节. 而\kt<时间长度>重新定义了该音节开始填充的时间
<时间长度>是指该音节从整行开始过了多长时间后开始填充.
例如{\k10}一{\kt30\k10}二{\kt10\k10}三
先填充"一", 过了0.1秒后"一"填充完毕, 开始填充"三", 又过了0.1秒"三"填充完毕, 再过了0.1秒(一行开始后0.3秒)开始填充"二"
动态风格 \t([<时值1>, <时值2>, ] [<加速度>,] <风格代码>)
除了原有的风格, 新增了以下的代码也可以使用{\t}动态转变效果
\fax \fay \be \blur \xbord \ybord \xshad \yshad \iclip
(注: 对于\clip和\iclip, 只有矩形框才能使用动态效果, 绘画图形不能使用动态效果)
图形蒙板 \iclip(
\iclip([<等级>,] <绘图命令>)
\iclip与\clip相似, 所有参数与命令都一致, 但效果相反, 即在图形区域内的文字不可见, 以外的文字可见.
注: 当\iclip和\clip出现在同一行时, 所有的图形效果都会当成"\iclip"处理.
另注:
所有的坐标值不再局限使用整数, 可以使用小数.
一行的开始, 结束时间, 以及卡拉OK的时间可以使用更加精准的时间(原SSA, ASS都只精确到0.01秒)<未验证>
附B. 内嵌的字体/图片编码
SSA所使用的内嵌字体/图片编码是UUE-encoding的一种形式. (因极少用到, 以下仅引用原文)
It takes a binary file, three bytes at a time, and converts the 24bits of those bytes into four 6-bit numbers. 33 is added to each of these four numbers, and the corresponding ascii character for each number is written into the script file.
The offset of 33 means that lower-case characters cannot appear in the encoded output, and this is why the “filename” lines are always lower case.
Each line of an encoded file is 80 characters long, except the last one, which may be shorter.
If the length of the file being encoded is not an exact multiple of 3, then for odd-number filelengths, the last byte is multiplied by hexadecimal 100, and the most significant 12 bits are converted to two characters as above. For even-number filelengths, the last two bytes are multiplied by hexadecimal 10000, and the most significant 18 bits are converted to three characters as above.
There is no terminating code for the embedded files. If a new [section] starts in the script, or if another filename line is found, or the end of the script file is reached then the file is considered complete.