以下内容来自百度,留存
 
字幕外挂文件
ASS全称:Advanced SubStation Alpha
ASS是一种高级的字幕格式,是较SSA(SubStation Alpha(或 Sub Station Alpha))更高级的字幕,它是技术上而言的SSA v4+,它包含了所有SSA的所有特性,它可以将任何简单的文本转变成为卡拉OK的字幕样式,数个项目旨在创建这些脚本。ASS的特点在于它比普通的SSA更为规范,如ASS的编程风格。
ASS字幕文件需要有与之相对应的视频文件才能够起到它的作用。单独的ASS格式的文件可以用记事本直接打开。动漫用得比较多, 因为可以方便的做特效。 缺点就是比较耗资源。ass文件除非是动漫组主动放出外, 很少能从其他渠道获得。
ASS是一种视频字幕文件,字幕文件分软字幕和硬字幕.
软字幕就是通常指的*.sub,*.srt,*.ssa,*.ass等格式的字幕文件,只需和影片同名,并放在同一个文件夹内,播放器就会自动调用字幕文件
硬字幕是指,在压制影片的时候手动添加进字幕文件,且永久存在于影片之中
打开ASS文件用 :暴风的最新版、REAL最新版、VOBSUB、WIN PLAYER最新版可以播放

一.SSA文件的组成结构
SSA文件主要由三大部分组成:[Script Info]部分,[v4 Styles]部分和[Events]部分。

1.[Script Info]部分
PlayResX: 384
PlayResY: 288
384×288是标准的4:3画面分辨率之一。ssa字幕里的坐标(字幕的位置)即根据这2个数值的范围来定义。16:9宽银幕的片子略做调整即可。
这里主要介绍文件本身和制作者的信息,这里面最重要的两项是PlayResX和PlayResY,它实际上是按给定的PlayResX和PlayResY数值将屏幕按比例化分,屏幕的左上角坐标为(0,0),右下角坐标为(PlayResX数值,PlayResY数值).这两个值最好是和视频文件的长宽相同,这样在下面 [Events]部分文本位置坐标的设定很方便而且准确.
当然这两个值也可能和原视频文件的长宽不同,比如视频文件尺寸为640x360,而PlayResX:384,PlayResY: 288,如同前面所说的,它是将屏幕长宽按384:288来化分的.一旦这样划定,下面的各种坐标设定都要以384和288为根据.
特别要注意的是:对于一个已经存在并且文本坐标都设置好的SSA文件,如果它的PlayResX和PlayResY数值和视频文件的长宽尺寸不符(包括成比例的情况,比如视频文件尺寸为640x360,而 PlayResX:320,PlayResY: 180),我们不要简单的把PlayResX和PlayResY数值改成屏幕尺寸,这样将导致字幕失真,是因为文本部分的尺寸并没有改,仍按照原来的PlayResX和PlayResY数值设定.如果有较多的坐标设定,就不要改原来的PlayResX和PlayResY数值,在原基础上编辑.

