西文字体集

加上一行 \usepackage{newtxtext},跑一遍 pdfLaTeX,再用 pdffonts 看看生成的 PDF:正文字体 TeXGyreTermesX 旁边赫然并列着 CMMI10CMR10CMSY7CMEX10——正文变成了 Times,数学却被留在 Computer Modern 里。在 LaTeX 中更换西文字体时,真正让人头疼的就只有这一点,字体喜好是之后的事。本页梳理 TeX Live 2024 随附的主要西文字体宏包,并逐一用 pdffonts 确认 载入之后数学是否真的一起换掉。内容涵盖 Computer Modern 一脉(lmodernnewcm)、Times 与 Palatino(newtxnewpxmathptmxmathpazo),以及 libertinusfourierkpfontsXCharter,并同时给出 pdfLaTeX 与 fontspec 两条路线。

只换正文,数学就会留在 Computer Modern

含有数学内容的文档,请选择能把正文和数学一起换掉的宏包。 LaTeX 的数学使用另一套字体排版——数学斜体、符号、大型算符——更换正文字体丝毫触及不到它们。用 pdffonts 比较「只载入 \usepackage{newtxtext}」和「再加上 newtxmath」两份 PDF,这种分离便一目了然。

terminal
# text only: the maths is still Computer Modern
$ pdflatex text-only.tex && pdffonts text-only.pdf
PHVSPW+TeXGyreTermesX-Regular   Type 1   Custom    yes yes yes
KGFAFA+CMMI10                  Type 1   Builtin   yes yes yes
PTYRNT+CMR10                   Type 1   Builtin   yes yes yes
DZZUCU+CMSY7                   Type 1   Builtin   yes yes yes
YQJSDJ+CMEX10                  Type 1   Builtin   yes yes yes

# add \usepackage{newtxmath}: no CM left at all
$ pdflatex text-and-math.tex && pdffonts text-and-math.pdf
IKSTLO+TeXGyreTermesX-Regular  Type 1   Custom    yes yes yes
QRRSLK+NewTXMI                 Type 1   Builtin   yes yes yes
MIQVDX+txsys                   Type 1   Builtin   yes yes yes
OGYQFN+txmiaX                  Type 1   Builtin   yes yes yes
CYBZPM+txexs                   Type 1   Builtin   yes yes yes

在纸面上也是同样的情形。Times 比 Computer Modern 笔画更粗、字面更大,因此把数学留在纤细的 CM 中,公式在行内就会显得瘦弱而脱节。为弥合这一落差才有了「正文+数学」的配对:Times 用 newtxmath,Palatino 用 newpxmath 或 Pazo Math,Utopia 用 fourier 的整套数学。换言之,newtxnewpxfourier 之所以存在,不是出于字体品味,而正是为了 与数学协调。反过来,如果文档里几乎没有公式——信件、通知、幻灯片——那么整节都可以忽略,随喜好选字体即可。

还有一个实务前提。罗马体、无衬线体和等宽体是 由不同宏包独立选择的。「正文用 Palatino、无衬线用 Helvetica、等宽用 Courier」这样的组合,只要一起载入 mathpazohelvetcourier 即可。并且在 pdfLaTeX 中更换正文字体时,惯例是同时写上 \usepackage[T1]{fontenc}T1 究竟改变了什么,以及这些宏包在底层如何重新指向 \rmdefault,属于字体系统页面的内容)。而在使用 fontspec 的 XeLaTeX / LuaLaTeX 下不需要 fontenc,本段内容也不适用。

Computer Modern 一脉:CM、lmodernnewcmcm-super

若要用 CM 一脉开始新文档,该选的是 lmodern(pdfLaTeX)或 newcomputermodern(XeLaTeX / LuaLaTeX),几乎没有理由继续使用原始的 Computer Modern。不指定任何字体时 LaTeX 使用的 CM,正是 Knuth 为 TeX 设计的那套书体——细线条、清晰衬线,一眼可辨的「TeX 味」——但它默认使用 7 位的 OT1 编码,代价很实在:带重音的词无法断词。

