서양 글꼴 모음

\usepackage{newtxtext} 한 줄을 넣고 pdfLaTeX를 돌린 뒤 나온 PDF를 pdffonts로 들여다보면, 본문 글꼴 TeXGyreTermesX 옆에 CMMI10, CMR10, CMSY7, CMEX10이 나란히 있습니다. 본문만 Times가 되고 수식은 Computer Modern에 남겨진 것입니다. LaTeX에서 서양 글꼴을 바꿀 때 실제로 사람을 괴롭히는 것은 이 한 가지뿐이고, 서체 취향은 그다음 이야기입니다. 이 페이지는 TeX Live 2024에 포함된 주요 서양 글꼴 패키지를, 읽어들인 뒤 수식까지 정말로 바뀌는지pdffonts로 하나씩 확인하며 정리합니다. Computer Modern 계열(lmodern, newcm), Times와 Palatino(newtx, newpx, mathptmx, mathpazo), 그리고 libertinus, fourier, kpfonts, XCharter까지 pdfLaTeX의 길과 fontspec의 길 두 갈래로 안내합니다.

본문만 바꾸면 수식은 Computer Modern에 남습니다

수식이 있는 문서라면 본문과 수식을 함께 바꿔 주는 패키지를 고르세요. LaTeX의 수식은 본문과 다른 글꼴——수식 이탤릭, 기호, 큰 연산자——로 조판되며, 본문 서체를 갈아 끼워도 거기에는 전혀 닿지 않습니다. \usepackage{newtxtext}만 읽어들인 PDF와 newtxmath까지 더한 PDF를 pdffonts로 비교하면 이 분리가 그대로 눈에 보입니다.

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의 수식 한 벌이 있습니다. 즉 newtx, newpx, fourier가 존재하는 이유는 서체 취향이 아니라 수식과의 정합 그 자체입니다. 반대로 수식이 거의 없는 문서——편지, 안내문, 슬라이드——라면 이 절은 통째로 무시하고 마음에 드는 서체를 고르면 됩니다.

실무적인 전제를 하나 더. 로마체, 산세리프, 등폭은 각각 다른 패키지로 독립해서 고릅니다. “본문은 Palatino, 산세리프는 Helvetica, 등폭은 Courier”라는 조합은 mathpazo, helvet, courier를 함께 읽어들이기만 하면 됩니다. 그리고 pdfLaTeX에서 본문 글꼴을 바꿀 때는 \usepackage[T1]{fontenc}도 함께 적는 것이 관례입니다(T1이 무엇을 바꾸는지, 그리고 이 패키지들이 내부에서 \rmdefault를 어떻게 재지정하는지는 글꼴 시스템 페이지가 다룹니다). fontspec을 쓰는 XeLaTeX / LuaLaTeX에서는 fontenc이 필요 없고, 이 절의 이야기도 해당되지 않습니다.

Computer Modern 계열: CM, lmodern, newcm, cm-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은 .pfb 92개——텍스트 72종과 수식 20종의 합——이고, OpenType판(.otf)도 72개가 있습니다. \usepackage{lmodern}을 읽어들이면 수식까지 LMMathItalic10, LMMathSymbols10, LMMathExtension10으로 바뀌어 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 모음으로, T1·TS1 인코딩의 Computer Modern을 Type 1으로 제공합니다. lmodern을 쓸 수 없는 오래된 환경에서 T1을 유지하면서 비트맵이 아닌 PDF를 얻고 싶을 때의 예비책이며, 자동 변환이라 힌팅 정보가 없습니다. 지금 새로 고를 이유는 사실상 없습니다.

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가 정석입니다. 둘 다 UC 샌디에이고의 Michael Sharpe가 만들었고, .sty 첫머리에는 txfonts.sty를 개작한 것이라고 적혀 있습니다. 흥미로운 것은 실제 내용입니다. newtxtext가 PDF에 임베드하는 것은 Times가 아니라 TeXGyreTermesX-Regular——뒤에서 다룰 TeX Gyre Termes를 확장한 글꼴입니다. 마찬가지로 newpxtextTeXGyrePagellaX-Regular를 임베드합니다. 즉 “Times 패키지”, “Palatino 패키지”의 실체는 URW 클론을 바탕으로 수식과 작은 대문자를 얹은 현대의 확장판입니다.