2.[V4 Styles]部分
这是个存放[Events]部分里所用到的各种字体信息的地方.可以存在多种字体,每种字体有多种特征.当[Events]部分的Name项引用到这里的某种字体时,则意味这该字体的各种特征也被引用.字体的特征还可以在文本行中修改,这将在[Events]部分讨论.
常见的字体属性有Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
我们可以再定义一个Style,并命名为mine,如Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
即可以这样:
[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle,Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,华文彩云,18,&Hff0000,&Hff8080,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
Style: mine,华文新魏,18,&HFF0000,&HFF80FF0,&Hffffff,&Hffffff,0,0,1,2,1,2,20,20,20,0,134
有了具体经验后,一般可以不作调整,需要改动的可以是“Fontname”,如改成黑体, “Fontsize”,做字幕字号24比较合适。至于最后的“Encoding”,134表示简体中文的编码,繁体中文的编码为136。
下面对各项作一说明,并列出属性的取值及范围
Name ---字体名称---[Events]部分将引用该项,比如Default,Font1等
Fontname ---所使用的字型---比如黑体,楷体_GB2312等.对新载入的SSA文件,VOBSUB不会识别出宋体以外的字型,都按宋体输出.但可以在DirectVobSub中重新定义
Fontsize ---字体大小---常用范围8-72
PrimaryColour ---主体颜色---颜色格式为&HXXXXXX,十六进制,X取值为0-f
SecondaryColour ---次要颜色---格式同上,卡拉OK中使用,即变色前的颜,变色后显示主体颜色
TertiaryColour ---边框颜色---格式同上
BackColour ---阴影颜色---格式同上
下面是一些常用颜色的代码,以便在文件中直接添加和编辑:
&Hffffff 白 &H8080ff 浅红
&H000000 黑 &H80ffff 浅黄
&H0000ff 深红 &HFF8000 亮蓝
&H00ffff 深黄 &H80ff00 浅绿
&Hff0000 深蓝 &H00ff00 亮绿
&H008000 深绿 &Hff00ff 紫红(偏紫)
&H0080ff 橙 &H8000ff 紫红(偏红)
&Hff0080 紫 &Hffff00 浅蓝
Bold ---粗体---0关闭,-1开启
Italic ---斜体---0关闭,-1开启
BorderStyle ---边框样式---取值1:正常,取值3:有一覆盖区域
Outline ---边框宽度---取值范围1-4,数字越大边框越宽
Shadow ---阴影距离---取值范围0-4,数字越大阴影越厚
Alignment ---对齐方式---这是重中之重,学懂对齐方式等于学懂了一半的SSA,其用法将在下面的代码部分作详细的介绍,这里只作简单的说明(下面各位置的数字就是Alignment的取值,很好记:从1-11,没有4和8这两个数,其余都是连续排列):
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3
MarginL ---字幕距左边的距离---取值范围0-PlayResX的数值
MarginR ---字幕距右边的距离---取值范围0-PlayResX的数值
MarginV ---字幕高度---取值范围0-PlayResY的数值
AlphaLevel---字体透明度---透明度格式为&HXX,十六进制,X取值为0-f
Encoding ---编码---简体134,繁体136

3.[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
从这里开始就是字幕部分了,以“Dialogue: Marked=0,0:00:01.34,0:00:02.05,Default,,0000,0000,0000,,”定义开头。如果只是单纯做字幕用,那么这句后面就是字幕部分了,而字幕的格式根据[V4 Styles]里设置的来显示。Default可以换用上面设置的mine,那么显示的格式是按照mine里面设定!
这里是将[v4 Styles]部分中已定义的字体提供给字幕,并能对字体的各属性重新定义;通过特定的SSA代码实现特效.
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Marked---标记---一般都设为0
Start ---字幕开始时间---格式0:00:00.00最小单位0.01秒
End ---字幕结束时间---格式同上
Style ---字体名称---引用的是[v4 Styles]部分中的Name项
Name ---名字---注意这个Name和[v4 Styles]部分中的Name完全不同,相当于注释,一般省略,省略后只留一逗号.
MarginL---是对[v4 Styles]部分MarginL值的重新设定,0000表示采用原值;若不为零,则代替原值(此时原值不再起作用)
MarginR---是对[v4 Styles]部分MarginR值的重新设定,用法同上
MarginV---是对[v4 Styles]部分MarginV值的重新设定,用法同上
Effect---这里是SSA为编辑人员方便使用动态效果而自定义的代码,有Scroll up,Scroll down,Banner和Karaoke四种形式.为集中学习这里就不作介绍将其放到SSA代码部分说明.
Text---字幕区---在这里可以添加代码改变字体属性,实现多种特效
其实[v4 Styles]部分就是一个存放各种字体以及该字体属性初始值的一个场所,它的大小,颜色,字幕所在的位置等信息都放在这里;而[Events]部分则是把[v4 Styles]部分中的各个字体应用到文本中去,并且能够对已定义的字体的各种属性进行修改以达到需要的效果.打个比方,几种不同类型的木材,具有各自的原始尺寸颜色,经过加工改变大小涂上新的颜色(或者直接使用原料),从而做成各种家俱材料.[v4 Styles]部分就相当于放置这些原始木材的仓库,而[Events]部分则是执行怎样加工木材并将其安装到家俱上.

二.下面介绍SSA代码的用法
SSA代码
首先对下面代码中用到的符号说明一下:
<..>---参数
[..]---可选项
<../..>---任选其中一项
规定:所有代码之前加\
所有代码放在括号{}内,\N,\n,\h例外。
\N---换行---换行后两行之间没有空隙
\n---空格---或直接按空格键,超出范围自动换行
\h---空格---或直接按空格键
\b<0/1>---粗体---0关闭,1开启
\i<0/1>---斜体---0关闭,1开启
\bord<width>---边框宽度---width取值范围1-4,数字越大边框越宽
\shad<depth>---阴影距离---depth取值范围0-4,数字越大阴影越厚
\r<style>---改变字体---比如Default,Font1等
\r\r---恢复成最初的字体
\fn<font name>---改变字型---比如黑体,楷体_GB2312等
\fs<font size>---改变字号---常用范围8-72
\fsc<x/y><percent>---字符缩放---x代表水平方向,y代表垂直方向,perecet取不小于0的数(小数也可以).默认大小为100(即100%)
\fsp<pixels>---调整字间距---pixels取值在实数范围内,可以是正数,零,负数.默认值为0
\fr[<x/y/z>]<degrees>---旋转---x代表水平方向,y代表垂直方向,z是垂直于屏幕的坐标轴.degrees为正数时是逆时针旋转,为负数时是顺时针旋转.
\c&H<XXXXXX>---改变颜色---颜色格式为&HXXXXXX,十六进制,X取值为0-f,作用相当于\1c&H<XXXXXX>
\1c&H<XXXXXX>---改变主体颜色---格式同上
\2c&H<XXXXXX>---改变次要颜色---格式同上
\3c&H<XXXXXX>---改变边框颜色---格式同上
\4c&H<XXXXXX>---改变阴影颜色---格式同上
\alpha&H<XX>---改变透明度---透明度格式为\alpha&HXX,十六进制,X取值为0-f,同时改变字幕所有部分的透明度,取值越大,透明度越强
\1a&H<XX>---改变主体透明度---格式同上
\2a&H<XX>---改变次要透明度---格式同上
\3a&H<XX>---改变边框透明度---格式同上
\4a&H<XX>---改变阴影透明度---格式同上
\move(<x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])---移动效果
x1,y1---移动开始的位置
x2,y2---移动结束的位置
t1,t2---移动开始和结束时间,省略后以字幕开始和结束时间为准
\pos(<x>, <y> )---位置改变---x和y是是改变位置后的坐标
\t([<t1>, <t2> ], [<accel>], <style modifiers> )---动态效果---可同时使用多个效果
t1,t2---动态效果开始和结束时间,单位为1毫秒,省略后以字幕开始和结束时间为准
accel---控制动态效果的运动速度,它的作用范围较大,能影响多行文本的动态速度. 默认值为1.当0<accel<1时,速度从快到慢减速运动;accel>1时,速度从慢到快加速运动
style modifiers可以使用的效果有\bord,\shad,\fsc<x/y>,\fsp,\fs,\fr[< x/y/z>],\move, \c,\<1/2/3/4>c,\alpha,\<1/2/3/4>a
\fad(<t1>, <t2> )---淡出淡入效果---单位为1毫秒,如2000就是2秒
t1---显示使用的时间,是时间段
t2---消失使用的时间,是时间段
\fade(<a1>, <a2>, <a3>, <t1>, <t2>, <t3>, <t4> )---淡出淡入效果---透明度必须用十进制表示,范围0-255
a1---显示开始时的透明度
a2---显示结束到消失开始时的透明度
a3---消失结束时的透明度
t1,t2---显示的开始和结束时间,是时间点
t3,t4---消失的开始和结束时间,是时间点
Scroll up;<y1>;<y2>;<delay>;[<range>]---字幕从下向上移动
Scroll down;<y1>;<y2>;<delay>[;<range>]---字幕从上向下移动
y1---字幕出发处的垂直坐标
y2---字幕终止处的垂直坐标
delay---速度,表示移动一象素所用的时间,单位为0.001秒/1象素,delay=20表示1秒移动50象素的距离.由此可计算出头字幕从初始坐标到达终点坐标所用的时间为: (y1-y2的绝对值)*(delay/1000)(秒),delay越小移动速度越快.
range---上下淡出淡入范围
Banner;<delay>;[<lefttoright>;[<range>]]---字幕横向移动,移动从屏幕边线出发到边线终止
delay用法同上
lefttoright---0从右向左移动,1从左向右移动
range---左右的淡出淡入范围
Karaoke---卡拉OK,下面是代码表示
\K<duration> 卡拉OK,有平滑效果,时间单位是0.01秒,{\K200}XXX表示用2秒来显示歌词XXX,后面没有字符表示停顿一段时间
\a<alignment>---设置对齐方式,不同的位置alignment取以下相应的值
左 中 右
上 5 6 7
中 9 10 11
下 1 2 3

学习SSA代码注意事项:
1. 在不同的对齐方式下,位置参数即坐标值的说明(括号内的数字是不同对齐方式的ssa代码):
上对齐: MarginV的值是上端字幕到顶部的距离
上左对齐时(5): MarginL是左端字幕到左边的距离
MarginR无效
上中对齐时(6): MarginL不是实际距离(文本中心在水平方向上向左到屏幕中线的实际距离=(1/2)MarginL) (注:为了定位方便,此时不要同时设置MarginL和MarginR的值)
MarginR不是实际距离(文本中心在水平方向上向右到屏幕中线的实际距离=(1/2)MarginR)
上右对齐时(7): MarginR是右端字幕到右边的距离
MarginL无效
下对齐: MarginV的值是下端字幕到底部的距离
对MarginR和MarginL的分析同上
左对齐: MarginL是左端字幕到左边的距离
MarginR无效
左上对齐时(5): MarginV的值是上端字幕到顶部的距离
左中对齐时(9): MarginV无效(文本中心在垂直方向上位于屏幕一半的地方)
左下对齐时(1): MarginV的值是下端字幕到底部的距离
右对齐: MarginR是右端字幕到右边的距离
MarginL无效
对MarginV的分析同上
中心对齐(10): MarginL不是实际距离(文本中心在水平方向上向左到屏幕中线的实际距离=(1/2)MarginL) (注:为了定位方便,此时不要同时设置MarginL和MarginR的值)
MarginR不是实际距离(文本中心在水平方向上向右到屏幕中线的实际距离=(1/2)MarginR)
MarginV无效(文本中心在垂直方向上位于屏幕的一半处)
准确设置字幕位置的步骤:
第一步:确定当前文本的对齐方式(对字幕位置的初步设定)
第二步:可用两种方法最终确定字幕位置:
a调节MarginL,MarginR,MarginV参数来设置(一般只调[Events]部分中的MarginL,MarginR,MarginV值)
b不调节MarginL,MarginR,MarginV参数,而是用某些代码(比如\move,\pos代码)对字幕初始位置重新设定

1)一般来说,在使用1,2,3,5,6,7这六种对齐方式的条件下可以通过调节[Events]部分的MarginL, MarginR, MarginV值来准确控制字幕在屏幕中的位置,而用9,10,11这三种对齐方式时则不能用改变MarginL, MarginR, MarginV数值的方法来调节字幕在垂直方向上的位置,此时文本中心在垂直方向上始终位于屏幕的一半处.

2)对齐方式也会影响到Text中某些代码(比如\move,\pos代码)对字幕初始位置的重新设定:
A.采用上中对齐或下中对齐方式时,代码中水平坐标值是文本水平中心的坐标值;
上中对齐时,代码中垂直坐标值是上端字幕到顶部的距离
下中对齐时,代码中垂直坐标值是下端字幕到顶部的距离(注:这一点和MarginV值不同)
B.采用上左对齐时,代码中水平坐标值是左端字幕到左边的距离
代码中垂直坐标值是上端字幕到顶部的距离
其余类推
C.采用中心对齐时,代码中水平坐标值是文本水平中心的坐标值
代码中垂直坐标值是文本垂直中心的坐标值

3)另外,由于[V4 Styles]部分和[Events]部分中的MarginL,MarginR,MarginV值的设定都会影响到\move代码对字幕初始位置的重新设定(对\pos代码没有影响),因此[V4 Styles]部分的MarginL,MarginR,MarginV值要设定的相对小一些(最好在0-30这个范围),而此时也不再设定 [Events]部分的MarginL,MarginR,MarginV值,即都为0000.
4)特效Scroll up,Scroll down中的坐标值则是文本起点和终点在屏幕中的位置.
5)对齐方式也对决定了代码\fr中旋转所围绕的中心

2.{}内可以有多个代码,比如:{\fs25\fad(300,500)}和{\fs25}{\fad(300,500)}作用一样

3.每一代码的有效范围从该代码之后到下一个相同代码出现之前的所有文本内容(在同一行内)

4.字幕淡入淡出时间包括在字幕的起始和终止时间之内

5.注意代码\move和特效Scroll,Banner的区别和联系:
当文本内容为单行或单列时,完全可以用\move代码代替Scroll或Banner,而多行多列则是不行的.这是因为在用\move时,当文本的头字幕从起点坐标到达终点坐标时,该动作已完成,不管后面还有多少文本内容.而用Scroll或Banner则不一样,它要求在作用范围内的所有文本内容都必须到达终点坐标才算完成动作.
在速度的控制方面\move中字幕移动的速度是由字幕的显示时间决定的,时间越短,速度越快;而Scroll或Banner中字幕移动的速度是由参数delay所决定的,delay的值越小,速度越快.

