内容:一.概述二.文件各个部分解析三.各种类型的行四.[ScriptInfo]部分的标题行五.[v4+Styles]部分的风格行Style六.[Events]事件部分的对话行Dialogue七.[Events]事件部分的注解行Comment八.[Events]事件部分的图片行Picture九.[Events]事件部分的声音行Sound十.[Events]事件部分的影片行Movie十一.[Events]事件部分的命令行Command附A.风格覆盖代码(Tags,Codes)附B.内嵌的字体/图片编码注:1)此文档是对原SSA文件规格英文文档进行翻译和补充而成,原文件可从以下链接获得:另外参考了以下资料:://en.wikipedia.org/wiki/SubStation_Alpha2)表述编写格式时,用到的符号说明如下:..参数[..]可选项3)除附A以外,用红色字体标明ASS相对于SSA格式的新增功能或者改动4)用蓝色,加粗,下划线等符号表明需要注意的地方.一.概述SSA全称SubStationAlpha,是由CSLow(又称Kotus)创建的一种字幕格式,用以实现比传统字幕诸如srt等格式更为复杂的功能.SSA目前的版本为v4.00.SSA同时也是一款软件的名称,专用于创建和编辑SSA格式的字幕.ASS是一种比SSA更为高级的字幕格式,全称AdvancedSubStationAlpha,实质是SSAv4.00+版本.它拥有比SSA更多的功能.1.SSAv4.00与之前的SSA版本格式不同.v4可以阅读和加载以前版本的格式,但之前版本不支持v4以上的编写格式.换句话说,SSA从v4版本开始可以阅读它认识的命令而忽略不认识的命令,从而可以向下兼容,也可以向上兼容.2.文件为普通的DOS文本格式.也就是说它可以用记事本打开编辑,同时需要注意编写出错时有可能导致无法预料的结果.3.文件编写时所划分的各部分,从形式上来说类似于ini文件,但它并非真正的ini文件4.各部分中的绝大多行都以一说明性的文字加上冒号来开头,指明该行包含哪一些信息.5.每一行中的信息都以逗号分隔.因此风格名和人物角色名中要求不能出现逗号.6.事件部分([Events])里的各行可以不分先后.也就是说人物对白行可以不按时间顺序排列7.不正确的行会被忽略.同时会给出警告指出被忽略的行数8.一行里包含了完整的信息,必须在一行内写完,不能分成多行9.当文件中引用了一个未知的风格名(style)时,加载时会用默认的风格来替代(Default)10.当一个风格(Style)中引用了系统中没有安装的字体,则会用Arial字体来代替.二.文件各部分解析[ScriptInfo]这一部分包含了文件内容的标题和总体信息.[ScriptInfo]这一行必须是v4版本文件的第一行[v4Styles]字幕正文使用的风格都在这一部分做出相关定义.注: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:\programfiles\SubStationAlphav4.00\Pictures.SSA会先从文件本身中寻找这些编码好的文件,但当没有找到时会去Pictures这个子目录里去找.注:现在的SSA文件已经很少包含[Pictures]或者[Fonts]这两个部分.因为这些功能只被SubStationAlpha这一个程序所支持.而其它的filter(Vobsub/Vsfilter/AveryLeeSubtitlerfilter)都不支持.三.各种类型的行在这一节里简要地说明在每个部分中出现的所有行的类型和大致功能,各自具体说明参见后面的章节.;只在编写中请说明作用的行,加载字幕时不可见.Title:标题,是对字幕的描述OriginalScript:最初创建字幕的人OriginalTranslation:(可选)最初翻译对话的人OriginalEditing:(可选)最初的编辑者,一般是所有参与翻译和校对等工作的人OriginalTiming:(可选)最初的时间轴人员SynchPoint:(可选)指出从哪一个时间点开始进行字幕加载播放ScriptUpdatedBy:(可选)对原字幕对话进行编辑更新的人UpdateDetails:进行了哪些更新等具体信息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:指明为命令事件,即可在后台打开某个程序四.[ScriptInfo]部分的标题行;分号,后面可以跟任何内容.这一行是说明性文字,加载字幕时不显示注意此类型行必须要把分号放最前.老版本不是用分号而是用!:Title:标题,如果没有提供,则自动使用untitledOriginalScript:剧本的最初作者,若没有提供则自动使用unknownOriginalTranslation:(可选)原剧本的翻译者,若没有提供则该行不显示OriginalEditing:(可选)原剧本的编者和校对,若没有提供则该行不显示OriginalTiming:(可选)原剧本的时间轴人员,若没有提供则该行不显示SynchPoint:(可选)从哪个时间点开始加载字幕,若没有提供则该行不显示ScriptUpdatedBy:(可选)对原剧本的修改/更新人员,若没有提供则该行不显示UpdateDetails:更新的具体信息,若没有提供则该行不显示ScriptType:SSA的版本信息,ASS的版本为v4.00+Collisions:当字幕时间重叠时,前后字幕的堆叠方式.值为Normal时,后一条字幕出现在前一条字幕的上方.如果值为Reverse时,前一条字幕往上移动给后一条字幕让位.PlayResY:文件所使用的视频高度参考标准,如果使用Directdraw回放SSAv4会自动选择最相近的启用的设置PlayResX:文件所使用的视频宽度参考标准,如果使用Directdraw回放SSAv4会自动选择最相近的启用的设置.如果只提供了PlayResX,PlayResY其中一种,那另一种会按实际视频的像素值为准.提供的分辨率数值影响以下参数:1)所有给出的坐标(到边缘的距离,\pos,\move,矢量绘图等)都以此分辨率作为参照.2)所有的文字字号均按照此分辨率等比例放大缩小3)当ScaledBorderAndShadow被启用时,所有边框宽度和阴影深度都按照此分辨率与实际分辨率的比例等比例缩放4)这个分辨率不影响最终显示文字的宽高比,但影响矢量绘画图形的宽高比.PlayDepth:加载字幕时使用的色深(颜色的数目),如果使用Directdraw回放SSAv4会自动选择最相近的启用的设置Timer:字幕加载的速度调整,数值为百分数.例如100.0000代表100%.其数值有4位小数点.它相当于对ASS字幕的时间速度进行乘法运算.当速度大于100%时,总时间会缩短,而相应的字幕会越来越靠前.当速度小于100%时,总时间会延长,而相应的字幕会越来越靠后.WrapStyle:定义默认的换行方式,0:智能换行,行分得较平均,上面的行较长1:一行结束后从行尾的词分行2:不换行.此模式下只有\n,\N才换行3:与模式0相同,但下面的行分得比较长ScaledBorderAndShadow:指定边框宽度与阴影深度是否随着视频分辨率等比例缩放.可为Yes,No.默认为No.当取值为No时,边框宽度与阴影深度完全按照指定的像素数显示.当取值为Yes时,边框宽度与阴影深度随着实际视频的分辨率同等比例缩放.五.[v4+Styles]部分的风格行StyleStyle定义了字幕的样式和位置.所有的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,设置阴影颜色