Skip to content

为什么代码块里面的中文字体显示不正常?

为什么代码块里面的中文字体显示不正常?

首先,请参考 为什么中文字体这么奇怪 配置正文字体。

✅ Typst 0.13 已改进

#4889#5305#5753 已改进默认情况。

配置正文字体后,请继续设置代码块的字体:

typst
#show raw : set text(font: (
  (name: "DejaVu Sans Mono", covers: "latin-in-cjk"),
  "Noto Sans CJK SC",
))
  • 「DejaVu Sans Mono」是等宽字体,负责 123abc,"!、{}()
  • 「Noto Sans CJK SC」是 CJK 字体,负责汉字和,“”!

⚠️ 注意 ASCII 引号"会用等宽字体,而分前后的引号“”会用 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 字符,否则会造成中文字体不统一。

示例

相关内容

另请参见

贡献者

The avatar of contributor named as Y.D.X. Y.D.X.
The avatar of contributor named as Hong Jiarong Hong Jiarong
The avatar of contributor named as QuadnucYard QuadnucYard
The avatar of contributor named as Earmer Carey Earmer Carey
The avatar of contributor named as 梦飞翔 梦飞翔
The avatar of contributor named as mgt mgt

页面历史

Comments
  • Latest
  • Oldest
  • Hottest

基于 MIT 许可发布