6.当使用多个动态效果的叠加时,字幕运动变化的时间往往超过代码中规定的时间(动态效果越多,速度越慢),以至总时间超过字幕的显示时间.
怎么样?都看明白了吗?你现在就可以自己编写自己的水印了!编写水印时可要有耐心,要反复的试,时间一点也不能错呀!
{\pos(315,20)}
位置设置,如JRvS的水印出现在右上角。
(x,y)x相当于水平位置,从左到右增大。y是垂直位置,从上到下增大。
数值范围根据ssa字慕[script Info]内定义的范围,即
PlayResX: 384
PlayResY: 288
{\t(\frx1440)}、{\t(\fry1440)}、{\t(\frz1440)}
转动的效果,frx是绕X轴转动,fry是绕Y轴转动,frz是绕Z轴转动,就像风车转动一样(注意都是小写)
如:
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(330,40)}{\t(\fry1440)}XXX 制作
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(230,140)}{\t(\frz1440)}XXX 制作
Dialogue: Marked=0,0:00:01.35,0:00:05.34,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}{\t(\frx1440)}XXX制作
该效果就是:在具体位置出现转动效果,持续5秒,至于1440是角度,如180表示转动180度,根据时间轴的长度来控制快慢
1,字体变化
字体变化组合本身就可以实现很漂亮的效果
1.1 字体排版
{\fe134\fn方正舒体\fs24\frz30}极速
{\fe130\fnComic Sans MS}{\frx60}www
{\fe}是语种编码,简体中文134,繁体136,英文的是130。有些操作系统在style里定义格式后可以省略编码的命令
{\frx},{\fry},{\frx}是字体分别按x轴,y轴,z轴倾斜一个角度,如特效中“碧”“晴”的排版
完整的代码如下:
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{\frx50}X轴心旋转字体50度
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{\pos(150,150)}{\fry60}Y轴心旋转字体60度
Dialogue: Marked=0,0:00:01.00,0:00:04.30,Default,,0000,0000,0000,,{fs15}{\pos(140,90)}{\frz30}Z轴心旋转字体30度
1.2 字变形
{\t(\fscy300)}字变高
{\t(80,500,\fscy300)}字变高
{\t(\fscy300)}字拉长
{\t(80,500,\fscx300)}字拉长
{\t(80,500,\fscx200\fscy400)}字体变形
出现\t的命令都可以进行时间控制,也就是里面的80,500。表示在定义的时间轴里出现和完成这个特效的时间。时间控制和嵌套是ssa特效里变化最多、亦是不好掌握的一个内容。
完整的代码如下:
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscy300)}{\pos(190,200)}字变高
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscx300)}{\pos(190,240)}字拉长
Dialogue: Marked=0,0:00:04.35,0:00:07.10,Default,,0000,0000,0000,,{\t(80,500,\fscx200\fscy400)}{\pos(190,140)}字变形
1.3 字体缩放
{\fs1}{\t(1,\fs15)}1号字体放大到15号字体
{\fs15}{\t(15,\fs5)}15号字体缩小到1号字体
{\fscx500%}{\fscy500%}{\t(1,\fscx100%,\fscy100%)}缩小
100%是定义的style里的字体大小,这个缩放可以带字体变形,如:
{\fscx500%}{\fscy700%}{\t(1,\fscx100%,\fscy200%)}变形缩小
{\fs10}{\t(0,900,\fs50)}控制性放大
{\fs50}{\t(200,600,\fs10)}控制性缩小
{\fs50\t(0,600,\fs10\t(800,1400,\fs24))}控制性缩放
这个嵌套有些难度,但拆分成最简单的{\t\fs}就容易理解了。
完整的代码如:(这里定义的style里是15号字体)
Dialogue: Marked=0,0:00:16.00,0:00:16.50,Default,,0000,0000,0000,,{\pos(160,140)}{\ fscx500%}{\fscy500%}{\t(1,\fscx100%,\fscy100%)}{\frz15}缩{\frz345}放
Dialogue: Marked=0,0:00:16.00,0:00:16.50,Default,,0000,0000,0000,,{\pos(160,250)}{\ fscx500%}{\fscy700%}{\t(1,\fscx100%,\fscy200%)}变形缩小
Dialogue: Marked=0,0:00:16.50,0:00:17.50,Default,,0000,0000,0000,,{\pos(160,140)}{\frz15}{\t(1,\fs50)}缩{\frz345}放
Dialogue: Marked=0,0:00:20.00,0:00:22.50,Default,,0000,0000,0000,,{\fs10}{\t(0,900,\fs50)}控制性放大
Dialogue: Marked=0,0:00:20.00,0:00:22.50,Default,,0000,0000,0000,,{\pos(160,160)}{\fs50}{\t(200,600,\fs10)}控制性缩小
Dialogue: Marked=0,0:00:23.00,0:00:25.50,Default,,0000,0000,0000,,{\pos(160,190)}{\ fs10\t(0,600,\fs50\t(1200,1800,\fs10))}控制性缩放效果
1.4 字体旋转
{\c&HFF80FF&}{\t(30,1500,\fry720)}JRvS(转动)
{\c&HFF80FF&}{\t(30,1500,1,\fry720)}JRvS(转动)
{\t(\frx360)}、{\t(\fry360)}、{\t(\frz360)}是字体分别绕x轴,y轴,z轴旋转360度。一般使用{\t(\fry360)}出现沿y轴转动的特效为多数。同样里面的30和1500表示时间的控制
{\fs30\fry90}{\t(0,1500,2,\fs20\fry0)}字体Y轴旋转变小
完整代码如下:
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\pos(160,140)}{\t(\fry1440)}copd 制作-X轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\pos(160,140)}copd 制作-X轴
Dialogue: Marked=0,0:00:31.51,0:00:40.50,Default,,0000,0000,0000,,{\pos(160,240)}{\t(30,2500,\fry1440)}copd 制作-X轴(控制性)
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\pos(60,60)}{\t(\frz1440)}copd 制作-Z轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\pos(60,60)}copd 制作-Z轴
Dialogue: Marked=0,0:00:31.51,0:00:35.50,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}{\t(\frx1440)}copd 制作-y轴
Dialogue: Marked=0,0:00:35.49,0:00:40.50,Default,,0000,0000,0000,,{\fs15}{\pos(230,40)}copd 制作-y轴
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,200)}{\fs50\frx90}{\t(0,1500,\fs18\frx0)}字体X轴旋转变小
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,60)}{\fs40\frz360}{\t(0,500,\fs18\frz0)}字体z轴旋转变小
Dialogue: Marked=0,0:00:41.00,0:00:45.00,Default,,0000,0000,0000,,{\pos(190,260)}{\fs64\fry90}{\t(0,1500,\fs30\fry0)}字体Y轴旋转变小
1.5 字体变色
{\c&HFF8000&\t(0,500,\c&H80FF00&}从蓝色过度到绿色
至于什么搭配比较渐进,请看vobsub或者一些画图软件中的调色板,如“****到绿色”等。颜色代码,vobsub229以上的版本即可查看。
颜色代码进行层层嵌套,即可实现闪动的霓虹灯效果,如附件内JRvS的效果
完整代码;
Dialogue: Marked=0,0:00:45.30,0:00:48.00,Default,,0000,0000,0000,,{\pos(190,100)}{\ c&HFF8000&\t(0,500,\c&H80FF00&}渐变颜色
1.6 淡入淡出
淡入{\fad(400,0)}
淡出{\fad(0,400)}
淡入淡出 {\fad(400,400)}
数值是淡入淡出的时间,这个时间包括在字幕显示时间内,也就是说,如果淡入淡出效果设置时间较长,那么应该相应的提前和延迟字幕的起止时间。

2 移动
移动结合上述的各种字体特效可以实现更绚丽的效果
请看这个效果
Dialogue: Marked=0,0:00:47.00,0:00:55.00,Default,,0000,0000,0000,,{\move(0,0,60,120 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}欢
Dialogue: Marked=0,0:00:47.30,0:00:55.00,Default,,0000,0000,0000,,{\move(0,0,60,160 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}迎
Dialogue: Marked=0,0:00:48.00,0:00:55.00,Default,,0000,0000,0000,,{\move(0,57,60,200 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}光
Dialogue: Marked=0,0:00:48.30,0:00:55.00,Default,,0000,0000,0000,,{\move(0,57,60,240 [,100,500])}{\fad(400,80)}{\fs18\t(130,500,\fry360)}临
滚动字幕:
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,Banner;30;0;50,UC0079年12月24日
Dialogue: Marked=0,0:00:05.30,0:00:08.30,New Style,NTP,0000,0000,0000,Scroll up;0;240;30;20,我们要跟这艘战舰共存亡
第一个是横向滚动,30是速度、0代表右->左(改成1就是左->右)、50代表在屏幕边缘的透明度,值越大,字幕就...(不好形容自己试试就知道了,这个参数可以缺省设置)
第二个是纵向滚动,0和240代表Y轴坐标(可缺省)、30是速度、20是透明度(同上),另外,把UP改为DOWN就是上->下滚动
旋转字幕:
Dialogue: Marked=0,0:00:09.30,0:00:12.30,New Style,NTP,0000,0000,0000,,{\t(\fry720)}但我们不可让你们白死
其中,“y”代表沿y轴转,“x”“z”均可、720代表的是度数,旋转快慢由你所定义的动作时间而定(时间长,旋转慢;反之则快。)。要想饶XYZ三轴转就分别添加{\t(\frx__)}{\t(\frz__)}(__填上你想要的速度)
任意坐标移动
Dialogue: Marked=0,0:00:13.30,0:00:17.30,New Style,NTP,0000,0000,0000,,{\t(\move(32, 48, 200, 320))}直至完成任务为止
32,48代表起始位置坐标200,320表示终止位置坐标。
卡拉OK效果
Dialogue: Marked=0,0:00:18.40,0:00:20.40,New Style,NTP,0000,0000,0000,,{\k94}差{\K48}不{\ko80}多{\k150}了
大写的K=从左至右填充色彩(SecondaryColour为底色;PrimaryColour为填充色); ko=outline高亮显示(不推荐) ;数字是表示填充时间,单位:10ms
淡入淡出效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fad(300,550)}别慢吞吞
300-淡入时间,550-淡出时间 ,单位:毫秒(ms)。
强制字体效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\fn宋体)}别慢吞吞
无特别提示。
强制颜色效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{\c&H00ffff&}别慢吞吞
关于颜色的代码,请见第二讲的内容。
强制透明度效果
Dialogue: Marked=0,0:00:20.40,0:00:22.40,New Style,NTP,0000,0000,0000,,{1\a&H50&}别慢吞吞
1是代表第一颜色的透明度,2、3、4以此类推,透明度取值:00~FF。
以上就是一些常用的字幕特效,怎么样?还是很简单吧。
先用为快,以上的例子都是写简单的,不想深入的朋友,用上面的足够了。
下面将对SSA的参数的设置做一个比较详细的解说。
想要深入研究的朋友可以看看这里了。这次先从Script Info 讲起。Script Info——
脚本信息,顾名思义就是你所制作的字幕文件的一些信息,具体格式因所使用的编辑器不
同而不同,但却要遵守一个原则:就是要在开头用“[Script Info]”来标记。
下面是用SubCreator编辑时的脚本信息:
[Script Info]
Title: 08ms team 12
ScriptType: v4.00
Collisions: Normal
PlayResY: 480
PlayResX: 640
PlayDepth: 0
Timer: 100.0000
其中红字部分是重要部分,它会影响到后面的设置:比如ScriptType: v4.00会影响字幕特
效的相关命令(有一部分命令是要在v4.00+中才会实现的,因为V4+的代码是基于V4基础上
的有相似点,所以在此还是先介绍v4.00);
640 480则会影响字幕定位时的坐标。
接着,我们来看看v4 Styles,在这部分,我们要做的
就是设置字幕的各种属性简单的说就是设置全局参数。还是先放上例子再来说明吧:
[v4 Styles]
Format: Name,Fontname,Fontsize,PrimaryColour,SecondaryColour,TertiaryColour,BackColour,Bold,Italic,BorderStyle,Outline,Shadow,Alignment,MarginL,MarginR,MarginV,AlphaLevel,Encoding
Style: New Style,幼圆,30,16777215,4227327,8404992,16744448,0,0,1,1,2,2,30,30,12,0,134
Style: TITAL,宋体,40,13777215,2327327,5404392,14744448,0,-1,1,1,2,2,15,15,270,0,134
format是在说明各参数的含义:
name:你给这种风格的字幕所起的名字;
Fontname:字体类型;
Fontsize:文字大小;
PrimaryColour:第一字幕色——字幕首选色;
SecondaryColour:第二字幕色(目前本人仅知道在卡拉OK效果时会用上);
TertiaryColour,BackColour:字幕边缘色,阴影色;
Bold,Italic:粗体(B),斜体(I) 0为关闭,-1为开启;
BorderStyle;字幕显示方式:1=Outline + drop shadow, 3=Opaque box;(不好用中文表述,就采用原话,推荐用1)
Outline,Shadow:当上面的设置是1时,就可以设置文字的边框和阴影的粗细了,可取值:0,1,2,3,4;
Alignment:设置文字的对齐方式:1=左对齐,2=中对齐,3=右对齐,4=置顶,8=置中,5=1+4=置顶左对齐,6=2+4,11=3+8,应该知道是什么了吧;
MarginL,MarginR,MarginV:字幕距左、右以及垂直方向的距离,(会影响字幕的垂直方向的坐标和一排能显示的字幕个数,超出则会自动换行)推荐值:10,10,12底端,顶端不好定,只有编出来后再来调整;
AlphaLevel: 字幕的Alpha值,简单的说就是字幕的透明度,取值范围0-255;
Encoding:字幕的,没什么多说的:具体代码:
0=ANSI,1=DEFAULT,2=SYMBOL,128=SHIFTJIS,129=HANGEUL,134=GB2312,136=CHINESEBIG5,255=OEM,130=JOHAB,177=HEBREW,178=ARABIC,161=GREEK,162=TURKISH,163=VIETNAMESE,222=THAI,238=EASTEUROPE,204=RUSSIAN,77=MAC,186=BALTIC;(红字部分为常用的)
注意:
字幕风格可以设置多种,只要名字不同就可以在同一时间执行不同风格的字幕事件,
Dialogue: Marked=0,0:00:00.20,0:00:03.30,New Style,NTP,0000,0000,0000,,UC0079年12月24日
红字部分就是你所用的某种风格的字幕的名称。
接下来,说说字幕的颜色。 .......其实也没什么说的,本想直接编一个小程序自动
显示所选色彩的颜色代码,但最近学习真的很忙,没那精力,就在这里说说吧。小学时就学
过RGB三原色,其他颜色也就是这三种原色搭配而产生的,在WINDOWS里,三原色也有相应的
值以16进制编译,三种色都定义了256种色彩深度也就是0-FF,任何颜色按RGB表示出来假如说
是56F49E,在SSA中就要以BGR形式表示出来,即:9EF456。色彩代码要注意的就只有这一点
关于色彩的代码获得可以在WINDOWS的绘图工具中找自定义颜色然后把三原色的10进制数值转换
成16进制按BGR顺序排列就可得到。
关于用SUBCREATOR生成的SSA字幕时间轴不准确的问题:
看到有人提到这个问题,因为是整体有偏差,所以可以用vobsub附带的subresync来调整,方便些。
具体做法就看这里吧
特效码一览
格式修改: [在字幕中插入,例如: 今天的天气\n好晴朗啊]
\n.......................空格(是当字幕在一行显示不完时会换行,但是对于双字节的字符无法判断是否超出屏幕)
\N.......................强制换行
\h.......................强制空格
在{...}之间加入的特效码: <>内表示可用的参数,[]内表示可选参数,在具体使用时不用加 <>,[]
\a <alignment>.................................强制字幕在屏幕上的对齐位置:具体见关于alignment说明
\b <0/1/weight>................................字体加粗
\i <0/1>.......................................斜体字
\u <0/1>.......................................下划线
\s <0/1>.......................................删除线
\bord <width>..................................字体加宽
\shad <depth>..................................阴影深度
\be <0/1>......................................边角模糊
\fn <name>.....................................强制字体类型
\fe <charset>..................................强制字幕编码
\fs <size>.....................................强制字幕大小 例如:\fs34
\fsc <x/y> <百分比>............................字体比例[fscx代表横向比例fscy代表纵向,单位:百分比]
\fsp <pixels>..................................字间距
\fr[ <x/y/z>] <角度数>.........................旋转[x,y,z轴三个方向]
\fe <charset>..................................字符编码
\c&H <bbggrr>&.................................强制字幕色
\ <1/2/3/4>c&H <bbggrr>&.......................主/次/外框/阴影 字幕色设定
\alpha&H <aa>&.................................透明度
\ <1/2/3/4>a&H <aa>&...........................主/次/外框/阴影 透明度
\k[ <f/o>] <duration>..........................卡拉OK效果 (f-从左至右添充[未填充时显示次要色,填充后显示主色], o-字幕外框高亮显示?)
\K.............................................跟 \kf 同样效果(填充效果)
\r[ <name>]....................................强制加载名为“name”的预设风格 ["[v4 Styles]"定义的]
\t([ <t1>, <t2>,][ <加速度>,] <特效码>)........动态显示, 加速度: 0~1减速, 大于1加速(方括号内的可以却省设置)
\move( <x1>, <y1>, <x2>, <y2>[, <t1>, <t2>])...移动(方括号内的可以却省设置)
\pos( <x>, <y>)................................强制定位
\clip( <x1>, <y1>, <x2>, <y2>).................字幕裁剪
\fad( <t1>, <t2>)..............................淡入淡出[t1-开始时间,t2-结束时间]
\q <num>.......................................换行方式:0智能换行,1行尾换行,2无换行,3智能换行(尽量使下一行宽于上一行)
所谓后期加工,主要也就是添加特效代码,修改字体大小颜色等工序。基本字幕的制作目前有很多工具都能办到。上面列举的也并不是SSA的全部,另外还有SSA的加强格式ASS,因为支持更多的控制代码,所以合理的搭配可以玩出更很多花样。
关于ASS,实在没多大精力重新解说了。因为80%的都与SSA相同,加之现在的字幕插件里面都附带了ASS的说明文件的,只要仔细阅读,就能轻松掌握。还是多留些想像空间给各位爱好者吧

一些需要注意事情:
1.要想在外挂字幕的时候能看到动态效果;请务必关闭VSFILTER的Pre-buffer subpictures
2.注意字幕文件的保存格式,有ANSI和UNICODE之分,针对不同的系统以及不同版本的VSFILTER,选择不同的保存方式。(如果用ANSI方式保存不能正常显示,就换UNICODE来保存)另外要注意字体名称不要写错了。
[SSA字幕特效]
学习ssa字幕特效,应该在掌握压制原则和技巧的基础上,如此达到锦上添花的效果。不要为了特效而去特效。加载特效字幕流,码率不要低于280k。
我这个特效技巧不包括卡拉ok和绘图命令,侧重于常用的几个语法和时间轴嵌套。入门参见我之前发的那个普通教程。
一,滚动和移动
横幅滚动 :Banner;
Dialogue: Marked=0,0:00:01.30,0:01:28.90,Default,,0000,0000,0000,Banner;28;0;60,郑重声明:本作品之片源、字幕均来自互联网,版权归原电影公司所有。任何组织和个人不得公开传播或用于任何商业盈利用途,否则一切后果由该组织或个人承担!本站和制作者不承担任何法律及连带责任!请自觉于下载后24小时内删除。如果喜欢本片,请购买正版!{\move(20, 20,20,20}
或者:
Dialogue: Marked=0,0:00:01.34,0:00:50.35,mine,,20,20,260,Banner;28;0;60,本作品来自互联网,仅供个人影视制作学习交流之用,任何组织和个人不得公开传播或用于任何商业盈利用途……
这2个的效果都是在影片的顶部从右到左的滚动出现免责信息。Banner之前的260是方位,表示显示在顶部,改成10或者下面的那个{\move(20, 20,20,20}去掉即显示在屏幕的底部,根据爱好确定部位好了。Banner之后的3个参数分别表示:28是滚动的速度,越小速度越快;0是从右到左,改成1就是从左到右;60是淡出,你将这个数值改成100再看看效果即可明白!
从下往上
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll up;0;300;40;70,往上滚动
从上往下
Dialogue: Marked=0,0:00:00.20,0:00:10.10,Default,,0000,0000,0000,Scroll down;0;300;40;70,往下滚动
0;300表示移动的距离 40;是移动的速度,越小就越快 70是淡出

二,淡入淡出
vobsub的ssa语法
\fade(<a1>,<a2>,<a3>,<t1>,<t2>,<t3>,<t4> ) fadein: t1 -> t2, fadeout: t3 -> t4
\fad(<t1>,<t2> ) fadein: start -> start+t1, fadeout: end-t2 -> end
1,简单的淡入淡出
{\fad(1000,100)}和{\fad(100,1000)}
前者表示淡入(逐渐出现),后者表示淡出(逐渐消失)
小数据一般是灰度值,0-255。如果超过255,那么数值代表淡出的时间,不再表示灰度值,效果就是最简单的淡入淡出
大数据表示时间轴定义范围内效果的梯度显示及0-255灰度变化的时间范围。
2,控制性淡入淡出
{\fade(255,0,255,100,4000,8500,10000)}
一般前3个数值不要改动,表示逐渐出现(即灰度从0~最大的255),然后逐渐消失(即灰度从255~0),逐渐消失的时间控制由后面的4个数值控制。在定义的时间轴内(如这例,11秒),100-4000表示从0.1秒开始逐渐出现(效果的控制时间为到第四秒结束,即3.9秒),8500-10000表示从第8.5秒开始开始逐渐消失(效果控制的时间为1.5秒)

三,几个时间嵌套控制语法应用详解
vobsub的ssa语法
\fs<size> size
\fsc<x/y><percent> scale
\fsp<pixels> spacing
\fr[<x/y/z>]<degrees> rotation
\c&H<bbggrr>& primary color
加入 \t(,\) 的时间控制参数,可以控制性的来显示特效显示,另外可以层层嵌套,实现难度较大的特效,如抖动、闪烁、变色等
\t(10,800,30,\...)里面前2个个数值分别表示(时间轴规定的时间范围内)出现时间和效果显示时间。第三个数值可以不要,但要保留后面的逗号,个别特效需要第三个数值来控制。...又可嵌套,但是需要注意后面的括号数目
1,字体控制性缩放{\t(\fs)}
控制性放大:{\fs15}{\t(0,800,\fs30)}或者{\fs15\t(0,800,\fs30)}
控制性缩小:{\fs30\t(0,800,\fs15)}
控制性缩小放大:{\fs30\t(0,800,\fs15)}{\t(2000,2800,\fs24)}或者{\fs30\t(0,800,\fs15\t(2000,2800,\fs24))}
表示在定义的时间轴范围内,先立即缩小(字体从30号缩小到15号),缩小的控制时间为800ms;然后在第2秒的时候再放大,放大的控制时间也是800ms。也就是说完成这个特效时间轴至少需要3秒的时间,如果时间轴超过3秒,那么3秒以后的显示效果就是最后一个特效完成后的状态,如,该例就是最终字体保持在24号
2,字体变形缩放{\t(\fscx)},{\t(\fscy)}
字体变长:{\t(0,500,\fscx500)}
字体变高:{\t(0,500,\fscy500)}
字体变长变高:{\t(0,500,\fscx500,\fscy300)}
极端效果:{\t(0,500,1,\fscx0,\fscy500)}和{\t(0,500,1,\fscx1000,\fscy0)}
默认大小是fscx100,fscy100。极端的效果是将字体无限拉长或者压扁,如此结合时间轴控制可以实现光影,如牛过的rmvb特效
3,字体间距缩放{\t(\fsp)}
一般是作成先放大间距再缩小间距的特效,比较动感。
{\t(0,800,\fsp20)}{\t(800,1300,\fsp5)}或者{\t(0,800,\fsp20\t(800,1300,\fsp5))}
一般结合{\move()}语法一起使用
4,旋转的特效{\t(\frx)},{\t(\fry)},{\t(\frz)}
旋转的特效变化比较多,稍微复杂些
x,y,z分别表示绕x轴,y轴和z轴旋转的角度,建议使用90的倍数,默认一般是右手螺旋或逆时针旋转 如:
{\t(\frx1440)}绕x轴旋转4圈
{\t(\fry1440)}绕y轴旋转4圈
{\t(\frz1440)}绕z轴旋转4圈(风车旋转)
按一定方向旋转。为了好理解,以z轴旋转为例,大家想象成在一个钟面上 如:
{\frz90\t(30,500,\frz0)}0点到3点
{\frz0\t(30,500,\frz90)}3点到0点
{\frz270\t(30,500,\frz180)}6点到9点
......套用即可
不加\t的情况表示沿坐标轴旋转一个角度,用于字体排版,抖动的特效就是嵌套这个语法而来的
如一个简单的抖动效果:(注意后面的括号数)
Dialogue: Marked=0,0:00:01.00,0:00:5.30,jrvs,,0000,0000,0000,,{\frz360\fs20\t(51,100,\frz390\t(100,150,\frz360\t(150,200,\frz330\t(200,250,\frz360\t(250,300,\frz390\t(200,250,\frz360\t(300,350,\frz330\t(350,400,\frz360)))))))))}♀抖动
结合字体缩放等实现一些简单的组合特效
如常用的字体Y轴旋转放大,
{\fs10\fry180\t(0,1500,\fry0\fs25)}
如结合淡入淡出和移动显示
Dialogue: Marked=0,0:00:01.00,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(60,160,30,160,10,300)}{\fry90}{\t(0,300,\fry0)}欢
Dialogue: Marked=0,0:00:01.20,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(80,160,50,160,10,300)}{\fry90}{\t(0,300,\fry0)}迎
Dialogue: Marked=0,0:00:01.40,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(100,160,70,160,10,300)}{\fry90}{\t(0,300,\fry0)}光
Dialogue: Marked=0,0:00:01.60,0:00:10.30,Default,,0000,0000,0000,,{\fade(255,0,255,10,300,2500,3000)}{\move(120,160,90,160,10,300)}{\fry90}{\t(0,300,\fry0)}临
注:只要时间轴上先定义时间差即可,这里是20秒的间隔,里面的复制即可
5,变色{\t\c&HFF80FF&}
颜色的语法并不难,难的是颜色的选择和过度。
Dialogue: Marked=0,0:00:02.20,0:00:02.50,mine,,0000,0000,0000,,{\pos(290,220)}{\fs60}{\t(0,300,\fs20)}{\c&HFF80FF&}{\fe130\fnComic Sans MS}JRvS
Dialogue: Marked=0,0:00:02.50,0:00:03.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.10,0:00:03.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.30,0:00:03.50,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:03.50,0:00:04.10,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.10,0:00:04.30,mine,,0000,0000,0000,,{\c&HFF80FF&}{\t(0,100,\c&H80FF00&\t(100,200,\c&H808000&\t(200,300,\c&H146365&\t(300,400,\c&H83E4E7&))))}{\fe130\fs20\fnComic Sans MS}{\pos(290,220)}JRvS
Dialogue: Marked=0,0:00:04.30,0:00:35.00,mine,,0000,0000,0000,,{\pos(290,220)}{\c&HFF80FF&}{\t(30,1500,\fry720)}{\fad(100,1000)}{\fe130\fs20\fnComic Sans MS}JRvS

