├── images └── Bezier-8a39c783.png ├── LICENSE └── README.md /images/Bezier-8a39c783.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kira-96/ASS-file/HEAD/images/Bezier-8a39c783.png -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ASS字幕文件说明 2 | 3 | *这是我多年前所做的笔记,资料都是从网上摘抄,其中内容难免有缺失或错误。* 4 | 5 | ## 第一部分 [Script Info] 6 | 7 | *这一部分主要是记录了一些文件内容的标题和信息* 8 | 9 | ``` yaml 10 | [Script Info] 11 | ; Script generated by Aegisub r8942 12 | ; http://www.aegisub.org/ 13 | !: 注释 14 | Title: Default Aegisub file 15 | ScriptType: v4.00+ 16 | WrapStyle: 0 17 | ScaledBorderAndShadow: yes 18 | YCbCr Matrix: TV.601 19 | Original Script: 脚本原作者 20 | Original Translation: 译者 21 | Original Editing: 编辑 22 | Original Timing: 时间轴 23 | Synch Point: 0 24 | Script Updated By: 修订者 25 | Update Details: 修订详情,修订部分的描述 26 | PlayResX: 1280 27 | PlayResY: 720 28 | PlayDepth: 颜色深度 29 | Collsions: Normal 30 | Timer: 100.0000 31 | ``` 32 | 33 | 下面就`[Script Info]`这一部分作简单说明: 34 | 35 | * ASS文件第一行必须是`[Script Info]` 36 | 37 | * `;`后面可以填写任何内容 38 | 39 | * `!:`后面是注释部分 40 | 41 | * `Title:`脚本文件的标题 42 | 43 | * `ScriptType:`脚本格式`ASS`文件为`v4.00+` 44 | 45 | * `WrapStyle:`指定了当一行字幕过长时的**换行方式** 46 | 47 | 共有4种换行方式: 48 | 49 | `0`:智能换行:上行较宽 50 | 51 | `1`:于行尾词出换行:仅于`\N`后断行 52 | 53 | `2`:不自动换行:于`\n`和`\N`后断行 54 | 55 | `3`:智能换行:下行较宽 56 | 57 | * `ScaledBorderAndShadow:`字幕边框宽度和阴影深度是否随着视频分辨率等比缩放,`yes`或`no` 58 | 59 | * `YCbCr Matrix:` 60 | 61 | * `Original Script:` 脚本原作者 62 | 63 | * `Original Translation:` 译者 64 | 65 | * `Original Editing:` 编辑 66 | 67 | * `Original Timing:` 时间轴人员 68 | 69 | * `Synch Point:` 同步点 70 | 71 | * `Script Updated By:` 脚本修订者 72 | 73 | * `Update Details:` 修订详情,修订部分的描述 74 | 75 | * `PlayResX:` 视频宽度`PlayResY:` 视频高度,这两个定义了视频的分辨率 76 | 77 | * `PlayDepth:` 显示颜色深度 78 | 79 | * `Collsions:` 字幕碰撞处理,当两条字幕重叠时,如何进行移动,共有两种方式 80 | 81 | `Normal`:后一条字幕出现在前一条的上方 82 | 83 | `Reverse`:前一条字幕向上移动给后一条字幕让位 84 | 85 | * `Timer:` 时间轴计时器,单位为`%`,默认为`100.0000` 86 | 87 | 大于`100`时,字幕会比预定越来越早的出现 88 | 89 | 小于`100`时,字幕会比预定越来越晚的出现 90 | 91 | 一般不改变,取默认`100.0000` 92 | 93 | ## 第二部分 [V4+ Styles] 94 | 95 | *这一部分主要保存了字幕的样式* 96 | 97 | ``` yaml 98 | [V4+ Styles] 99 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 100 | Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 101 | ``` 102 | 103 | 以`[V4+ Styles]`作为这一部分的开始,紧跟着第二行`Format:`基本也是固定的,而`Style`行的各个**值**和`Format`行的各个**名字**之间是一一对应关系。这个部分就像是一张表单,`Format`行就是表头,`Style`行就是往表格里填的数据,大概就是这么一个关系,一个脚本可以设置多个字幕样式。 104 | 105 | 下面讲一下每个名字的具体意义: 106 | 107 | * `Name`:样式名字 108 | * `FontName`:字体名称 109 | * `Fontsize`:字体大小 110 | * `PrimaryColour`:主要填充颜色 111 | * `SecondaryColour`:次要填充颜色,用于标准卡拉OK模式下的预填充 112 | * `OutlineColour`:字体边框颜色 113 | * `BackColour`:字体阴影色 114 | * `Bold`:粗体,**1开启,0关闭** 115 | * `Italic`:斜体,**1开启,0关闭** 116 | * `Underline`:下划线,**1开启,0关闭** 117 | * `StrikeOut`:删除线,**1开启,0关闭** 118 | * `ScaleX`:宽度缩放,单位为`%`,默认`100` 119 | * `ScaleY`:高度缩放,单位为`%`,默认`100` 120 | * `Spacing`:字体间距 121 | * `Angle`:旋转角度 122 | * `BorderStyle`:边框样式;默认为`1`,即使用正常字体边框,设置为`3`时,则使用不透明背景取代字体边框 123 | * `Outline`:边框宽度 124 | * `Shadow`:阴影距离 125 | * `Alignment`:字幕对齐方式 126 | * `MarginL`:左边距 127 | * `MarginR`:右边距 128 | * `MarginV`:垂直边距 129 | * `Encoding`:字体编码;默认为`1` 130 | 131 | ## 第三部分 [Events] 132 | 133 | *这一部分就是字幕的主体部分,记录了对话的开始和结束时间,对话内容和显示等信息* 134 | 135 | ``` yaml 136 | [Events] 137 | Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 138 | Dialogue: 0,0:00:01.24,0:00:01.99,Default,,0,0,0,,所以 139 | Comment: 0,0:00:00.00,0:00:00.00,Default,,0,0,0,,注释 140 | ``` 141 | 142 | 这一部分以`Events`作为开始,后面紧跟的`Format`基本也是固定的,后面的行和`Format`也是对应关系。 143 | 144 | * `Layer`:字幕的**层**,当两条字幕重叠时,层数较大的会叠加在层数小的上面,如果层数相同,那么后出现的会叠加的先出现的上面,层数默认为`0` 145 | * `Start`:字幕的开始时间,精度为`0.01s` 146 | * `End`:字幕的结束时间,精度为`0.01s` 147 | * `Style`:样式名称,对应`[V4+ Styles]`中的`Name`项 148 | * `Name`:说话人。只做参考,一般省略 149 | * `MarginL`:左边距。可对样式进行修改,默认为`0`采用原值,若不为`0`则取代原值 150 | * `MarginR`:右边距。可对样式进行修改,默认为`0`采用原值,若不为`0`则取代原值 151 | * `MarginV`:垂直边距。可对样式进行修改,默认为`0`采用原值,若不为`0`则取代原值 152 | * `Effect`:动态效果;`Scroll up, Scroll down, Banner, Karaoke` 153 | * `Text`:字幕。可以通过添加代码改变字幕,实现多种特效 154 | 155 | 每一行字幕开头的修饰语有两种: 156 | 157 | * `Dialogue`:正常的对话字幕内容 158 | * `Comment`:注释内容,这些行不会作为字幕内容显示在视频中 159 | 160 | ## 第四部分 代码及其作用 161 | 162 | 在这一部分正式开始之前,先作一个简单的说明: 163 | 164 | * 所有代码前必须加`\` 165 | * 代码必须放在`{}`中,`\N`,`\n`,`\h`除外 166 | 167 | 在代码说明部分会出现以下标记: 168 | 169 | * `<...>`:表示该部分需要输入参数 170 | * `[...]`:表示该部分为可选择输入项 171 | * `<../..>`:表示从给定参数中任选一项 172 | 173 | --- 174 | 175 | ### 常用代码 176 | 177 | * `\N`:强制换行 178 | 179 | * `\n`:空格,和空格键效果一样 180 | 181 | * `\h`:强制空格,即使在行首和行尾也能生效 182 | 183 | * `\a`:设置字幕对齐方式,`alignment`取值如下表 184 | 185 | | | 左 | 中 | 右 | 186 | | :--: | :--: | :--: | :--: | 187 | | 上 | 5 | 6 | 7 | 188 | | 中 | 9 | 10 | 11 | 189 | | 下 | 1 | 2 | 3 | 190 | 191 | * `\an`:设置字幕对齐方式,`alignment`取值和数字小键盘的布局相同,这种方式比较容易记住,所以通常采用这种方式设置对齐方式,包括第二部分`[V4+ Styles]`中的`Alignment`也是采用的这种对齐方式 192 | 193 | | | 左 | 中 | 右 | 194 | | :--: | :--: | :--: | :--: | 195 | | 上 | 7 | 8 | 9 | 196 | | 中 | 4 | 5 | 6 | 197 | | 下 | 1 | 2 | 3 | 198 | 199 | * `\b<0/1>`:设置粗体。`0`为关闭,`1`为开启 200 | 201 | * `\b`:设置字体磅值,取值为100的倍数。`100: Lowest, 400: Normal, 700: Bold, 900: Heaviest` 202 | 203 | * `\i<0/1>`:设置斜体。`0`为关闭,`1`为开启 204 | 205 | * `\u<0/1>`:设置下划线。`0`为关闭,`1`为开启 206 | 207 | * `\s<0/1>`:设置删除线。`0`为关闭,`1`为开启 208 | 209 | * `\be<0/1>`:边框模糊。`0`为关闭,`1`为开启 210 | 211 | * `\be`:边框模糊 212 | 213 | * `\blur`:边缘模糊(高斯函数)。`strength`取值越大,效果越明显,当字幕没有边框时,显示为字幕主体模糊效果 214 | 215 | * `\bord`:设置边框宽度 216 | 217 | * `\xbord`:设置x方向边框宽度 218 | 219 | * `\ybord`:设置y方向边框宽度 220 | 221 | * `\shad`:设置阴影距离 222 | 223 | * `\xshad`:设置x方向阴影距离 224 | 225 | * `\yshad`:设置y方向阴影距离 226 | 227 | * `\r