Latin Modern(宏包 lmodern)是波兰 TeX 用户组 GUST 对 CM 的重制,是它 事实上的后继。外观几乎不变,同时支持 T1,带重音的字母作为单一字形存在。清点 TeX Live 2024 所附内容,Type 1 一共 92 个 .pfb 文件——72 种文本字体加 20 种数学字体——OpenType 版也有 72 个 .otf。载入 \usepackage{lmodern} 后数学也一并换成 LMMathItalic10LMMathSymbols10LMMathExtension10,PDF 中一个 CM 字体都不剩。若喜欢 CM 的面貌,从这里开始。

New Computer Modern(宏包 newcomputermodern,简称 newcm)是 Antonis Tsolomitis 以 OpenType 为前提制作的现代版 CM。TeX Live 2024 所附版本除 NewCM10-Regular 等正文字体外,还包含 完整的数学字体 NewCMMath-Regular、等宽的 NewCMMono10、无衬线的 NewCMSans10,以及涵盖希腊文、西里尔文和天城文的文件。它还在常规 Regular 之外提供更重的 Book 字重NewCM10-Book),这在 CM 一脉中并不常见,正好弥补 CM 正文偏细的弱点。

还有一个名字值得记住:cm-super。它是从 CM/EC 位图自动矢量化而来的 Type 1 集合,提供 T1TS1 编码的 Type 1 版 Computer Modern。在没有 lmodern 的旧环境中,若想保持 T1 又得到非位图 PDF,它可作备用;由于是自动转换,缺少 hinting 信息。如今基本没有理由重新选它。

latex
% the CM successor; the sensible default on pdfLaTeX
\usepackage{lmodern}
\usepackage[T1]{fontenc}

% modern CM with a complete math font; for XeLaTeX / LuaLaTeX
\usepackage{newcomputermodern}   % or: \usepackage{newcm}

Times 与 Palatino:newtx / newpx,以及简便的 mathptmx / mathpazo

要用 Times 排版数学较多的论文,标准选择是 newtxtext + newtxmath;Palatino 则是 newpxtext + newpxmath。二者均出自加州大学圣迭戈分校的 Michael Sharpe,.sty 开头写明它们改自 txfonts.sty。有意思的是实际内容:newtxtext 嵌入 PDF 的并不是 Times,而是 TeXGyreTermesX-Regular——下文将谈到的 TeX Gyre Termes 的扩展版。同样,newpxtext 嵌入的是 TeXGyrePagellaX-Regular。也就是说,所谓「Times 宏包」「Palatino 宏包」,其实是以 URW 克隆为底、再补上数学和小型大写的现代扩展版。

也有更省事的路线。PSNFSS 附带的 mathptmx(Times)和 mathpazo(Palatino)只用一行就把正文和数学一起换掉。但实测显示,二者的数学都没有完全迁移:mathptmx 的 PDF 中,NimbusRomNo9LStandardSymL 之间仍有 CMEX10CMSY10CMR10mathpazo 的 PDF 里,PazoMath 旁边也留着同样的三个——也就是说,大型算符(∑、∫)和部分符号仍是 Computer Modern。若不在意这点,它们已经够用;但若文档以公式为主角,选择 newtx / newpx 的理由正在于此。

无衬线体和等宽体也可以在同一脉络中配齐。Helvetica 对应 helvet;由于 Helvetica 字面偏大,与 Times 并置时通常略微缩小载入,例如 \usepackage[scaled=.92]{helvet}Courier(等宽)对应 courier。二者都不触及数学,只替换无衬线或等宽,因此可以自由叠加在所选正文宏包之上。