四,图形字符的加载
直接加载图片不太容易实现。利用丰富多彩的图形字符一样可以达到部分效果。图形字符可以到下面这个包罗万象的网站去下载
既然是图形字符,那么使用上述的任何一个命令来实现图形字符特效。如牛过的特效中那个转动的环。



-----------------------------------分割线----------------------------------------------- 
-------------------------------另外一个版本------------------------------------------- 

 
ssa/ass字幕格式全解析

      内容:
      一. 概述
      二. 文件各个部分解析
       三. 各种类型的行
      四.  [ Script Info]部分的标题行
      五. [v4+ Styles]部分的风格行Style
      六. [Events]事件部分的对话行Dialogue
      七. [Events]事件部分的注解行Comment
      八. [Events]事件部分的图片行Picture
      九. [Events]事件部分的声音行Sound
      十. [Events]事件部分的影片行Movie
      十一. [Events]事件部分的命令行Command
      附A. 风格覆盖代码(Tags, Codes)
      附B. 内嵌的字体/图片编码

注: 
1) 此文档是对原SSA文件规格英文文档进行翻译和补充而成, 原文件可从以下链接获得:
 http://www.perlfu.co.uk/projects/asa/ass-specs.doc
 另外参考了以下资料:
 http://aegisub.cellosoft.com/docs/ASS_Tags
 http://en.wikipedia.org/wiki/SubStation_Alpha
