这次来介绍的是我一周之前完工的 VSCode
扩展:AegiKit
的使用介绍。这里准备简单介绍一下这个扩展的功能和用法。
功能列表
功能列表其实 Readme
里也有,但是鉴于不是所有人都会看这个,加之 Readme
里也说得比较简单,所以我在这里也列一下好了。
ASS
基础高亮- 卡拉
OK
模板行(template
)的高亮 - 卡拉
OK
代码行(code
)的高亮 Lua
代码格式化Lua
代码压缩(minify
)
下面就从几个大类来简单说明一下好了。
ASS
基础高亮
这个其实没什么好说的,为 VSCode
增加了新的 tmLanguage
支持也是耗时最长的。在我目前的颜色主题下,显示效果是这样的:
卡拉 OK 模板行高亮
AegiKit
为这种高亮定义了一种全新的文件后缀:karatmpl
,以方便实现更精准的功能对应。
样式
首先先来看一下效果吧:
默认情况下,karatmpl
文件会开启自动换行,以方便阅读。对于被感叹号(!
)包裹的内联 Lua
代码,也会根据 Lua
的高亮进行代码高亮的显示。
内联变量补全($
)
对于内联变量,只要你输入 $
字符,就会显示 kara-templater
可用的所有内联变量。其中部分变量有中文解释,便于书写代码。
内联变量在代码中也有自己的高亮,以表明其身份。
颜色预览
对于诸如 1c
等表示颜色的标签,AegiKit
基于 VSCode
实现了颜色预览与编辑的功能。如下图所示:
这张图中,我们可以通过这个小方格来实时查看当前对应的颜色。此外,还可以通过 VSCode
的颜色拾取器来主动选择颜色:
不过目前,颜色选择的功能还没有和透明度关联起来,因此选择透明度是没有用的。
卡拉 OK 代码行高亮
Lua
代码在卡拉 OK
自动化中起到了非常关键的作用。可惜的是,Aegisub
并没有对 Lua
,即卡拉 OK
代码行的高亮支持。并且在 Aegisub
中书写 Lua
也不是那么流畅。于是我把代码行高亮的部分也加到了 VSCode
里。
虽然目前代码行并没有太多的补全,但之后是有可能会有的。毕竟代码行也许要很多补全的内容,包括 _G
、maxj
、j
之类的。
代码格式化
AegiKit
自带了 Lua
的代码格式整理器,可以将 Aegisub
中单行的 Lua
代码变成人能正常阅读的多行代码。
代码格式化的方式和其他语言没有区别,按照正常的 VSCode
操作方式进行就可以了。
代码压缩
和上面的步骤相反,当我们想要将代码复制到 ASS
中时,我们需要压缩代码。这时候就可以使用代码压缩功能了。只需要使用这个命令就行了:
它会将目前编辑器中的代码压缩。
我还在寻找其他不修改当前源码,但可以获取压缩后源码的方式,所以可能还会有变动(
请问,关于AEGISUB的样式设计中,如何用代码设计自动换行的脚本(比如,一行的总像素不能超过1520,否则,自动换行,并设置行距为多少),并导入样式管理器中,供后续有长文案的时候,能自动换行使用
以我个人的看法的话,你可以这么假定:对于某一特定字体,每个字符的宽度是相同的。
比如随便取一个汉字,它的宽度可以通过 aegisub 自带的字体宽度计算函数计算得到,屏幕(视频)的宽度也可以得知。这里除一下取整就可以得到每行应有的字数了。
样式管理器是管理 ASS 自带样式的功能,对于诸如行距之类的属性可以调节一下,但其他的就做不到了。所以可以模仿卡拉ok脚本的效果,把原有行做注释处理,生成新的行用于实际渲染。
当然了,从个人角度而言,换行的显示效果是不大好的。所以我会选择实现一个简单的脚本,检测是否存在换行。如果存在换行则手动修正(比如通过概略计时拆分)。