# Aegisub ASS代码使用指南

# 文中使用符号说明

  • → 代码注意事项
  • 【 】 → 代码简要说明
  • e.g. → 代码使用举例
  • ( ) → 解释、强调、补充以及吐槽等
  • [扩] → 高阶代码,只在能VSFilter2.39+的版本使用 (These tags are only available in VSFilter 2.39 and later, and might not be safe for softsubbing.)

# 部分中英对照参考

  • 圆括号 parentheses → ( )
  • 尖括号 angle brackets → < >
  • 逗号 comma → ,
  • 反斜线符号 backslash → \
  • 大括号 override blocks → { }
  • 斜体 Italics 斜体

# 00 代码格式说明

反斜线符号\ + 代码名称 + 参数(有可能为多个)

  • 所有代码必须是英文格式,中文标点无效(生效了的代码是彩色的);
  • 尖括号< >内的参数必填;
  • < >本身不需要输入代码;
  • [ ] 内参数可以省略,具体用法参照相关内容。

e.g.

\fs\<size> \fs50 【字体大小设置为50】

\pos (<x>, <y>) \pos(470, 260)【字幕位置定位于点(<x>, <y>)

\move (<x1>, <y1>, <x2>, <y2> \[, <t1>, <t2>]) \move (100, 150, 300, 350) 【字幕从点 (100, 150) 移动至 (300, 350),持续时间为从字幕出现开始到字幕消失为止】

# 01 特殊代码 Special characters

# 软性换行 Soft line break

\n 【只在换行方式 (Wrapping mode) 2(详情见下↓) 下有效,其他方式下则被替换为空格】

# 硬性换行 Hard line break

\N 【无视换行方式,强制换行】

# 硬性空格 Hard space

\h 【在硬性空格前后不会自动换行,且其在一行首尾时不会被缩进】

不需写在 { } 内

# 换行方式 Wrap :

\q<style> (Override tag)

  • 此为Override tag,需要{},写在这里仅为方便对照查阅;
  • 共计四种,可在“文件→配置”中更改。 0:智能换行,尽量使每行宽度一致,不能保持等宽时上行较宽。只有\N指令强制换行有效; 1:于行尾词处换行,仅\N断行有效; 2:不自动换行,\n及\N断行有效; 3:智能换行,尽量使每行宽度一致,不能保持等宽时下行较宽。只有\N指令强制换行有效。

# 02 普通代码 Override tags

必须写在 { } 内,且影响之后所有的文字(当行代码),直到有第二个相同类型的代码出现以覆盖其效果

# 基本字体处理

可使用面板按钮便捷设置。

# 斜体 Italics

\i1 \i0

# 粗体 Bold

\b1 \b0 \b<weight>

  • 大部分字体不支持自定义字体粗细;如支持,更改的粗细应为100的倍数;
  • 100最细,400正常,700为粗体,900为极粗。

e.g.

{\b100}How {\b300}bold {\b500}can {\b700}you {\b900}get?

# 下划线 Underline

\u1 \u0

# 删除线 Strikeout

\s1 \s0

# 字体样式相关

# 重置字幕样式 Reset style

\r\[<style>]

e.g.

-Hey\N{\rAlternate}-Huh?\N{\r}-Who are you?

【假设此条字幕样式为"Default",则"Hey" 为Default style,"Huh?" 被改成了"Alternate","Who are you?" 又被恢复为Default style】

# 字体名 Font name

\fn<name>

  • 可使用面板按钮便捷设置。

e.g.

{\fnLucida Calligraphy}Think of you {\[email protected]微软雅黑 }知道@是干嘛的了吧

# 字体大小 Font size

\fs<size> \fs10 \fs88

  • <size>指的是文字纵向的像素数量。

# 文字间距 Letter spacing

\fsp<spacing>

e.g.

\fsp3 \fsp10

# 边框宽度 Border size

\bord<size>

  • <size>可设为0,也可为小数;
  • 请注意若文件→配置内的比例缩放边框和阴影被勾选,边框宽度效果会受影响。

e.g.

\bord5 \bord0.5 \bord0【无边框】

[扩] 边框宽度 Border size (extended)