2) 表述编写格式时, 用到的符号说明如下:
   <..>    参数
   [..]      可选项
3) 除附A以外, 用红色字体标明ASS相对于SSA格式的新增功能或者改动
4) 用蓝色, 加粗, 下划线等符号表明需要注意的地方.


一. 概述


SSA全称SubStation Alpha, 是由CS Low(又称Kotus)创建的一种字幕格式, 用以实现比传统字幕诸如srt等格式更为复杂的功能. SSA目前的版本为v4.00. SSA同时也是一款软件的名称, 专用于创建和编辑SSA格式的字幕.
ASS是一种比SSA更为高级的字幕格式, 全称Advanced SubStation Alpha, 实质是SSA v4.00+ 版本. 它拥有比SSA更多的功能.

1. SSA v4.00与之前的SSA版本格式不同. v4可以阅读和加载以前版本的格式, 但之前版本不支持v4以上的编写格式. 换句话说, SSA从v4版本开始可以阅读它认识的命令而忽略不认识的命令, 从而可以向下兼容, 也可以向上兼容.
2. 文件为普通的DOS文本格式. 也就是说它可以用记事本打开编辑, 同时需要注意编写出错时有可能导致无法预料的结果.
3. 文件编写时所划分的各部分, 从形式上来说类似于ini文件, 但它并非真正的ini文件
4. 各部分中的绝大多行都以一说明性的文字加上冒号来开头, 指明该行包含哪一些信息.
5. 每一行中的信息都以逗号分隔. 因此风格名和人物角色名中要求不能出现逗号.
6. 事件部分([Events])里的各行可以不分先后. 也就是说人物对白行可以不按时间顺序排列
7. 不正确的行会被忽略. 同时会给出警告指出被忽略的行数
8. 一行里包含了完整的信息, 必须在一行内写完, 不能分成多行
9. 当文件中引用了一个未知的风格名(style)时, 加载时会用默认的风格来替代(Default)
10. 当一个风格(Style)中引用了系统中没有安装的字体, 则会用Arial字体来代替.

