ToC
- 说在前面
- 简介
- 特殊符号
- 特效标签:格式
- 特效标签:整行
- 特效标签:标签后
- 绘画标签
- 绘画指令
说在前面
之前总结了一份 ASS 标签的文章,但因为解析的问题,原来的域名现在都 301 到这里了,所以相当于名存实亡,干脆直接在这里重新整理一份好了。
这里总结的都是标准的 ASS 标签,暂不包括 VSFilterMod 的标签,并且也没有计划在本文中包括其他标签。VSF 如果有空的话我会单独摸一篇(
由于是从 Markdown 直接(间接?)转换过来的,因此可能会出现一些问题,欢迎在评论区指出(
简介
本文精简自 ASS标签 页面,删去了所有的例子和原英文文本,并进行了格式化表示,旨在方便查阅。
阅读之前你需要了解类似 TypeScript
的类型标记方式。
特殊符号
名称 | 内容 | 说明 |
---|---|---|
软换行/软空格 | \n | 插入一个强制换行符,只在换行方式 2 下生效。 |
硬换行 | \N | 插入一个强制换行符,在所有换行方式下都生效。 |
硬空格 | \h | 插入一个不换行的硬空格。句子将不会在硬空格处自动换行。 |
并且当硬空格出现在一行的开头或者结束的地方,也不会被忽略。
(Aegisub 排版引擎一般会忽略换行处的空格)。 |
特效标签:格式
特效标签需要包裹在 {}
内,以 \
开头。
此处对下文描述的一些数据类型作简单说明:
ID | 数据类型 | 简介 |
---|---|---|
01 | int | 整数 |
02 | number | 实数 |
03 | boolean | 布尔,实际书写时须使用 0 / 1 |
04 | string | 字符串 |
05 | Time | 时间,表示形式为整数,单位毫秒 |
06 | Color | 颜色,实际书写时的表示格式:&HBBGGRR& |
07 | Alpha | 透明度,实际书写表示为:&HAA |
00 代表不透明 | ||
08 | Position | 位置,实际书写时用整数 1-9 |
对应小键盘上的位置 | ||
09 | DrawingCommands | 绘画指令 |
特效标签:整行
这一类特效标签会对整行字幕生效。
pos
(设置位置)
格式
说明
设置一行字幕的位置,与行对齐有关。
move
(移动位置)
格式
说明
让一行字幕移动。当 t1
,t2
未定义时,移动时间即为字幕时间。它也会设置字幕的位置。 t1
,t2
相对字幕开始时间计算。
局限性
- 只能匀速移动:一行中只能够存在一个
move
或pos
。
如果你需要这两种效果。那么你得把字幕分成几行,然后分别设定移动效果,让它们衔接起来。这就不是本文要涉及的内容了。
org
(设置旋转中心)
格式
说明
设定一行字幕的旋转中心。
旋转中心默认为位置设定的参考点,其会随着动画移动;但如果设置了 [org](#org)
,则旋转中心固定。
如果你将旋转中心放在 3D 场景中的消失点处,字幕行的 3D 旋转会有正确的和场景相匹配的透视效果。
把旋转中心放在画面外面是完全可行(有些时候也很有用)的。如果旋转中心足够的远,那么就可以计算出合适的小转动角,让文本看起来是沿直线(或者近似直线)在屏幕上移动。这有些难以掌控,但是可以用来绕过
move
的格式限制,比如无法加速移动,无法在每条线上进行几个移动。
每行字幕只有第一个 org
生效。
fad
(简单淡入淡出)
格式
说明
设定一行字幕的简单淡入淡出效果。将某一参数设置为 0
时不产生参数对应效果。
fade
(复杂淡入淡出)
格式
说明
设定一行字幕的复杂淡入淡出效果。效果如下所示:
注:对于 libass
,fad
和 fade
是一样的。也就是说,二者的区别由参数数量决定,而非名称。你也可以用 fad
使用七个参数来实现复杂的淡入淡出效果。
clip
, iclip
(遮罩)
设置一个遮罩。遮罩中坐标按脚本分辨率计算,以视频左上角为原点。遮罩有如下两种类型:
方形
格式
说明
clip
确定一个方形区域,只有区域内的字幕是可见的。
iclip
则相反,只有区域外的字幕是可见的。
矢量绘图
格式
说明
用矢量绘图画一个遮罩区域来选择显示(clip
)或不显示(iclip
)字幕的一部份。
DrawingCommands
是和 p
一起使用的[绘画指令](#绘画指令);scale
作用和 [p](#p)
中相同。
不同于方形的遮罩,矢量绘图遮罩无法被
t
动画化。如果你想要这种效果,你需要把一行字幕切成许多行,然后设定每一行在这个动画过程中的遮罩区域。
特效标签:标签后
i
(斜体)
格式
说明
应用/取消斜体。
b
(粗体)
格式
说明
应用/取消粗体; 设置粗体的字重(大部分字体不支持字重)。
u
(下划线)
格式
说明
应用/取消下划线。
s
(删除线)
格式
说明
应用/取消删除线。
bord
(边框)
格式
说明
改变字符边框的宽度。
如果“比例缩放边框和阴影”是选中的,边框宽度值将取决于脚本的分辨率,否则会由视频的分辨率决定(也就是说边框的宽度会自适应使用该字幕的视频)。
xbord
, ybord
改变单坐标轴上的边框宽度。
shad
(阴影)
格式
说明
设置字符与阴影间的距离。设置深度为 0
使阴影完全消失。其他方面和边框宽度 bord
的设置相似。
xshad
, yshad
改变单坐标轴方向上阴影与字符的距离。此处 depth
可小于 0
,以显示在反方向。
be
(边框模糊)
格式
说明
应用/取消边框模糊; 设置边框模糊循环叠加效果的次数。
效果通常在字符比较小的情况下更明显,有些时候会让字符看起来更舒服。
当文本有边框时,只会模糊边框;反之会模糊文本主体。
对于高强度模糊,blur
通常结果更有用。
blur
(边缘模糊[高斯函数])
格式
说明
设置边缘模糊 (高斯函数)。
把
strength
设置的太高的话,渲染时会占用大量CPU
时间。
fn
(字体名称)
格式
说明
设置字体名称。
fs
(字体大小)
格式
说明
设置字体大小。
fscx
, fscy
(字体缩放)
格式
说明
设置字体在各坐标轴上的缩放。100
为原大小。这两个标签也会影响矢量绘图。
字体变形可以用来修正错误的渲染,也可以比
[fs](#fs)
更准确的指定字体大小。
fsp
(字符间距)
格式
说明
设置字符间距,spacing
会按脚本分辨率计算。
frx
, fry
, frz
, fr
(旋转文本)
格式
说明
按坐标轴旋转文本。
当 amount > 0
时,文本旋转的方向为:大拇指指向坐标轴方向时四指旋转的方向。
文本的锚点为当前字幕行的原点,由 [org](#org)
规定
fax
, fay
(剪切变换)
格式
说明
对文本应用一个剪切变换。factor
为 0
即意味着不做变换。
通常 factor ∈ [-2, 2]
,否则效果一般都不是很好。
剪切是在旋转之后应用的,以旋转后的坐标系为基准。这个剪切用的坐标系不受旋转中心的影响。
fe
(字符集)
格式
说明
设置字体字符集。
ID | 类型 | 说明 |
---|---|---|
0 | ANSI | Windows CP-1252,西欧语言 |
1 | 默认 | 视用户操作系统的配置而定,但也允许字体子系统视情况选择一个不同的字符映射表 |
2 | 符号 | 码位的取值范围是 [0, 255] ,显示效果视具体字体而定,像 Wingdings 这样的装饰字体应该用这个 ID |
128 | Shift-JIS | 日语 |
129 | Hangeul | 韩语的一个字符集 |
130 | Johab | 韩语的一个字符集 |
134 | GB2312 | 简体中文 |
136 | BIG5 | 繁体中文 |
162 | 土耳其语 | |
163 | 越南语 | |
177 | 希伯来语 | |
178 | 阿拉伯语 |
c
, 1c
, 2c
, 3c
, 4c
(文本颜色)
格式
说明
设置文本颜色。
1c
设置主要填充颜色。2c
设置次要填充颜色。这个仅会在标准卡拉 OK 的预填充时使用。3c
设置边框颜色。4c
设置阴影颜色。c
设置以上四种。
alpha
, 1a
, 2a
, 3a
, 4a
(透明度)
格式
说明
设置文本透明度。
1a
设置主要填充透明度。2a
设置次要填充透明度。这个仅会在标准卡拉 OK 的预填充时使用。3a
设置边框透明度。4a
设置阴影透明度。alpha
设置以上四种。
an
(行对齐)
格式
说明
设置文本的行对齐方式,Position
的位置与小键盘对应。
k
, K
, kf
, ko
(卡拉 OK 效果)
格式
说明
卡拉 OK 效果。该标签通常不手动创建。
k
: 在这个音节开始之前,使用次要填充颜色和透明度。当这个音节开始时,立即变为使用主要填充颜色和透明度。kf
: 在音节开始之前,使用次要填充颜色和透明度。当音节开始时,文本从左到右由次要填充颜色和透明度变为主要填充颜色和透明度,这个过程在音节结束时刚好结束。ko
: 和kf
类似,但是在音节开始之前,字符的边框会被移除。当音节开始时会立即出现。
q
(换行风格)
格式
说明
设置换行风格。
换行风格 | 说明 |
---|---|
0 | 智能断行,尽可能让所有的行等长,不可能等长时选择让顶端的行宽一些。只有遇到 \N 会强制换行。 |
1 | 行尾换行,尽可能填满一行,然后换行。只有遇到 \N 会强制换行。 |
2 | 不换行,多余的字符会超过屏幕边缘。遇到 \n 和 \N 都会强制换行。 |
3 | 智能换行,与智能断行相似,但是会选择让靠近底部的行更宽。 |
r
(重置样式)
格式
说明
重置其后文本的样式,会让一切样式标签失效,包括动画效果。
style
为重置后新的样式名称。
t
(渐变)
格式
说明
从一个样式动画渐变到另外一个。可以使用 t
动画化的特效标签如下表所示:
字符 | 形状 | 其他效果 |
---|---|---|
fs | fscx | bord |
fsp | fscy | xbord |
c | frx | ybord |
1c | fry | shad |
2c | frz | xshad |
3c | fr | yshad |
4c | fax | clip |
alpha | fay | iclip |
1a | be | |
2a | blur | |
3a | ||
4a |
对于
clip
和iclip
标签来说,只有方形的形式能够动画化。矢量绘图的形式无法动画化。在
t
标签中混合使用clip
和iclip
标签很难得到好看的效果。
Accel
可以指定动画的速度,1
为匀速,<1
为减速,>1
为加速。具体函数:y = x with x ∈ [0;1] = (t - t1)/(t2 - t1)
指定时间后的变化过程如下所示:
绘画标签
p
(绘制模式/分辨率倍数)
格式
说明
进入/退出绘制模式;设置分辨率倍数。放大倍数会被设置成 2 ^ (scale - 1)
。
(此处相当于放大画布,到预览时缩小。)
pbo
(基线偏移)
格式
说明
决定绘制时的基线偏移,偏移发生在 Y
方向。
注意原点是左上角,因此正值会使绘制位置偏下。
绘画指令
绘画指令需要出现在 clip
标签中,或夹在 p
、p0
之间的特效标签区外部。
绘图指令使用主要填充颜色来填充图形,用边框颜色来填充边框。绘制出的图形也有阴影。
绘图指令之间用空格分割,因此下文的格式说明也没有括号。
绘图的思路是这样的:想象在视频画面上有一个光标。当它移动时,它就沿途绘制了曲线;当闭合一个形状时,这个闭合图形就会被着色。
m
(闭合移动光标)
格式
说明
移动光标到 (x, y)
。会自动闭合图形,因为程序认为你这是要去从头开始画一个新的独立的图形。所有的绘图指令都要从这个命令开始。
n
(非闭合移动光标)
格式
说明
移动光标到 (x, y)
,但是不闭合当前的图形。
Line
(直线)
格式
说明
从当前光标位置到 (x, y)
画一条直线,同时把光标也移动过去。
b
(三阶贝塞尔曲线)
格式
说明
画一个三阶贝塞尔曲线,起点是当前光标位置,终点是 (x3, y3)
,控制点是 (x1, y1)
和 (x2, y2)
。
s
(三次 B 线条)
格式
说明
画一个到 N
点的三次B线条。它最少要包含三个坐标点(这种情况下和 b 相同)。这基本上是把几个贝塞尔曲线连接到一起。
p
(扩展 B 线条)
格式
说明
把B线条扩展到 (x, y)
,这本质上相当于给 s
追加一个坐标点。
c
(闭合 B 线条)
格式
说明
闭合 B 线条。