# ASS-file **Repository Path**: itxuer/ASS-file ## Basic Information - **Project Name**: ASS-file - **Description**: ASS 字幕文件说明 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2020-09-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ASS字幕文件说明 *这是我多年前所做的笔记,资料都是从网上摘抄,其中内容难免有缺失或错误。* ## 第一部分 [Script Info] *这一部分主要是记录了一些文件内容的标题和信息* ``` yaml [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:`字幕边框宽度和阴影深度是否随着视频分辨率等比缩放,`yes`或`no` * `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] *这一部分主要保存了字幕的样式* ``` yaml [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] *这一部分就是字幕的主体部分,记录了对话的开始和结束时间,对话内容和显示等信息* ``` yaml [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