\xbord<size> \ybord<size> 【横向的字体边框宽度(x)和纵向的字体边框宽度(y)可分别设置】

  • <size>可设为0,也可为小数;
  • 一行代码中,在\xbord\ybord后使用\bord指令的话,\xbord\ybord效果会被覆盖。

e.g.

\xbord4\ybord0\fsp7\fs60

# 阴影深度 Shadow distance

\shad<depth> 【阴影作用于文字背后,出现在右下角;经过颜色设置可造成 3D字体假象】

  • <depth>可以为小数,不可为负数。

e.g.

\shad10 \shad3.5

[扩] 阴影深度 Shadow distance (extended)

\xshad<depth> \yshad<depth> 【横向的阴影深度(x)和纵向的阴影深度(y)可分别设置】

  • <size>可设为0,可为小数,也可为负数。

e.g.

\xshad5\yshad0 \xshad-6\yshad4

# 模糊边缘 Blur edges

\be1【模糊边缘】 \be0【不模糊边缘】

  • 字体有边框时以边框颜色为准模糊边缘,无边框时以文字颜色为准模糊文字边缘;
  • 模糊效果在字体较小时比较明显,但是使用可以使文字看过去更柔和。

e.g.

\be1 \be0

(嗯……左边的柔和一点,看出来了咩……)

[扩] \be<strength>

  • 字体有边框时以边框颜色为准模糊边缘,无边框时以文字颜色为准模糊文字边缘;
  • 设置值必须为整数;
  • 因为模糊效果为渐变色,设置值过高没有意义(末端几乎透明)。

e.g.

\fs40\be10 \fs40\be20

(左右两者,基本看不出来区别)

[扩] 模糊边缘 Blur edges(gaussian kernel)

\blur<strength>

  • 字体有边框时以边框颜色为准模糊边缘,无边框时以文字颜色为准模糊文字边缘;
  • 设置值可为小数;
  • 用法与\be<strength>几乎一样,但是因为算法不同,在设置值较高的时候有很好的表现,但要注意设置值过高会给CPU带来压力。

e.g.

\fs40\be5 \fs40\be10

# 设置颜色 Set color

\1c&H<bb><gg><rr>& (= \c&H<bb><gg><rr>&) 【主要颜色 (原色) 】

\2c&H<bb><gg><rr>&【卡拉 ok效果中的次要 (第二) 颜色】

\3c&H<bb><gg><rr>&【字体边框颜色 】

\4c&H<bb><gg><rr>&【字体阴影颜色】

  • 正红:&H0000FF&
  • 正黄:&H00FFFF&
  • 正绿:&H00FF00&
  • 纯白:&HFCFCFC&
  • 纯黑:&H000000&

# 设置透明度 Set alpha

\alpha&H<aa> 【一次性设置以下四者的透明度】

\1a&H<aa> 【文字原色透明度】

\2a&H<aa> 【卡拉 ok效果中的第二颜色透明度】

\3a&H<aa> 【字体边框透明度】

\4a&H<aa> 【字体阴影透明度】

  • 经实践Set alpha代码内的&和H均可省略不写;
  • <aa>采用十六进制(00【不透明】, 37【25%透明】80【50%透明】, FF【100%透明】);
  • <aa>不区分大小写;
  • 超过80效果就不明显了(也许是我打开方式不对_(:3」∠) _)。

e.g.

\alpha00 \alpha37 \alpha80

# 字体编码 Font encoding

\fe<id>

  • 可在样式编辑器中设置。

e.g.

\fe0 【ANSI码 (USA) 】 \fe128 【SHIFT_JIS 码 (Japan) 】

# 字幕定位、移动和淡入淡出

# 栅格定位 Line alignment

\an<pos>

  • \pos\move会覆盖\an指令效果,但是\an的特征会保留(如\pos(300,500)\an1,字幕是居左的,在字幕有两行以上的情况下每行开头均居左,否则是居中);

  • 屏幕划分方法:

e.g.

\an2 【屏幕下方中间(各位置间距可在样式管理中重新设置)】

# 栅格定位 Line alignment(legacy)

\a<pos>

  • \pos\move会覆盖\a指令效果,但是\a的特征会保留(同\an);
  • 屏幕划分方法:

# 静态定位 Set position

\pos(<x>, <y>)

  • 准确度与分辨率有关;
  • 可双击屏幕设置;
  • (<x>, <y>) 的位置不是绝对的(不见得是整条字幕的中心),有时与Alignment的选择有关。

# 移动命令 Movement

\move(<x1>, <y1>, <x2>, <y2> \[, <t1>, <t2>])

  • t1和t2的单位为毫秒;
  • 一行文本中,不得有多于一条的\move命令,也不能同时有\move和\pos;
  • 移动只可能是匀速的。

【从位置 (x1, y1)移动到(x2,y2) [字幕开始时间之后t1毫秒开始移动;从t1开始,移动过程持续t2时间],若t1,t2省略,默认移动时间为此栏字幕条持续时间】

e.g.

\move(100,150,300,350)【字幕从 (100, 150)移动至(300, 350),持续时间为整条字幕时间】

\move(100,150,300,350,500,1500)【同上,但字幕从其出现 500ms后开始移动,1.5s 后移动结束 】

# 旋转原点 Rotation origin

\org(<x>,<y>)

  • 一旦旋转/缩放中心被设定,则它就是固定不动的;
  • 将该点设于极远处、配合快速特效可以造成跳跃的视觉效果;(反正我不会用OTZ)
  • 每条文本最多只能有一个org命令。

# 淡入淡出 Fade

\fad(<fadein>,<fadeout>)

\fad(<t1>, <t2>)

【开始时间到t1淡入,t2到结束时间淡出】

  • t1, t2单位为毫秒;
  • t1+t2必须小于最多等于本条字幕的持续时间;
  • t1=0,无淡入; t2=0,无淡出。

# 淡入淡出 Fade(complex)

\fade(<a1>,<a2>,<a3>,<t1>,<t2>,<t3>,<t4>)

  • 透明度值为十进制,从0(不透明)到255(完全透明);
  • 时间以毫秒计;时间为累计时间;
  • 七个参数都必须有;
  • fade命令中透明度标记影响 1c-4c所有颜色。

【t1之前透明度为a1,在t1到t2时间段透明度由a1渐变为a2,在t2到t3时间内透明度保持为a2,在t3到t4时间段透明度由a2渐变为a3,t4之后透明度保持为a3】

e.g.

\fade (255, 32, 224, 0, 500, 2000, 2200)

【字幕从开始0s到0.5s由透明渐变为几乎不透明,维持32的透明度1.5s,此后在0.2s之内由透明度32变为224(几乎透明),此后维持几乎透明状态直至本条字幕时间结束】

# 字体缩放和旋转

可使用面板按钮便捷设置,在视频窗口左侧。

# 字体缩放 Font scale

  • <scale> 以百分比表示,100 即原始尺寸。

\fscx<scale> 【字体沿X轴方向缩放】

e.g.

\fscx50【宽度变为原来的一半】 \fscx200【宽度变为原来的一倍】

\fscy<scale> 【字体沿Y轴方向缩放】

e.g.

\fscy50【高度变为原来的一半】 \fscy200【高度变为原来的一倍】

e.g.

Think of you {\fscx200\fscy200}Think of you

# 文字旋转 Text rotation

\fr\[<x/y/z>]<degrees>

  • \fr默认绕Z 轴(垂直于屏幕的轴)。

\fr (= \frz)<amount> 【绕Z轴旋转(逆时针为正,顺时针为负)】

e.g.

\fr-90 \fr90 {\frz-90\[email protected]微软雅黑 }【绕Z 轴旋转与 @字体结合效果】

\frx<amount> 【 绕 X轴(水平轴)旋转(为正值时字向后倒,为负时字向前倾)】

e.g.

\frx60 \frx-60

\fry<amount>【绕 Y轴(竖直轴)旋转(为正值时字左大右小,为负时字左小右大)】

e.g.

\fry60 \fry-60

其它尝试:

e.g.

\frx40\fry60 \frx-30\fry-30\frz30

[扩] 文本倾斜 Text shearing

\fax<factor> \fay<factor>

【文本倾斜效果】

  • 一般而言<factor>取较小的值,小于2的值效果都非常明显;
  • 在旋转命令之后,倾斜所应用的轴为旋转之后的轴,与初始轴无关。