这些经典字体的底子,是 GUST 的 TeX Gyre 一族。GUST 以 URW 公开的 PostScript base 35 克隆为起点,重新整理字形与重音,形成八个家族:Termestgtermes,源自 URW Nimbus Roman No9 L,约等于 Times)、Herostgheros,约等于 Helvetica)、Pagellatgpagella,源自 URW Palladio L,约等于 Palatino)、Cursortgcursor,约等于 Courier)、Bonumtgbonum,Bookman 系)、Scholatgschola,Century Schoolbook 系)、Adventor(源自 URW Gothic L,Avant Garde 系)和 Chorus(源自 URW Chancery L,Zapf Chancery 系)。不过只载入 \usepackage{tgtermes}数学仍是 Computer Modern,PDF 中会留下 CMMI10 等。若要连数学一起配齐,请用 unicode-math\setmathfont 指定配套的 OpenType 数学字体 TeX Gyre Mathtexgyretermes-math.otftexgyrepagella-math.otf 等)。

document.tex
\documentclass{article}
% Times body + matching math, on pdfLaTeX
\usepackage{newtxtext}
\usepackage{newtxmath}
\usepackage[scaled=.92]{helvet}  % Helvetica, slightly reduced
\usepackage{courier}            % mono = Courier
\usepackage[T1]{fontenc}
\begin{document}
Text in Times, with matching math: \( e^{i\pi} + 1 = 0 \).
\textsf{Sans is Helvetica.} \texttt{Mono is Courier.}
\end{document}

Libertinus、fourier、kpfonts、XCharter:按完整度选择

如果你想要一套「综合家族」——正文、无衬线、等宽、数学都出自同一套设计——那么 TeX Live 2024 中最齐全的是 Libertinus。清点 libertinus-fonts 的内容:衬线体有 Regular、Semibold、Bold 三个字重,各含正体与斜体,另有 Display 与 Initials;无衬线三款;等宽一款;键盘符号一款;以及 LibertinusMath-Regular。它出自 Linux Libertine 与 Linux Biolinum,README 明确写着分支自 2012 年 7 月发布的 5.3.0 版。宏包 libertinus 是旧 libertine(Linux Libertine)的后继,本身只是一个入口包装:在 pdfLaTeX 下载入 libertinus-type1,在 XeLaTeX / LuaLaTeX 下载入 libertinus-otf,并可接受 osf(旧式数字)等选项。

不过 有个陷阱。在 pdfLaTeX 下载入 \usepackage{libertinus}数学仍会留在 Computer Modern——实测中 CMMI10CMSY10CMEX10 就并列在 LibertinusSerifLibertinusSansLibertinusMono 旁边。在 pdfLaTeX 中必须 显式追加 \usepackage{libertinust1math};加上之后,PDF 的数学就只剩 LibertinusT1Math 一个,CM 全部消失。而在 LuaLaTeX / XeLaTeX 下,同样的 \usepackage{libertinus} 会自动带入 LibertinusMath-Regular。也就是说,Libertinus 的完整度取决于引擎——在 pdfLaTeX 上,请记住它是两行。

相比之下,fourierkpfonts 一行就搞定:实测中两者都把 Computer Modern 从 PDF 里彻底赶了出去。fourier 把 Adobe Utopia 用作正文,并自带 Fourier-Math-ExtensionFourier-Math-SymbolsFourier-Math-Letters-Italic 这一整套数学字体。Utopia 是沉稳实用的衬线体,在理工科文档中长期受欢迎。kpfonts 以 URW Palladio 为底,却做出与原字体明显不同的面貌,包含 Kp--M-ExKp--M-SyKp--M-Italic 等广泛的数学字体群、真正的小型大写、旧式数字,以及多重积分的变体。此外还有 OpenType 版 kpfonts-otf

Charter 是在屏幕和纸面上都易读的实用衬线体,由 Michael Sharpe 扩展 Bitstream Charter 而成的 XCharter 负责正文。但只写 \usepackage{XCharter},数学同样留在 CM。实测中,加上 \usepackage[charter]{newtxmath} 后数学才换成 XCharterMathMItxexstxsys。TeX Live 2024 也附有 OpenType 数学字体 XCharter-Math.otf,但它是通过 unicode-math\setmathfont 载入,而不是 \usepackage{xcharter-math},因此在 pdfLaTeX 中用不了。还有一款:Berabera)是 Bitstream Vera 的 Type 1 版,包含 Bera Serif(粗衬线)、Bera Sans 和 Bera Mono 三族。它不含数学,适合局部使用,例如只用 beramono 取等宽。