二. 文件各部分解析

[Script Info]
这一部分包含了文件内容的标题和总体信息.  [Script Info]这一行必须是v4版本文件的第一行

[v4 Styles]
字幕正文使用的风格都在这一部分做出相关定义.  注: ASS使用的是[v4+ Styles]

[Events]
这部分包含所有的事件, 有字幕, 评论, 图片, 声音, 影片和命令. 基本上屏幕中出现的所有内容都集中在这一部分.

[Fonts]
如果想把字体内嵌入字幕文件, 那么字体文件须采用数字编码后放在这一部分. 只有truetyle字体才能内嵌入SSA/ASS文件
每一个内嵌字体文件以一行开头, 格式如下:
fontname: <文件名>
开头的"fontname"必须全部用小写, 如果大写会让ASS文件视其为文件编码的一部分.
<文件名>是SSA文件保存字体时使用的文件名, 命名规则如下:
truetype字体原来的字体名称
加一条下划线
如果是粗体则加一个"B"
如果是斜休则加一个"I"
加一个数字表明字体编码(字符集)
最后加上".ttf"
例如:
fontname: comic_B0.ttf

在这一行之后是一些可打印的字符组成的行, 代表组成这个字体的二进制字符, 除了最后一行可能短些, 其余每行有80个字符.
从二进制转换到字符用的是UUE-encoding的编码方式, 编码的详细信息参见附B

[Graphics]
如果选择内嵌图片, 那这一部分就包含了所有用到的数字编码格式的图片文件. 开头一行的格式如下:
filename: <文件名>
开头的"filename"必须为小写, 如果大写会被认为是文件编码的一部分.
<文件名>是SSA文件保存图片时使用的文件名, 它与[Events]事件部分中提及的图片名称一致.

SSA会把文件中找到的任何文件保存到SSA的程序目录中的"Pictures"子目录中.  例如: c:\program files\Sub Station Alpha v4.00\Pictures. SSA会先从文件本身中寻找这些编码好的文件, 但当没有找到时会去"Pictures"这个子目录里去找.

注: 现在的SSA文件已经很少包含"[Pictures]" 或者 "[Fonts]" 这两个部分. 因为这些功能只被Sub Station Alpha这一个程序所支持. 而其它的filter (Vobsub/Vsfilter/Avery Lee Subtitler filter) 都不支持.

三. 各种类型的行

在这一节里简要地说明在每个部分中出现的所有行的类型和大致功能, 各自具体说明参见后面的章节.

;           只在编写中请说明作用的行, 加载字幕时不可见.
Title:          标题, 是对字幕的描述
Original Script:    最初创建字幕的人
Original Translation: (可选) 最初翻译对话的人
Original Editing:  (可选) 最初的编辑者, 一般是所有参与翻译和校对等工作的人
Original Timing:  (可选) 最初的时间轴人员
Synch Point:     (可选) 指出从哪一个时间点开始进行字幕加载播放
Script Updated By:   (可选) 对原字幕对话进行编辑更新的人
Update Details:   进行了哪些更新等具体信息
ScriptType:    对SSA/ASS文件的版本做说明, 例如"v4.00".  ASS的版本为"v4.00+"
Collisions:      当两条字幕重叠时, 如何进行相对移动
PlayResY:        文件所使用的视频高度参考标准
PlayResX:     文件所使用的视频宽度参考标准
PlayDepth:    加载字幕时所使用的颜色深度
Timer:      对字幕加载的速度调整, 数值为百分数. 例如"100.0000"代表100%.
ScaledBorderAndShadow: 边框宽度与阴影深度是否随着视频分辨率同等比例缩放.
Style:        定义每条字幕所使用的风格
Dialogue:       指明为对话事件, 即屏幕上出现的字幕
Comment:      指明此行是评论/解释事件, 它与Dialogue, Picture, Sound, Movie或者Command事件包含相同的信息, 以此来进行解释说明, 但加载字幕时不会出现在屏幕
Picture:        指明为图片事件, 即显示.bmp, .jpg, .gif, .ico 或者 .wmf 格式的图片( 注意不支持png, 且filter不支持加载图片)
Sound:      指明为声音事件, 即播放.wav格式的声音( filter不支持)
Movie:       指明为电影事件, 即加载avi视频( filter不支持)
Command:     指明为命令事件, 即可在后台打开某个程序

四. [Script Info]部分的标题行


;         分号, 后面可以跟任何内容. 这一行是说明性文字, 加载字幕时不显示
         注意此类型行必须要把分号放最前.  老版本不是用分号而是用!:
Title:       标题, 如果没有提供, 则自动使用<untitled>
Original Script:     剧本的最初作者, 若没有提供则自动使用<unknown>
Original Translation:  (可选)原剧本的翻译者, 若没有提供则该行不显示
Original Editing:   (可选)原剧本的编者和校对, 若没有提供则该行不显示
Original Timing:    (可选)原剧本的时间轴人员, 若没有提供则该行不显示
Synch Point:    (可选)从哪个时间点开始加载字幕, 若没有提供则该行不显示
Script Updated By:  (可选)对原剧本的修改/更新人员, 若没有提供则该行不显示
Update Details:    更新的具体信息, 若没有提供则该行不显示
Script Type:    SSA的版本信息,  ASS的版本为"v4.00+"
Collisions:      当字幕时间重叠时, 前后字幕的堆叠方式. 
         值为"Normal"时, 后一条字幕出现在前一条字幕的上方. 
         如果值为"Reverse"时, 前一条字幕往上移动给后一条字幕让位.
