为什么代码块里面的中文字体显示不正常?
首先,请参考 为什么中文字体这么奇怪 配置正文字体。
✅ Typst 0.13 已改进
配置正文字体后,请继续设置代码块的字体:
typst
#show raw : set text(font: (
(name: "DejaVu Sans Mono", covers: "latin-in-cjk"),
"Noto Sans CJK SC",
))
- 「DejaVu Sans Mono」是等宽字体,负责
123
、abc
、,"!、{}()
等 - 「Noto Sans CJK SC」是 CJK 字体,负责汉字和
,“”!
等
此外,请不要设置 #show raw: set text(fallback: false)
。
如果你使用旧版本,请使用以下旧方案。
配置正文字体后,对于代码块,需要在源代码文件中使用类似的命令设置字体:
typst
#show raw : set text(font: ("DejaVu Sans Mono", "Noto Sans CJK SC"))
其中,「DejaVu Sans Mono」是等宽字体,「Noto Sans CJK SC」是一个你需要的中文字体。工作原理是等宽字体中没有中文字符,因此 fallback
到第二字体上。
因此,你需要需要保证你没有如 #show raw: set text(fallback: false)
的命令在你的文档中。同时要保证你的等宽字体中没有任何的 CJK 字符,否则会造成中文字体不统一。