latex
% one line each — measured: no Computer Modern left in the PDF
\usepackage{fourier}      % Utopia + a full math set
% \usepackage{kpfonts}    % Palladio-derived, wide math coverage

% Libertinus on pdfLaTeX needs TWO lines, or the math stays CM
% \usepackage{libertinus}
% \usepackage{libertinust1math}

% Charter body + matching math
% \usepackage{XCharter}
% \usepackage[charter]{newtxmath}
\usepackage[T1]{fontenc}

一览:哪些宏包连数学也换(pdffonts 实测)

下表记录的是:只载入该宏包的最小文档用 pdfLaTeX 编译后,再用 pdffonts 读出 PDF 中残留字体的结果。「数学是否一起换」一栏为「是」的行,无需追加任何一行。 为「否」的行,则只换正文而把数学留在 CM——正是开篇看到的那种不一致。

宏包外观 / 系谱数学是否一起换(PDF 中残留的字体)
lmodernLatin Modern(CM 后继,衬线)是。LMMathItalic10LMMathSymbols10LMMathExtension10;不留 CM
newcomputermodernNew Computer Modern(现代 CM,OpenType)是。NewCMMath-Regular;面向 XeLaTeX / LuaLaTeX
mathptmxTimes(PSNFSS,简便)部分。NimbusRomNo9L + StandardSymL,但 CMEX10CMSY10CMR10 仍在
newtxtext + newtxmathTimes(newtx;实为 TeXGyreTermesX)是。NewTXMItxsystxmiaXtxexs;不留 CM
mathpazoPalatino(PSNFSS,简便)部分。会用上 PazoMath,但 CMEX10CMSY10CMR10 仍在
newpxtext + newpxmathPalatino(newpx;实为 TeXGyrePagellaX)是。NewPXMIpxsyspxmiaXtxexs;不留 CM
helvetHelvetica(仅无衬线;用 scaled 缩小)不适用。不触及数学;叠加在正文宏包之上使用
courierCourier(仅等宽)不适用。不触及数学
tgtermes / tgpagella / tgheros / tgcursorTeX Gyre(源自 URW 克隆;≈Times / Palatino / Helvetica / Courier)否。CMMI10 等仍在;需用 \setmathfont 另加 TeX Gyre Math
libertinusLibertinus(Linux Libertine 后继;衬线/无衬线/等宽/数学)取决于引擎。pdfLaTeX 下会留 CM,需追加 libertinust1math;Lua/XeLaTeX 下会自动带入 LibertinusMath-Regular
fourier基于 Adobe Utopia是。Fourier-Math-ExtensionFourier-Math-SymbolsFourier-Math-Letters-Italic;不留 CM
kpfonts源自 URW Palladio,完整套装是。Kp--M-ExKp--M-SyKp--M-Italic;不留 CM
XCharterCharter(Bitstream Charter 扩展)单用为否,CM 仍在;加上 \usepackage[charter]{newtxmath} 后换成 XCharterMathMI
beraBitstream Vera(粗衬线 / 无衬线 / 等宽)否。CMMI10 等仍在;适合局部使用,例如只用 beramono 取等宽

犹豫时的粗略指南。喜欢 CM 就用 lmodern(OpenType 引擎则用 newcm)。需要 Times 就用 newtxtext + newtxmathPalatino 则用 newpxtext + newpxmath想一行搞定就用 fourierkpfonts想要综合家族就用 libertinus——在 pdfLaTeX 上别忘了 libertinust1math。若要直接使用系统中已安装的字体,请把引擎换成 XeLaTeX 或 LuaLaTeX,走 fontspec 那条路。两条路上不变的原则只有一条:换了正文,就要检查数学。