Typst 是为科学写作而诞生的基于标记的排版系统。 它被设计之初就是作为一种替代品,用于替代像 LaTeX 这样的高级工具,又或者是像 Word 和 Google Docs 这样的简单工具。
起初,笔者下载了一个 Typst 简历模板,想试一试编译出来如何。笔者在 VS Code 中进行修改编译,但编译出来的字体显示异常,字体的 粗体 和 斜体 完全不显示,和模板作者提供的示例大相径庭。多方查验,发现主要原因是 Typst 不支持可变字体。
笔者工作环境为 Fedora Linux 40,Typst 版本为 0.11.1,主要使用的字体为 思源系列。最初安装字体的时候,尚不清楚各种字体格式的细节,只随便下载了一个 OTF 格式的包(思源黑体,思源宋体),我将这些字体文件安装到了 ~/.local/share/fonts/
目录下,一直以来都是使用这样的配置,在其他软件的界面一直没有出现问题,导致一开始没有向这个方向思考。
参考 Typst 中文用户指南,在 Typst 的一个 Issues 中我找到了答案。
解决方案
首先运行 typst font --variants
来查看字体是否提供粗细变体
如果可以正常显示粗体和斜体将显示:
Source Han Serif
- Style: Normal, Weight: 700, Stretch: 100%
- Style: Normal, Weight: 250, Stretch: 100%
- Style: Normal, Weight: 900, Stretch: 100%
- Style: Normal, Weight: 300, Stretch: 100%
- Style: Normal, Weight: 500, Stretch: 100%
- Style: Normal, Weight: 400, Stretch: 100%
- Style: Normal, Weight: 600, Stretch: 100%
否则:(你在 MS Word 中看到的是合成的字重,而 Typst 尚不支持伪粗体)
Source Han Sans CN VF
- Style: Normal, Weight: 250, Stretch: 100%
因此,我们需要安装静态字体(思源宋体的 Releases ):
然后将字体文件解压到系统的 /usr/share/fonts/
目录或者用户的 ~/.local/share/fonts/
目录下。
当然,你也可以只安装简体中文,但是因为 Releases 中没有单独提供简体中文的静态版本,就需要通过 这个链接 中的方案来将可变字体转换为静态字体。步骤略繁琐,因此笔者建议下载全部静态字体。
之后,你的 Typst 生成的 PDF 将可以通过 _斜体_
和 *粗体*
来显示 斜体 和 粗体 。
对于「楷体」或者「仿宋」的加粗,可以使用 Cuti 这个包实现伪粗体。
参考
https://typst-doc-cn.github.io/docs/chinese/
https://github.com/typst/typst/issues/725
https://github.com/nju-lug/modern-nju-thesis/issues/1
https://github.com/typst/typst/discussions/2508