e.g.

\fax1 \fay1

e.g.【配合旋转】

\fr90\fax0.5 \fr90\fay0.5

# 卡拉OK特效

# 卡拉OK特效 Karaoke effect

  • <duration> 单位为厘秒 (cs) ,100cs = 1000ms = 1s。

\k<duration> 【卡拉 ok跳色效果,一个字一个字间断变色】

  • <duration>的时间经过之后执行跳色命令。

e.g.

{\k50}{\k80}Think {\k25}of {\k60}me 【50cs之后 "Think"从次要颜色跳为主要颜色, 80cs后"of"跳为原色,25cs后"me"跳为原色】

\kf<duration> or \K<duration> 【卡拉 ok填充效果(与\k效果相似,但是有从左到右填充效果,较为平滑) 】

  • <duration>时间段内填充完色。

e.g.

{\kf80}Think {\kf25}of {\kf60}me 【80cs内 "Think"从次要颜色由左至右变成主要颜色, 25cs内"of"渐变为原色,60cs内"me"渐变为原色】

\ko<duration> 【边框卡拉 ok跳色效果(与\k效果相似)】

e.g.

{\ko50}{\ko80}Think {\ko25}of {\ko60}me 【一开始所有边框都没有,50cs之后 "Think"的边框跳色, 80cs后"of"的边框跳色,25cs后"me"的边框跳色】

# 其它特效

蒙板可使用面板按钮便捷设置,在视频窗口左侧。

# 矩形蒙板 Clip(rectangle)

\clip (<x1>, <y1>, <x2>, <y2>) 【只有矩形内的内容被显示】

  • 默认为矩形,以 (x1, y1), (x2, y2) 分别为对角线端点坐标。

e.g.

\clip (0, 0, 704, 245)

[扩] 矩形蒙板 Clip(rectangle)

\iclip (<x1>, <y1>, <x2>, <y2>) 【只有矩形内的内容不被显示】

  • 默认为矩形,以 (x1, y1), (x2, y2) 分别为对角线端点坐标。
  • iclip的影响效果是整行、无视代码放置位置的。

e.g.

\iclip (0, 0, 704, 245)

# 图形蒙板 Clip (vector drawing)

\clip (<drawing commands>)

\clip (<scale>, <drawing commands>)

[扩]\iclip(<drawing commands>)

[扩]\iclip(<scale>, <drawing commands>)

  • iclip的影响效果是整行、无视代码放置位置的。
  • 代码使用方法、效果与Clip (rectangle) 一致,请结合Drawing tags自己探索。

e.g.

\clip (1, m 50 0 b 100 0 100 100 50 100 b 0 100 0 0 50 0)

【绘图1:1,显示圆内字幕】

# 动态变换 Animated transform

\t(<style modifiers>) 【在字幕持续时间内由\t前的状态变成( )内状态】

\t(<accel>, <style modifiers>) 【同上,速度非线性】

\t(<t1>, <t2>, <style modifiers>) 【在t1~t2时间内由\t前的状态变成( )内状态】

\t(<t1>, <t2>, <accel>, <style modifiers>) 【同上,速度非线性】

  • 只有以下tags可以用于变换:

[扩]

  • t1和t2单位为毫秒,时间为累计时间;
  • t1~t2的时间间隔为特效发生的时间,如果未指定,则为整条字幕持续时间;
  • <accel>可以实现非线性速度变化,具体为:<accel> 等于 1,速度为线性;<accel>在0和1之间 ,开始速度快结束速度慢;<accel> 大于 1,开始速度慢结束速度快。
  • 自己实践的时候发现\(i)clip不好用,不如说和其代码本身说明是矛盾的,无解ING。

e.g.

{\1c&HFF0000&\t(\1c&H0000FF&)}Hello! 【“Hello!”由蓝色变为红色】

{\an5\t(0,5000,\frz3600)}Wheee 【“Wheee”在5s内匀速逆时针转10圈】

{\an5\t(0,5000,0.5,\frz3600)}Wheee 【“Wheee”在5s内减速逆时针转10圈】

