ASS字幕文件说明

原文链接
这是我多年前所做的笔记,资料都是从网上摘抄,其中内容难免有缺失或错误。

第一部分 [Script Info]

这一部分主要是记录了一些文件内容的标题和信息

[Script Info]
; Script generated by Aegisub r8942
; http://www.aegisub.org/
!: 注释
Title: Default Aegisub file
ScriptType: v4.00+
WrapStyle: 0
ScaledBorderAndShadow: yes
YCbCr Matrix: TV.601
Original Script: 脚本原作者
Original Translation: 译者
Original Editing: 编辑
Original Timing: 时间轴
Synch Point: 0
Script Updated By: 修订者
Update Details: 修订详情,修订部分的描述
PlayResX: 1280
PlayResY: 720
PlayDepth: 颜色深度
Collsions: Normal
Timer: 100.0000

下面就[Script Info]这一部分作简单说明:

  • ASS文件第一行必须是[Script Info]

  • ;后面可以填写任何内容

  • !:后面是注释部分

  • Title:脚本文件的标题

  • ScriptType:脚本格式ASS文件为v4.00+

  • WrapStyle:指定了当一行字幕过长时的换行方式

    共有4种换行方式:

    0:智能换行:上行较宽

    1:于行尾词出换行:仅于\N后断行

    2:不自动换行:于\n\N后断行

    3:智能换行:下行较宽

  • ScaledBorderAndShadow:字幕边框宽度和阴影深度是否随着视频分辨率等比缩放,yesno

  • YCbCr Matrix:

  • Original Script: 脚本原作者

  • Original Translation: 译者

  • Original Editing: 编辑

  • Original Timing: 时间轴人员

  • Synch Point: 同步点

  • Script Updated By: 脚本修订者

  • Update Details: 修订详情,修订部分的描述

  • PlayResX: 视频宽度PlayResY: 视频高度,这两个定义了视频的分辨率

  • PlayDepth: 显示颜色深度

  • Collsions: 字幕碰撞处理,当两条字幕重叠时,如何进行移动,共有两种方式

    Normal:后一条字幕出现在前一条的上方

    Reverse:前一条字幕向上移动给后一条字幕让位

  • Timer: 时间轴计时器,单位为%,默认为100.0000

    大于100时,字幕会比预定越来越早的出现

    小于100时,字幕会比预定越来越晚的出现

    一般不改变,取默认100.0000

第二部分 [V4+ Styles]

这一部分主要保存了字幕的样式

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[V4+ Styles]作为这一部分的开始,紧跟着第二行Format:基本也是固定的,而Style行的各个Format行的各个名字之间是一一对应关系。这个部分就像是一张表单,Format行就是表头,Style行就是往表格里填的数据,大概就是这么一个关系,一个脚本可以设置多个字幕样式。

下面讲一下每个名字的具体意义:

  • Name:样式名字
  • FontName:字体名称
  • Fontsize:字体大小
  • PrimaryColour:主要填充颜色
  • SecondaryColour:次要填充颜色,用于标准卡拉OK模式下的预填充
  • OutlineColour:字体边框颜色
  • BackColour:字体阴影色
  • Bold:粗体,1开启,0关闭
  • Italic:斜体,1开启,0关闭
  • Underline:下划线,1开启,0关闭
  • StrikeOut:删除线,1开启,0关闭
  • ScaleX:宽度缩放,单位为%,默认100
  • ScaleY:高度缩放,单位为%,默认100
  • Spacing:字体间距
  • Angle:旋转角度
  • BorderStyle:边框样式;默认为1,即使用正常字体边框,设置为3时,则使用不透明背景取代字体边框
  • Outline:边框宽度
  • Shadow:阴影距离
  • Alignment:字幕对齐方式
  • MarginL:左边距
  • MarginR:右边距
  • MarginV:垂直边距
  • Encoding:字体编码;默认为1

第三部分 [Events]

这一部分就是字幕的主体部分,记录了对话的开始和结束时间,对话内容和显示等信息

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.24,0:00:01.99,Default,,0,0,0,,所以
Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,注释

这一部分以Events作为开始,后面紧跟的Format基本也是固定的,后面的行和Format也是对应关系。

  • Layer:字幕的,当两条字幕重叠时,层数较大的会叠加在层数小的上面,如果层数相同,那么后出现的会叠加的先出现的上面,层数默认为0
  • Start:字幕的开始时间,精度为0.01s
  • End:字幕的结束时间,精度为0.01s
  • Style:样式名称,对应[V4+ Styles]中的Name
  • Name:说话人。只做参考,一般省略
  • MarginL:左边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • MarginR:右边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • MarginV:垂直边距。可对样式进行修改,默认为0采用原值,若不为0则取代原值
  • Effect:动态效果;Scroll up, Scroll down, Banner, Karaoke
  • Text:字幕。可以通过添加代码改变字幕,实现多种特效

每一行字幕开头的修饰语有两种:

  • Dialogue:正常的对话字幕内容
  • Comment:注释内容,这些行不会作为字幕内容显示在视频中

第四部分 代码及其作用

在这一部分正式开始之前,先作一个简单的说明:

  • 所有代码前必须加\
  • 代码必须放在{}中,\N\n\h除外

在代码说明部分会出现以下标记:

  • <...>:表示该部分需要输入参数
  • [...]:表示该部分为可选择输入项
  • <../..>:表示从给定参数中任选一项

常用代码

  • \N:强制换行

  • \n:空格,和空格键效果一样

  • \h:强制空格,即使在行首和行尾也能生效

  • \a:设置字幕对齐方式,alignment取值如下表

    5 6 7
    9 10 11
    1 2 3
  • \an:设置字幕对齐方式,alignment取值和数字小键盘的布局相同,这种方式比较容易记住,所以通常采用这种方式设置对齐方式,包括第二部分[V4+ Styles]中的Alignment也是采用的这种对齐方式

    7 8 9
    4 5 6
    1 2 3
  • \b<0/1>:设置粗体。0为关闭,1为开启

  • \b:设置字体磅值,取值为100的倍数。100: Lowest, 400: Normal, 700: Bold, 900: Heaviest

  • \i<0/1>:设置斜体。0为关闭,1为开启

  • \u<0/1>:设置下划线。0为关闭,1为开启

  • \s<0/1>:设置删除线。0为关闭,1为开启

  • \be<0/1>:边框模糊。0为关闭,1为开启

  • \be:边框模糊

  • \blur:边缘模糊。strength取值越大,效果越明显,当没有字幕边框时,显示为字幕主体模糊效果

  • \bord:设置边框宽度

  • \xbord:设置x方向边框宽度

  • \ybord:设置y方向边框宽度

  • \shad:设置阴影距离

  • \xshad:设置x方向阴影距离

  • \yshad:设置y方向阴影距离

  • \r