跳到主要内容

特效字幕的字体选择: 硬性条件、同行分歧与反常规用法

Note

字体这事看起来最像审美, 其实里面有不少是硬条件: 缺字会乱码, 跨平台尺寸不一致会让屏幕字错位. 这些跟审美无关.

0x00 能判对错的三条要求​

Anime 字幕论坛帖 5310 (楼主 Seekladoom, 2020-01-07) 给了三个场景:

横排: OPED 中日歌词和正文字幕不易缺字. 简体字幕不易缺字一般用方正的真 GBK; 繁体字幕不易缺字至少需要按 HKSCS 2008 标准做出来的字体, 最新的是 HKSCS 2016.

分行屏幕字: 基线不过高, 行距合适, 且有专门做假名字形满足中日混排需求, 确保视觉统一.

竖排: 特定集数 (第 1 集或关键剧情集数的片尾滚动 STAFF) 的 OP 或 ED、剧场版 ED 以及竖排屏幕字, 要保证字号和横排统一.

缺字会显示成乱码, 假名字形不足会让中日混排看着参差, 竖排字号不统一会一眼看出不齐. 它们与"好不好看"无关, 是能不能用的问题.

三条要求各对应一种缺失的能力: 缺字对应字符覆盖不足, 分行屏幕字对应假名字形不足, 竖排对应竖排字形或度量缺失.

这三条其实是同一件事的三个触发点, 都在问字体有没有某项能力. 按"这份字幕会用到哪些能力"列清单逐项查就行, 至少五项, 每项的查法分别是: 字符覆盖 (含生僻字与繁体) 看有无乱码; 假名字形质量看中日混排时的假名; 竖排支持看有无竖排样式; 度量精度看旋转类特效是否偏心; 字体体积看文件大小. 其中"度量精度"这一项来自技术交流群里「有些字体会出现偏心旋转」那条.

0x01 同一件事上的四种主张​

那帖的回复区分歧很大, 而且不是口味之争.

主帖的核心主张是满足那三条要求的字体才称得上"耐用", 并据此筛出一份合格清单 (是筛出来的, 不是并列推荐): 方正细圆_GBK、方正准圆_GBK、方正粗圆_GBK、方正正黑 GBK 系列、方正雅宋 GBK 系列、方正悠宋 GBK 系列、华康圆体 W3-A / W5-A / W7-A、華康中黑體(P)-UN、華康楷書體W5(P)-UN、華康細明體(P)-UN、源樣黑體、源石黑體、源樣明體、源流明體、源雲明體、源泉圓體.

pyyii1987 的回应是「方正准圆就够了, 要啥自行车」. 楼主反驳说「方正准圆_GBK 在涉及到屏幕字的中日混排时的假名很难看, 远不及思源黑体和思源宋体的中日混排效果. 腾祥的腾祥嘉丽大圆 GB18030 专门做了假名, 横排字幕的中日混排效果比方正准圆_GBK 好多了」. 他后来还补了一句: 方正准圆_GBK 的假名后来改用了 Mplus 的假名, 但质量仍比不上专业日文字体.

H.D.Kun 提出另一条路:「圆体的话汉仪正圆也行吧, 中宫宽大阅读起来也舒适」. 楼主回应说汉仪正圆的 S 版本 (GB18030) 在 Win8 上做的 ASS 外挂字幕, 到 Win7 上用 PotPlayer 加载会变大几圈, 导致屏幕字错位. 官方字库站未上架的正是这个 S 版本, 当时它仅在字由平台出售.

心刀斩心鬼则问「泛 cjk 字体还不够吗」.

四条回复都在讨论假名字形与跨语种一致性, 没有一条讨论汉字本身.

0x02 实测: 13 份成品用了 31 种字体​

把本地 13 份成品的 ^Style: 行全部读出来统计, 共出现 31 种字体. 取数口径是读 ^Style: 行的第二列字体名.

写这个统计时踩了个坑: 这些文件带 UTF-8 BOM, 用 utf-8 解码时 startswith("Style:") 会全部失败, 必须用 utf-8-sig. 用错编码时的结果是全库只统计到 2 种字体 (Noto Sans CJK 的 JP 与 SC), 其余 29 种全部漏掉.

import os
from collections import Counter

c = Counter()
for root, dirs, fs in os.walk("."):
for f in fs:
if not f.endswith(".ass") or ".bak" in f:
continue
# 必须用 utf-8-sig: 文件带 BOM, 用 utf-8 会让 startswith("Style:") 全部失败
s = open(os.path.join(root, f), encoding="utf-8-sig", errors="replace").read()
for line in s.split("\n"):
if line.startswith("Style:"):
parts = line[6:].split(",")
if len(parts) > 1:
c[parts[1].strip()] += 1 # 第二列才是字体名

for k, v in c.most_common(40):
print(k, v)
python

出现次数前列的字体, 日文商用 (Fontworks 系) 有 FOT-PopJoy Std B (36 个样式)、FOT-ニューロダン Pro M (12)、FOT-TsukuGo Pro B (12).

中文字体有方正少儿_GBK (6)、方正中粗雅宋_GBK (6)、方正兰亭准黑_GBK (4)、方正行楷_GBK (4).

开源泛 CJK 有 Noto Sans CJK JP (20)、Sarasa Gothic J Semibold (16)、更纱黑体 SC Semibold (13)、Noto Sans CJK SC (4)、Noto Sans CJK TC Light (3).