PlayResY:          文件所使用的视频高度参考标准, 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置
PlayResX:      文件所使用的视频宽度参考标准, 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置. 
          如果只提供了PlayResX, PlayResY其中一种, 那另一种会按实际视频的像素值为准. 
          提供的分辨率数值影响以下参数:
          1) 所有给出的坐标(到边缘的距离, \pos, \move, 矢量绘图等)都以此分辨率作为参照.
          2) 所有的文字字号均按照此分辨率等比例放大缩小
          3) 当ScaledBorderAndShadow被启用时, 所有边框宽度和阴影深度都按照此分辨率与实际分辨率的比例等比例缩放
          4) 这个分辨率不影响最终显示文字的宽高比, 但影响矢量绘画图形的宽高比.
PlayDepth:     加载字幕时使用的色深(颜色的数目), 如果使用Directdraw回放SSA v4会自动选择最相近的启用的设置
Timer:       字幕加载的速度调整, 数值为百分数. 例如"100.0000"代表100%. 其数值有4位小数点. 
         它相当于对ASS字幕的时间速度进行乘法运算.
         当速度大于100%时, 总时间会缩短, 而相应的字幕会越来越靠前. 
         当速度小于100%时, 总时间会延长, 而相应的字幕会越来越靠后. 
WrapStyle:     定义默认的换行方式,  
          0: 智能换行, 行分得较平均, 上面的行较长
          1: 一行结束后从行尾的词分行
          2: 不换行. 此模式下只有\n, \N才换行
          3: 与模式0相同, 但下面的行分得比较长
ScaledBorderAndShadow: 指定边框宽度与阴影深度是否随着视频分辨率等比例缩放. 可为Yes, No. 默认为No.
         当取值为No时, 边框宽度与阴影深度完全按照指定的像素数显示.
         当取值为Yes时, 边框宽度与阴影深度随着实际视频的分辨率同等比例缩放.

五. [v4+ Styles]部分的风格行Style


Style定义了字幕的样式和位置. 所有的Style都在单独的Style里进行定义.
除了阴影/边框的类型和深度, 其余所有的风格设置都可以由字幕文本中的覆写代码所替代.
在定义风格之前先要有一行"Format:"来定义风格中每一个字段所代表的含义, 这些字段名称必须拼写准确, 顺序可以打乱, 字段名表示如下:

Name, Fontname, Fontsize, PrimaryColour, SecondaryColour,  TertiaryColour, BackColour, Bold, Italic,  Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV,  AlphaLevel, Encoding

字段1:  Name. 风格(Style)的名称. 区分大小写.  不能包含逗号.
字段2:  Fontname. 使用的字体名称, 区分大小写.
字段3:  Fontsize. 字体的字号
字段4:  PrimaryColour. 设置主要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 为字幕填充颜色
字段5:  SecondaryColour. 设置次要颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR. 在卡拉OK效果中由次要颜色变为主要颜色.
字段6:   TertiaryColour( ASS中的名称为OutlineColor), 设置轮廓颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR.
字段7:  BackColour, 设置阴影颜色, 为蓝-绿-红三色的十六进制代码相排列, BBGGRR.
字段4-7: ASS的这些字段还包含了alpha通道信息. (AABBGGRR), 注ASS的颜色代码要在前面加上&H
字段8:  Bold. -1为粗体, 0为常规
字段9:  Italic. -1为斜体, 0为常规
字段9.1:  Underline. [-1 或者 0] 下划线
字段9.2:  Strikeout. [-1 或者 0] 中划线/删除线
字段9.3:  ScaleX. 修改文字的宽度. 为百分数
字段9.4:  ScaleY. 修改文字的高度. 为百分数
字段9.5:  Spacing. 文字间的额外间隙. 为像素数
字段9.6:  Angle. 按Z轴进行旋转的度数, 原点由alignment进行了定义. 可以为小数

字段10:   BorderStyle. 1=边框+阴影, 3=纯色背景. 当值为3时, 文字下方为轮廓颜色的背景, 最下方为阴影颜色背景.
字段11:   Outline. 当BorderStyle为1时, 该值定义文字轮廓宽度, 为像素数, 常见有0, 1, 2, 3, 4.
字段12:   Shadow. 当BorderStyle为1时, 该值定义阴影的深度, 为像素数, 常见有0, 1, 2, 3, 4.
字段13:   Alignment. 定义字幕的位置. 字幕在下方时, 1=左对齐, 2=居中, 3=右对齐. 1, 2, 3加上4后字幕出现在屏幕上方. 1, 2, 3加上8后字幕出现在屏幕中间. 例: 11=屏幕中间右对齐.
字段13:   Alignment. 对于ASS字幕而言, 字幕的位置与小键盘数字对应的位置相同.
字段14:   MarginL. 字幕可出现区域与左边缘的距离, 为像素数
字段15:   MarginR. 字幕可出现区域与右边缘的距离, 为像素数
字段16:   MarginV. 垂直距离
      对于处在下方的字幕, 此值是字幕到底端的像素数
       对于处在屏幕上方的字幕, 此值为字幕到顶端的像素数.
       对于处在屏幕中间的字幕, 此值被忽略.
字段17:   AlphaLevel. SSA字幕用来定义透明度
字段17:   AAS没有该字段.
字段18:   Encoding. 指明字体的字符集或编码方式. 如0为英文, 134为简体中文, 136为繁体中文.  当文件为非UNICODE类型编码时, 该值对字幕的显示起作用.

六. [Events]部分的对话行Dialogue

Dialogue类型的行(对话行)包括字幕对白, 时间轴信息, 以及对白的显示方式.
在对话行出现前必须有一条格式行Format: 来对逗号分隔的每个字段进行定义, 该格式行中的每一个字段必须拼写准确, 内容如下:

Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

最后的一个字段永远都是对白文字的字段, 因此可以包含逗号. 前面的字段顺序可以改变.

字段1:  Marked. 值为0表示该行为"未标识"行, 值为1表示该行为"标识"行
字段1:  Layer. ASS的这个字段名是Layer(图层), 可以为任意的整数. 图层不同的两条位置/时间有重叠的字幕不被视为有冲突, 图层号码大的字幕显示在图层号小的上方.
字段2:  Start. 事件开始的时间, 格式为0:00:00:00(时:分:秒:百分数),  注意小时只有一位数
字段3:  End. 事件结束的时间. 格式为0:00:00:00(时:分:秒:百分数),  注意小时只有一位数
字段4:  Style. 该条字幕所使用的风格. 风格的具体信息在[V4 + Style]这一部分中进行定义
字段5:  Name. 角色名, 指出对白是由影片中哪位演员所说的. 字幕加载时不显示, 只为了编写时理解方便.
字段6:  MarginL. 使用新的与左边缘的距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值.
字段7:  MarginR. 使用新的与右边缘的距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值.
字段8:  MarginV. 使用新的垂直距离, 为4位数字代表的像素值. 0000代表使用当前Style定义的值. 具体说明参见上面[v4+ Style]里的说明
字段9:  Effect. 过渡效果. 可以为空值, 或者为三种过渡效果之一.
    效果名称区分大小写, 必须拼写准确. 且不加任何引号:
    "Karaoke" 是卡拉OK效果, 每个字依次高亮显示.   注: 在ASS中该效果已经废弃不用.
    "Scroll up;y1;y2;delay [;fadeawayheight]" 滚动效果, 指文字/图片向上滚动. 各参数以分号分隔.
         y1与y2是屏幕垂直区域的像素值, 位置可以互换. 当这两个值都为0时则全屏幕内滚动
         delay可取值1-100, 代表滚动速度的降低值. 当其为0时滚动速度最快.
    “Banner;delay”横幅效果. 所有文字被合并到单行, 并从右至左横向移动. 
         delay的值可由1到100, 代表横幅移动速度的降低值. 当其为0时移动速度最快.
     "Scroll down;y1;y2;delay[;fadeawayheight]" 向下滚动
     “Banner;delay[;lefttoright;fadeawaywidth]”
     注意红字为ASS新增功能. 
     lefttoright可取值0或1, 为可选, 默认为0(右出左进)
     当delay值大于0时, 移动速度为(1000/delay)像素每秒
     (注意: Avery Lee的字幕插件阅读滚动效果的顺序为: delay;y1;y2)
     fadeawayheight以及fadeawaywidth可令效果边缘的像素呈现透明.
字段10: Text. 为对白字幕区域, 是最终出现在屏幕上的字幕. 任何位于第9个逗号后的内容均被看作是对白字幕, 所以本身可以包含逗号.
    在这一个字段中可以包含\n, \N, \h这三种分行/空格代码, 以及其它在大括号{ }内的风格覆写控制代码. 详情参看附A.

七. [Events]事件部分的注解行Comment

在[Events]这一部分内, 以Comment: 开头的行. 它可以与其它类型的事件行包含一样的信息, 但不会被作为字幕加载到屏幕上. 它起评论/说明的作用.

