英文字体配置

在LaTeX的article等基本文档类中,默认的英文字体为Computer Modern Roman。

一个常见的英文字体为Times New Roman,在很长时间内它是 Windows 平台上 Word 的默认西文字体,与LaTeX的英文字体不同,并且该字体不能免费商用。

英文字体的配置命令包括如下三条:

1
2
3
4
5
6
% 英文默认字体
\setmainfont{<font name>}[<font features>]
% 英文无衬线字体
\setsansfont{<font name>}[<font features>]
% 英文等宽字体
\setmonofont{<font name>}[<font features>]

例如

1
2
3
\setmainfont{Noto Serif Light}
\setsansfont{Noto Sans}
\setmonofont[Scale=MatchLowercase]{Noto Mono}

再例如

1
2
3
\setmainfont{TeX Gyre Termes}
\usepackage{unicode-math} % 需要 unicode-math 宏包
\setmathfont{TeX Gyre Termes Math}

这个还顺便改变了数学字体。

有的人喜欢花里胡哨的英文字体,例如calligra,需要导入同名的package,例如{\Huge\calligra fenglielie}的效果为

关于英文字体的配置只是记录一下,我并不打算改变默认的英文和数学字体,看着挺顺眼的。

英文字体调整

除了全局性的修改字体,在局部改变字体的样式也是很常见的需求,例如加粗以强调重要的内容。 常见命令及效果如下表

表中包括了两类几乎等效的命令,例如\bfseries\textbf,但是用法略有区别,前者的修改是持续性的,因此最好使用{}框起来,保证{}外部的内容不受影响,后者则需要加上必选参数{}以明确生效范围,例如

1
2
{\bfseries xxxx}
\textbf{xxxx}

关于加粗的细节:

  • 加粗和字形无关,只保证字体粗细。
  • 在数学公式中的加粗推荐使用bm宏包的\bm命令,建议用来替换\mathbf命令。

这些字体命令可以组合使用,例如获取直立加粗字体

1
{\upshape\bfseries xxxx}

与上述字体命令相对,早期提供的字体调整命令为:\bf, \it, \rm, \tt, \sc,这些命令已经不推荐使用。

调整字体的大小也是很常见的需求,常见命令及效果如下表,这里的修改都是持续性生效的,因此也需要使用{}框起来。

英文编程字体

另外补充记录一下在编程中经常使用的英文字体,对编程字体的常见要求包括:

  • 字体等宽(中英文之间倒是不必等宽,或者要求英文宽度严格为中文的一半,没必要,也比较丑)
  • 字体辨识度高(数字0和大小写字母Oo,大写I,数字1,大小写字母Ll容易区分)

常见的英文编程字体包括:

  • Courier New:(Windows自带)Windows的缺省等宽字体,简称CN,这个字体在Windows早期就存在,因此是很多软件的默认字体,但是它的字形太细了,不适合现在的显示屏和审美
  • Consolas:(Windows自带)相当于是Courier New的升级字体,与CN相比字形更窄,能够在较少的空间显示更多的内容。Consolas是VS系列的默认字体,也是VSCode的默认字体
  • Cascadia:(Windows自带前两个)相当于为新的windows terminal配套提供的一套字体,包括几个版本
    • Cascadia Code 标准版,支持连字,例如箭头->和大于等于号>=
    • Cascadia Mono 不支持连字的版本,Windows在终端默认使用的等宽字体
    • Cascadia (Code|Mono) PL 是支持 PowerLine 符号的版本,Windows不会默认安装
  • Monaco:苹果出品的号称最好的编程字体
  • Source Code Pro:Adobe开发的字体,与Source Hans CJK风格相似
  • Noto Mono:Google开发的一整套集齐各种语言的等宽字体,完整版很大
  • Fira Code:Mozilla 委托设计的开源字体族Fira的扩展,支持连字,经常被网上推荐使用
  • Nerd Fonts:这是一组字体,特点是将常见的图标例如Font Awesome结合到字体中,因此可以在命令行支持各种炫酷主题的显示效果,而一般的字体可能出现缺失图标无法正常显示的问题。其中经常被推荐的字体是Meslo Nerd Font,在终端可以选择MesloLGM Nerd Font作为主要的英文字体

注意:是否显示连字,除了字体本身是否支持,还和编辑器的选项有关,例如VSCode有相关选项可以禁止连字。