{\an5\fscx0\fscy0\t(0,500,\fscx100\fscy100)}Boo! 【Boo!在0.5s内由一个点变成文字】

# 03 绘图代码 Drawing tags

# 激活绘图命令 Toggle drawing mode

\p<0/1/..n>

\p1 【激活绘图命令,1:1绘图】

\p0 【关闭绘图】

\p2 【激活绘图命令,用2倍的分辨率绘图,2:1绘图】

\p4 【激活绘图命令,用大8倍 (2^ (4-1)) 的分辨率绘图,8:1绘图】

  • n > 0,n为所扩大的范围,用2^(n-1)转化(可使所做图像更精细)。

# 基线偏移 Baseline offset

  `\pbo<y>`   【图像沿y轴平移】
  • 该命令只应用于y轴(纵向)。

e.g.

\pbo-50【图像沿Y轴向上平移50像素】

\pbo100【图像沿Y轴向下平移100像素】

# 04 绘图命令 Drawing commands

# 一般使用

  • 这些命令必须遵循\clip(矢量作图)的代码格式,或者位于 {\p#}和{\p0}之间。

# 正方形 Square

{\p1}m 0 0 l 100 0 100 100 0 100{\p0}

  • 改变数字可以画出各种四边形,请自行探索~

# 椭圆 Rounded square

{\p1}m 0 0 s 100 0 100 100 0 100 c {\p0}

【请参照Square的图示理解代码】

  • 此例中c等于 "p 0 0 100 0 100 100"。(具体的请参照后文的补充解释)

# (几近) 圆形 Circle (almost)

{\p1}m 50 0 b 100 0 100 100 50 100 b 0 100 0 0 50 0{\p0}

  • 此处第二个b可省略。

# 补充解释

# 移动 Move

m <x> <y> 【绘制点移动至点(x, y)

  • 所有的绘图命令都必须用这个标记开始;
  • 如果此前有个未封闭的形状,系统自动将其封闭。

# (不封闭) 移动 Move (no closing)

n <x> <y> 【绘制点移动至点(x, y)

  • 如果此前有个未封闭的形状,不封闭现有的形状。

# 线条绘制 Line

l <x> <y>

【以现在所在位置和(x, y) 坐标为两端点绘制一条直线,同时绘制点移动至(x, y)

# 三次贝塞尔曲线 Cubic Bézier curve

b <x1> <y1> <x2> <y2> <x3> <y3>

【以当前位置为起点,(x3, y3)为终点,点 (x1, y1)和 (x2, y2)为控制点,绘制一条曲线(如下图)】

# 三次贝塞尔曲线连结 Cubic b-spline

s <x1> <y1> <x2> <y2> <x3> <y3> …… <xN> <yN>

  • 至少有三个坐标(当有三个坐标时等同于b命令);
  • 此命令可以将不同的贝塞尔曲线连在一起。

【作用概念同b命令,绘制光滑的三次贝塞尔曲线至点N(xN, yN)】

# 贝塞尔曲线扩展 Extend b-spline

p <x> <y>

【将用b命令绘制的曲线扩展至(x, y)

  • 等同于在s命令后增加一个(x, y)坐标。

# 封闭曲线Close b-spline

c

【封闭用b命令绘制的曲线】

# END

编撰:和路雪

原始刊载:https://www.douban.com/note/284573295 (opens new window)

参考资料:http://aegisub.cellosoft.com/docs/ASS_Tags (opens new window)

本文由和路雪基于Aegisub官方指南自翻整理编写,不保证涵盖官方指南所有内容,如有疏漏,还望见谅。 本文的主要目的为方便做时间轴的同学迅速上手、快捷查阅代码;本文大部分代码配有英文代码名称,本人英语能力有限,为避免翻译过程中产生误解给您带来不便,如有需要,还请参考原文。 本文仅为示例,请在实践中熟悉代码。 此外,本文代码排列顺序与官方指南并非完全一致,顺序实则为本人擅自划分类别排列,还请注意。 请善用搜索功能,以便快速定位到您想查找的代码。 编者使用软件版本为2.1.9,如代码格式无效,请注意是否是由您使用的软件版本过高或者过低导致的。

本文在重编撰时为阅读方便对部分标记进行了改动。