八. [Events]事件部分的图片行Picture

在[Events]这一部分内, 以Picture: 开头的行. 它与Dialogue行包含一样的控制信息, 但是在字段10的位置指定要显示的图片完整路径与图片名称. 在前面字段指定的风格被忽略, 滚动效果可以运用到图片事件上. MarginL和MarginV被用来指定图片与左边缘与下边缘的像素距离. 当MarginL为0000时图片水平居中显示. 当MarginV为0000时, 图片垂直居中.

支持的图片格式有.bmp, .jpg, .gif, .ico 以及.wmf 格式的图片(不支持png) 注意,  只有SSA软件能支持加载图片事件, filter则不支持.

九. [Events]事件部分的声音行Sound

在[Events]这一部分内, 以Sound: 开头的行. 它与Dialogue行包含一样的控制信息, 但是在字段10的位置指定要加载的声音文件完整路径与名称, 格式为.wav. 风格与距离等值被忽略, 而且结束的时间值也被忽略. 该声音会播放到它结束, 或者播放到新的声音行加入为止.
注:  各filter不支持加载声音行

十. [Events]事件部分的影片行Movie

在[Events]这一部分内, 以Movie: 开头的行. 它与Dialogue行包含一样的控制信息, 但是在字段10的位置指定要加载的视频文件完整路径与名称, 格式为.avi. 风格与效果等值被忽略

结束的时间值(End)指出影片画面消失的时间, 但如果avi文件仍然没有结束, 则其声音仍然会持续播放. 

MarginL和MarginV被用来指定影片与左边缘, 上边缘的像素距离(与图片行不同). 当MarginL为0000时视频水平居中显示. 当MarginV为0000时, 视频垂直居中.

注:  Filter不支持加载影片行
当Movie与Sound行有时间重叠时, 实际听到的声音以先开始的内容为准.

十一. [Events]事件部分的命令行Command

在[Events]这一部分内, 以Command: 开头的行. 它与Dialogue行包含一样的控制信息, 但是在字段10的位置指定要运行的程序完整路径与名称.
风格, 距离, 效果, 结束时间都被忽略. 程序会运行到它结束为止, 或者运行到手动关掉为止.  注: Filter不支持加载命令行.

SSA软件内置的一些命令可以出现在SSA文件内. 因完全用不到故将英文原文引用如下:
There are also internal SSA commands which can appear in SSA scripts - the "SSA:Pause", “SSA:Wait for trigger” command events, and genlock control commands. These all begin with "SSA:"
The SSA:Pause command has the same effect as pressing "P" during script playback. It is useful as a second "synch point" to resume subtitling after switching sides of a laserdisk.
The “SSA:Wait for audio trigger” command has the same effect as pressing "P" during script playback, but pausing is automatically cancelled if the audio input to the computer exceeds a specified “trigger” level. It is useful as a second "synch point" to resume subtitling after switching sides of a laserdisk. The audio triggering can be overridden to resume playback - by pressing "P".

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<x 或 y><百分数> 缩放文字大小. <x 或 y>指定文字是横向还是纵向缩放. <百分数>指定调整到百分之多少. 同样适用于矢量图形.
\fsp<像素值>     文字间增加额外的间隔(font spacing), 默认为0
\fr[<x/y/z>]<度数>     文字旋转一定的度数(font rotation)       
            <x/y/z>表明文字沿着三维空间中哪个坐标轴旋转.
            原点由\org代码来指定, 否则由默认的定位点来决定(参见\pos的说明)
            \fr 默认代表\frz. <度数>可以为负值, 可以大于360. 此命令同样适用于矢量图形.
\fe<字符集>     指定文字的编码(font encoding). 例如0为英文, 134为简体中文, 136为繁体中文. 1为系统默认.
            注: 当ASS/SSA文件本身的编码为非Unicode编码时, 这个数值总影响到按哪种代码页来显示字幕.
            推荐保存ASS/SSA文件时选择Unicode方式的编码, 例如UTF-8. 这样可以忽略这个值的设置
\c&H<bbggrr>&    指定文字的颜色(color). <bbggrr>是一个十六进制的RGB数值, 但颜色顺序相反(蓝-绿-红).
            <bbggrr>排在最前的00可以忽略不写, 例如{\c&HFF&}={\c&H0000FF&}, 为纯红色
            \1c&Hbbggrr&, \2c&Hbbggrr&, \3c&Hbbggrr&, \4c&Hbbggrr&分别设定主要, 次要, 边框, 阴影颜色
            \c 相当于\1c, 为字体本身填充颜色
\alpha&H<aa>&   设定文字的透明度(alpha). <aa>是一个十六进制数值. 00为全见, FF为全透明
            \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(<x>, <y>)      设置该行显示的位置, x,y为定位点的坐标值, 屏幕可见区的坐标为正值. 原点(0,0)在左上角落
            对于不同屏幕排列的字幕, 定位点的相对位置不同. 
            \an1的定位点在字幕左下角, \an2的定位点在字幕正中下方, \an3的定位点在字幕右下角
            \an4的定位点在字幕正中左端, \an5的定位点在字幕正中, \an6的定位点在字幕正中最右端
            \an7的定位点在字幕左上角, \an8的定位点在字幕正中上方, \an9的定位点在字幕右上角
            一行中有多个\pos时以最前面的\pos值为准
\move(<x1>, <y1>, <x2>, <y2>[, <时值1>, <时值2>])
            提供从一个位置到另一个位置的移动动态效果.
            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(<x>, <y>)    设置旋转的原点坐标(origin), 它影响一行中所有的旋转
            当有旋转效果的一行中没有\org代码, 则用于旋转的原点坐标就是默认的定位点.
            原点坐标可以放置在画面可见区域以外, 足够远时通过旋转一个小角度可让字幕产生"穿过屏幕"的效果
            一行中有多个\org代码时只有排在最前面的\org有效 
            注意: \t, \move 和 \pos 会忽略位置重叠的检测
\fad(<淡入时间>,<淡出时间>)
            提供简单的淡入淡出效果. <淡入时间>与<淡出时间>之和不能超过该行的时间长度.
\fade(<a1>,<a2>,<a3>,<时值1>,<时值2>,<时值3>,<时值4>)
            提供复杂的透明度变化效果. <a1>,<a2>,<a3>为三个不同的透明度值(alpha), 取值从0到255. 0全见,255全透明
            这个代码里的7个参数要求全部写齐, 作用方式如下:
            1) 在<时值1>之前, 透明度为<a1>
            2) 在<时值1>与<时值2>之间, 透明度从<a1>变化到<a2>
            3) 在<时值2>与<时值3>之间, 透明度为固定的<a2>
            4) 在<时值3>与<时值4>之间, 透明度从<a2>变化到<a3>
            5) 在<时值4>之后, 透明度为<a3>
\clip(<x1>, <y1>, <x2>, <y2>)
            定义一个矩形框, 只有在这个框里的字幕才为可见
<x1>, <y1>, <x2>, <y2>为构成矩形的两个对角点
            \clip([<等级>,] <绘图命令>)
            定义一个绘画图形, 令这个图形内的字幕可见
            <绘图命令>参见第二组代码.
            <等级>是指定图形的缩放等级. 为2的(等级-1)次方. 如/clip4, 2的(4-1)次方为8, 即将后面的图形缩至1/8

(二)绘图代码

\p<等级>      进入绘图模式并指定坐标的放大等级.
            <等级>为坐标的缩放等级, 按2的(等级-1)次方计算. 如/clip4, 2的(4-1)次方为8, 即将后面的坐标缩至1/8
          当<等级>=0时, 关闭绘图模式.
\pbo<y>       定义所绘图形的基线偏移值.(baseline offset)
          当y>0时, 图形的所有坐标沿y轴向下移指定的像素值
          当y<0时, 图形的所有坐标沿y轴向上移指定的像素值

绘图命令:

m <x> <y>      将鼠标移至坐标(x, y), 同时将现有的图形封闭(即开始画新的图形), 所有绘画都以这个命令开始.
n <x> <y>        将鼠标移至坐标(x, y), 同时不封闭原有的图形
l <x> <y>      从鼠标原来的坐标位置画一条直线到(x, y), 并从这个点继续绘画    
b <x1> <y1> <x2> <y2> <x3> <y3>
            画一条三度贝塞尔曲线至(x3, y3), 以(x1, y1), (x2, y2)作为控制点
s <x1> <y1> <x2> <y2> <x3> <y3> .. <xN> <yN>
          从现有坐标画一条"三次均匀B样条"(cubic uniform b-spline)到点(xN, yN)
          该命令至少要含有三个坐标点(三个坐标时等同于贝塞尔曲线)
          这个命令实质上是把几条贝塞尔曲线连结到一起.
p <x> <y>      沿长B样条(b-spline)到点(x, y), 作用相当于在s命令后多加一个坐标点(x, y)
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<depth>
        \yshad<depth>
         沿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(<x1>,<y1>,<x2>,<y2>)
        \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.