但总次数不能直接看. Arial 出现了 13 次, 听起来很多, 实际上它大多出现在 Default 与 *-furigana 这类兜底样式里, 不是这份作品的常用字体. 统计字体使用时要同时看它出现在哪些样式名上.

0x03 13 份成品全都做了中日配对​

把每份文件的样式按语种归类 (名字含 furigana / jp / staff 的算日文侧, 含 cn / sc / tc 的算中文侧), 结果是: 没有任何一份用同一种字体扛两个语种.

配对的做法有三类.

天使の3P 的三份 (INNOCENT BLUE / 大切がきこえる / 羽ばたきのバースデイ) 都是日文用 FOT-PopJoy Std B、中文用方正少儿_GBK, 两族各管一边.

同族跨语种: 同一个字体家族的日文版配中文版. 无职转生《オンリー》日文用 Sarasa Gothic J Semibold, 中文用更纱黑体 SC Semibold.

同族不同子集: 同一个泛 CJK 字体的不同语种子集. 缘之空 OP 与 ED、东方都用 Noto Sans CJK JP 配 Noto Sans CJK SC.

命运石之门《ファティマ》属混合式: 日文侧用 FOT-MatisseV Pro B / FOT-TsukuGo Pro B / FOT-TsukuMin Pro E, 中文侧用方正韵动中黑_GBK.

0x04 主要矛盾是中日混排​

上面两节指向同一件事: 中日混排的视觉统一才是字体选择的主要矛盾.

证据有两处. 一是帖子里四条回复全在讨论假名与跨语种一致性, 没人讨论汉字; 二是 13 份成品全部采用"分语种配字体"来回避这个矛盾.

针对这个矛盾有两种解法: 各用一套各自擅长的字体 (也就是上面说的配对), 或者在只能挑一套时选假名字形好的那套. 由此得到一条判据: 判断一套字体能不能单挑两个语种, 关键指标是假名字形质量; 在这件事上, 大部分泛 CJK 字体的汉字覆盖够用, 所以它不构成瓶颈. 验证方法是把同一句中日混排歌词分别用泛 CJK 字体和"中文黑体加日文黑体"渲染, 比较假名部分.

注意这条限定只针对"能否单挑"这一问; 字形覆盖本身依然是硬红线, 见 0x06.

另外实测到一组字号关系: 在这两个样本里, 注音正好是主字的一半. 无职转生主字 48、注音 24; 天使の3P 主字 36、注音 18. 同一文件里中文主字比日文主字小, 无职转生是日文 48、中文 42. 样本只有这两处, 还不能当通则用.

这个 0.5 倍是在"日文主字加日文假名注音"的组合下测出来的. 如果主字是中文而注音是日文, 能不能直接沿用, 没有验证过.

0x05 商用还是开源, 取决于要不要分发字体​

帖子里推荐的合格字体里, 方正与华康系列都是商用字体, 其中"方正的真 GBK"被当作简体不易缺字的标准解法.

另一份材料 (Seekladoom 转述欧美字幕组 unanimated 的排版经验) 提到中文和日文字体的体积庞大问题, 以及字体子集化的解决方法. 也就是"选什么字体"在工程上受字体文件体积约束.

不外嵌字体时商用字体能用, 代价是观众没装字体、观感不一致; 要内嵌或子集化, 得先解决商用授权, 这时候开源泛 CJK 字体才是无风险选项.

佐证是本地 13 份成品里有 5 份用了开源泛 CJK 字体 (Noto Sans CJK 系列、Sarasa Gothic 与更纱黑体).

0x06 几条容易出错的实操细节​

字形覆盖是硬红线. _Aegisub脚本_注音样式化.txt 第 464 行: 「换个字体, 有些字形幼圆没有」. 在注音、假名、生僻字的场景下, 覆盖率优先于气质.

有些字体会偏心: 常用自定义函数AutoTags及其变种的介绍.txt 第 534 行说 an5 给出的中心位置并不严格等于文字中心. 旋转与缩放类入场特效用之前先确认.

少出错排在气质前面. 技术交流群里有一条给新手的建议是 simhei, 理由是系统自带、编码兼容 (对字幕_压制_auto4使用的一些基础总结.txt 第 389 行); 同一份文件第 555 行还有一句「好的字幕就应该有好的字体, 改了一下字体, 感觉可爱多了」. 前者是底线, 后者是上限.

0x07 反常规用法: 目前只有原则, 没有实例​

前面几节讲的都是"字体要跟用途相称". 但导图里有个分支专门讲反着来, 三条: 反差萌; 字体不和 STAFF 匹配、不按中日匹配的做法; 反其道而行之, 故意选让人不喜欢的字体和特效.

我想给第三条找个实例, 在 Seekladoom 仓库里找到一个看着对口的压缩包叫《Aegisub 特效字幕模板 - 文字乱码.rar》. 解压之后里面只有一个 179 字节的 txt, 内容讲的是怎么改 kara-templater.lua 加一行 utf8 = utf8.

那是技术说明, 不是风格实例. 导图那个分支也以「其他有待扩充」结尾, 也就是它自己也没写满.

所以这一节只能记下这个空缺: 反常规用法目前只有原则, 没有可核对的实现. 要不要用, 得自己拿主意, 没有现成的例子可参照.


硬条件之外还有一半是偏好, 上面这些判据一条也管不着.

本文没有引用站内其它文档。

给 AI 买点 Token:
Alipay IconQR Code
Wechat IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...