ASS 字幕假名标注行颜色整体渐变尝试

写在前面
前段时间学了一下 Aegisub,有两个问题困扰了我,其一是假名标注的位置如何精准设定,其二是假名标注颜色渐变的处理(方案 a:标注行整体渐变,方案 b:每个标注单独渐变)。如图 1 所示,这是之前闲的没事做的字幕的效果,问题一姑且可以靠肉眼手动解决,问题二则因为需要耗费的精力极大弃疗选择了方案 a。

由于最近比较忙(指八方旅人 2 和莱莎 3),第二个问题就一直搁置。昨天晚上突然闲的没事,就又想了一下,弄了个方案 b 的简易实现,最终效果如图 2 所示。

解决方案
DEMO
如图 3 所示,只需在每个汉字前加上 \1 \2 \3 之类的标识符(表示后面需要标注的汉字长度),设定四角的颜色,然后运行,即可得到每组汉字对应标注的四角颜色。
关于标识符:应该有更加自动化的方式,比如抓取连续的汉字(但是没办法区分图 3 中的第二行和第三行),也许要上点 NLP 模型(那就有点麻烦了……)。

细节
1. 配置
2. 颜色变换
ASS 是 BGR 顺序,因此需要和 RGB 顺序相互转化。
3. 标注信息抽取
比较朴素。
4. 颜色渐变
核心代码。
主流程
比较朴素。
5. 可视化
效果如图 4 所示。

后记
综上,代码和专栏秉着“能用就行”的态度写得都比较仓促简陋,见谅。
学习为主,后面不一定会用到。
附录
颜色渐变
`3vc` 表示边框颜色渐变,类似地,还有 `1vc` 和 `2vc` 等;
四个角的顺序是左上、右上、左下、右下。
ASS 的颜色顺序是 BGR;
位置设定

如图 5 所示,在 Aegisub 的视频窗口双击即可设定位置。
我目前的做法是:先对每个标注进行手动设定位置以确定水平坐标,再使用正则替换统一设定竖直坐标。