간편한 길도 있습니다. PSNFSS에 포함된 mathptmx(Times)와 mathpazo(Palatino)는 한 줄로 본문과 수식을 함께 바꿉니다. 다만 실측해 보면 둘 다 수식이 완전히 옮겨 가지 않습니다. mathptmx의 PDF에는 NimbusRomNo9LStandardSymL 사이에 CMEX10, CMSY10, CMR10이 남고, mathpazo의 PDF에도 PazoMath 옆에 같은 셋이 버팁니다. 곧 큰 연산자(∑, ∫)와 일부 기호는 Computer Modern 그대로라는 뜻입니다. 그것이 문제되지 않는 용도라면 충분하지만, 수식이 주역인 문서에서 newtx / newpx를 고르는 이유가 바로 여기 있습니다.

산세리프와 등폭도 같은 계통에서 맞출 수 있습니다. Helveticahelvet입니다. Helvetica는 글자 면이 커서 Times 등과 나란히 둘 때는 \usepackage[scaled=.92]{helvet}처럼 조금 줄여 읽어들이는 것이 관례입니다. Courier(등폭)는 courier입니다. 둘 다 수식에는 손대지 않고 산세리프나 등폭만 바꾸므로, 어떤 본문 패키지 위에도 자유롭게 겹쳐 쓸 수 있습니다.

이 고전 서체들의 밑바탕에 있는 것이 GUST의 TeX Gyre 일족입니다. URW가 공개한 PostScript base 35 클론에서 출발해 GUST가 글리프와 악센트까지 다시 다듬은 것으로, Termes(tgtermes, URW Nimbus Roman No9 L 유래, Times에 해당), Heros(tgheros, Helvetica에 해당), Pagella(tgpagella, URW Palladio L 유래, Palatino에 해당), Cursor(tgcursor, Courier에 해당), Bonum(tgbonum, Bookman 계열), Schola(tgschola, Century Schoolbook 계열), Adventor(URW Gothic L 유래, Avant Garde 계열), Chorus(URW Chancery L 유래, Zapf Chancery 계열)의 여덟 패밀리가 있습니다. 다만 \usepackage{tgtermes}만 읽어들이면 수식은 Computer Modern 그대로여서 PDF에 CMMI10 등이 남습니다. 수식까지 맞추려면 짝이 되는 OpenType 수식 글꼴 TeX Gyre Math(texgyretermes-math.otf, texgyrepagella-math.otf 등)를 unicode-math\setmathfont로 지정하세요.

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(구식 숫자) 같은 옵션도 받습니다.

다만 함정이 있습니다. \usepackage{libertinus}를 pdfLaTeX에서 읽어들여도 수식은 Computer Modern에 남습니다. 실측에서는 LibertinusSerif, LibertinusSans, LibertinusMono 옆에 CMMI10, CMSY10, CMEX10이 나란히 있었습니다. pdfLaTeX에서는 \usepackage{libertinust1math}를 명시적으로 더해야 하며, 더하면 PDF의 수식은 LibertinusT1Math 하나가 되고 CM은 사라집니다. 반면 LuaLaTeX / XeLaTeX에서 같은 \usepackage{libertinus}를 읽으면 LibertinusMath-Regular가 자동으로 들어옵니다. 즉 Libertinus는 엔진에 따라 완성도가 달라지는 패키지이니, pdfLaTeX에서 쓴다면 두 줄이라고 기억해 두세요.

그 점에서 fourierkpfonts는 한 줄로 끝납니다. 실측에서 둘 다 PDF에서 Computer Modern이 완전히 사라졌습니다. fourier는 본문에 Adobe Utopia를 두고 Fourier-Math-Extension, Fourier-Math-Symbols, Fourier-Math-Letters-Italic이라는 자체 수식 한 벌을 갖습니다. Utopia는 차분하고 실용적인 세리프체로 이공계 문서에서 꾸준히 인기가 있습니다. kpfonts는 URW Palladio를 바탕으로 하면서도 원 서체와 뚜렷이 다른 얼굴로 다듬은 일족으로, Kp--M-Ex, Kp--M-Sy, Kp--M-Italic 같은 넓은 수식군과 진짜 작은 대문자, 구식 숫자, 다중 적분 변형까지 품고 있습니다. OpenType판 kpfonts-otf도 있습니다.

Charter는 화면과 종이 모두에서 읽기 좋은 실용적인 세리프체이며, Michael Sharpe가 Bitstream Charter를 확장한 XCharter가 본문을 담당합니다. 다만 이것도 \usepackage{XCharter}만으로는 수식이 CM 그대로입니다. 실측에서는 \usepackage[charter]{newtxmath}를 더한 지점에서 수식이 XCharterMathMI, txexs, txsys로 바뀌었습니다. TeX Live 2024에는 XCharter-Math.otf라는 OpenType 수식 글꼴도 들어 있지만, 이는 \usepackage{xcharter-math}가 아니라 unicode-math\setmathfont로 읽는 형태라 pdfLaTeX에서는 쓸 수 없습니다. 하나 더, Bera(bera)는 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 후계, 세리프)예. LMMathItalic10, LMMathSymbols10, LMMathExtension10. CM 없음
newcomputermodernNew Computer Modern(현대판 CM, OpenType)예. NewCMMath-Regular. XeLaTeX / LuaLaTeX용
mathptmxTimes(PSNFSS, 간편)일부만. NimbusRomNo9L + StandardSymL이지만 CMEX10, CMSY10, CMR10이 남음
newtxtext + newtxmathTimes(newtx, 실체는 TeXGyreTermesX)예. NewTXMI, txsys, txmiaX, txexs. CM 없음
mathpazoPalatino(PSNFSS, 간편)일부만. PazoMath는 들어오지만 CMEX10, CMSY10, CMR10이 남음
newpxtext + newpxmathPalatino(newpx, 실체는 TeXGyrePagellaX)예. NewPXMI, pxsys, pxmiaX, txexs. CM 없음
helvetHelvetica(산세리프 전용, scaled로 축소)해당 없음. 수식에는 손대지 않음. 본문 패키지 위에 겹쳐 사용
courierCourier(등폭 전용)해당 없음. 수식에는 손대지 않음
tgtermes / tgpagella / tgheros / tgcursorTeX Gyre(URW 클론 유래; ≈Times / Palatino / Helvetica / Courier)아니요. CMMI10 등이 남음. TeX Gyre Math를 \setmathfont로 별도 지정
libertinusLibertinus(Linux Libertine 후계; 세리프/산세리프/등폭/수식)엔진에 따라 다름. pdfLaTeX에서는 CM이 남으므로 libertinust1math 추가. Lua/XeLaTeX에서는 LibertinusMath-Regular가 자동
fourierAdobe Utopia 기반예. Fourier-Math-Extension, Fourier-Math-Symbols, Fourier-Math-Letters-Italic. CM 없음
kpfontsURW Palladio 유래, 종합 세트예. Kp--M-Ex, Kp--M-Sy, Kp--M-Italic. CM 없음
XCharterCharter(Bitstream Charter 확장)단독으로는 아니요, CM이 남음. \usepackage[charter]{newtxmath}를 더하면 XCharterMathMI로 바뀜
beraBitstream Vera(슬랩 세리프 / 산세리프 / 등폭)아니요. CMMI10 등이 남음. 등폭만 가져오는 beramono 같은 부분 사용에 알맞음

망설일 때의 대략적인 기준. CM 얼굴이 좋다면 lmodern(OpenType 엔진이라면 newcm). Times가 필요하면 newtxtext + newtxmath, Palatino라면 newpxtext + newpxmath. 한 줄로 끝내고 싶다면 fourierkpfonts. 종합 패밀리라면 libertinus——pdfLaTeX에서는 libertinust1math를 잊지 마세요. 시스템에 이미 설치된 글꼴을 그대로 쓰고 싶다면 엔진을 XeLaTeX나 LuaLaTeX로 바꾸고 fontspec의 길로 가세요. 어느 길에서든 변하지 않는 원칙은 하나, 본문을 바꿨으면 수식도 확인하는 것입니다.