“漢” 한 글자를 Harano Aji 명조, Hiragino 명조 ProN, IPAex 명조로 각각 조판해 폭을 재면 셋 다 정확히 10.0pt——10pt에서의 전각, 곧 1 em이었습니다. 일본어 글꼴을 갈아 끼워도 행이 움직이지 않는 이유가 여기 있으며, 서체를 바꾸면 행 길이가 달라지는 라틴 문자와는 사정이 전혀 다릅니다. 그래서 LaTeX에서 일본어 글꼴을 고를 때 정작 문제가 되는 것은 겉모습이 아니라 그 서체가 상대 환경에 정말로 있는지, 그리고 PDF에 제대로 임베드되는지입니다. 이 페이지는 TeX Live 2024가 확실히 갖고 있는 일본어 글꼴을 실측으로 확인하고, LuaLaTeX·XeLaTeX·(u)pLaTeX 각각의 지정 방법과 pdffonts로 임베드를 확인하는 법까지 다룹니다.
TeX Live에 반드시 들어 있는 일본어 글꼴은 무엇인가
동봉되는 것은 Harano Aji와 IPA / IPAex의 세 계통뿐이고, Noto CJK와 Source Han은 들어 있지 않습니다. 이는 추측이 아니라 kanji-config-updmap-sys status가 돌려주는 목록 그 자체입니다. TeX Live 2024에서 이 명령을 실행하면 현재 설정이 haranoaji이고, 대기 중인 후보가 haranoaji, ipa, ipaex 세 가지임이 표시됩니다. Hiragino나 Morisawa 같은 상용 글꼴은 시스템에 들어 있으면 쓸 수 있지만, TeX Live가 배포하는 것은 아닙니다.
$ kanji-config-updmap-sys status
CURRENT family for ja: haranoaji (variant: -04)
Standby family : haranoaji
Standby family : ipa
Standby family : ipaex
# asking for a font that is not installed fails loudly
$ lualatex noto.tex
luaotfload | db : Reload initiated; reason: Font "NotoSerifCJKJPRegular" not found.
! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found.이 경계는 실제로 문서를 망가뜨립니다. \usepackage[noto]{luatexja-preset}라고 쓴 최소 문서를 LuaLaTeX에 통과시키면 ! Package fontspec Error: The font "NotoSerifCJKJPRegular" cannot be found.에서 멈췄습니다. 프리셋 이름이 정의되어 있어도 실제 글꼴이 없으면 거기까지입니다. 따라서 공저자나 투고처에 넘기는 원고에서는 haranoaji(또는 ipaex)를 지정하는 것이 유일하게 안전한 선택입니다. Noto CJK나 Source Han을 쓰고 싶다면 글꼴 자체를 따로 설치한 뒤 그 전제를 상대에게도 알려야 합니다.
| 글꼴 | 출처 | TeX Live 2024에 동봉되는가 |
|---|---|---|
Harano Aji | 호소다 마사미치가 Source Han의 CID를 Adobe-Japan1로 다시 매긴 무료 글꼴 | 예. 기본값. 명조·고딕 각 7웨이트(haranoaji와 haranoaji-extra로 분할) |
IPAex | 일본 IPA 기관이 배포하는 무료 글꼴 | 예. ipaexm.ttf(명조)와 ipaexg.ttf(고딕). TeX Live 2020 이전의 기본값 |
Noto CJK / Source Han | Google와 Adobe가 공개하는 오픈소스 범 CJK 글꼴 | 아니요. 글꼴 맵만 들어 있고 실체는 따로 설치해야 합니다 |
Hiragino | macOS에 동봉되는 상용 서체 | 아니요. macOS에서만 쓸 수 있고 hiragino-pron 같은 프리셋으로 부릅니다 |
Morisawa | Morisawa의 상용 서체. 상업 인쇄의 표준 | 아니요. 라이선스 구입이 필요합니다. morisawa-pr6n 같은 프리셋이 준비되어 있습니다 |
명조체와 고딕체 — \textmc와 \textgt로 전환하기
일본어 조판은 두 서체로 움직입니다. 명조체(Mincho)는 가로획이 가늘고 세로획이 굵으며 획 끝에 uroko(“비늘”)라 부르는 작은 삼각 장식이 붙는 서체로, 서양의 세리프체에 해당하며 긴 본문을 맡습니다. 고딕체(Gothic)는 획의 굵기가 거의 일정하고 장식이 없어 서양의 산세리프체에 해당하며, 제목·강조·캡션·도표 안 글자에 알맞습니다. 전환은 서양 글꼴 명령과 같은 방식으로, 선언형 \mcfamily / \gtfamily와 인수에만 적용되는 명령형 \textmc{...} / \textgt{...}가 있습니다. mc는 mincho, gt는 gothic의 약자입니다.
本文は明朝体で組みます。\textgt{ここだけゴシック体}で強調できます。
{\gtfamily この波括弧の中はすべてゴシック体になります。}
見出しなどは \textbf{太字} にすると、和文では自動的にゴシック体になります。여기서 라틴 문자와 결정적으로 갈리는 것이 굵은꼴의 처리입니다. 일본어 명조체는 기본으로 굵은 웨이트를 갖지 않으므로, \bfseries와 \textbf{}는 사실상 고딕체로의 전환에 할당됩니다(LuaTeX-ja 기본값에서도 명조·고딕 양쪽의 굵은 시리즈가 고딕의 중간 굵기를 가리킵니다). 또한 일본어에는 기본적으로 이탤릭체나 사체의 개념이 없어 서양식으로 기울어진 글리프는 마련되지 않습니다. \textmc와 \textgt가 움직이는 것은 서체(family)뿐이며, 굵기(series)나 자형(shape)과는 독립적입니다. 클래스나 패키지에 따라 \rmfamily / \sffamily에 연동해 명조/고딕도 함께 전환되도록 설정할 수 있습니다(LuaTeX-ja에서는 luatexja-fontspec의 match 옵션).
이 두 서체 외에 붓글씨 서체도 있습니다. 해서체(Kaisho)는 한 획씩 붓을 떼며 정연하게 쓰는 서체이고, 행서체(Gyosho)는 획을 이어 조금 흘려 쓰는 반흘림체입니다. 상장, 식사문, 안내장처럼 일본적인 정취를 내고 싶은 곳에 쓰입니다. 모서리를 둥글게 한 마루 고딕체(Maru Gothic)도 있으며 \mgfamily / \textmg{...}로 부릅니다. 다만 마루 고딕의 실체를 가진 글꼴은 많지 않고 Harano Aji에는 없습니다. 아래에서 다룰 deluxe 옵션을 붙여도 임베드되는 것은 명조와 고딕뿐입니다. 일상적인 논문과 책 조판의 중심은 어디까지나 명조체와 고딕체 둘입니다.
Harano Aji — Source Han을 Adobe-Japan1로 다시 짠 글꼴
Harano Aji는 Source Han(Source Han Serif와 Source Han Sans)의 글리프에 Adobe-Japan1의 CID를 다시 매긴 글꼴입니다. 동봉된 README가 그 한 문장을 명시합니다. Adobe-Identity-0(AI0)의 CID를 Adobe-Japan1(AJ1)의 CID로 바꾸어 얻은 글꼴이라고요. 여기가 핵심으로, 이는 “겉모습을 닮게 만든 다른 글꼴”이 아니라 번호를 다시 매긴 것입니다. (u)pLaTeX와 dvipdfmx의 세계는 문자를 CID 번호로 부르므로, Adobe-Japan1로 번호가 매겨져 있지 않으면 기존 워크플로에 올라타지 못합니다. Noto CJK를 그대로 기본값으로 삼을 수 없었던 이유가 바로 여기 있습니다.
작자는 호소다 마사미치입니다. README에 따르면 전체 14서체——명조와 고딕 각각 7웨이트이며, TeX Live에서는 두 패키지로 나뉘어 있습니다. haranoaji에는 프리셋에서 쓰이는 주요 7서체(명조의 Light·Regular·Bold, 고딕의 Regular·Medium·Bold·Heavy)가, haranoaji-extra에는 나머지 7서체(명조의 ExtraLight·Medium·SemiBold·Heavy, 고딕의 ExtraLight·Light·Normal)가 들어갑니다. 두 디렉터리를 ls 해 보면 이 분할이 그대로 파일로 늘어서 있는 것이 보입니다.
$ ls texmf-dist/fonts/opentype/public/haranoaji/
HaranoAjiGothic-Bold.otf HaranoAjiGothic-Heavy.otf
HaranoAjiGothic-Medium.otf HaranoAjiGothic-Regular.otf
HaranoAjiMincho-Bold.otf HaranoAjiMincho-Light.otf
HaranoAjiMincho-Regular.otf
$ ls texmf-dist/fonts/opentype/public/haranoaji-extra/
HaranoAjiGothic-ExtraLight.otf HaranoAjiGothic-Light.otf
HaranoAjiGothic-Normal.otf HaranoAjiMincho-ExtraLight.otf
HaranoAjiMincho-Heavy.otf HaranoAjiMincho-Medium.otf
HaranoAjiMincho-SemiBold.otf본문 명조에는 HaranoAjiMincho-Regular, 고딕에는 HaranoAjiGothic-Medium이 기본으로 배정됩니다. Harano Aji를 고르는 실무적 이유는 품질만이 아닙니다. 같은 문장을 IPAex로 조판했을 때와 PDF 크기가 자릿수부터 달라집니다. 일곱 글자짜리 문서로 비교하면 Harano Aji의 PDF가 5,617바이트, IPAex의 PDF가 155,880바이트였습니다. pdffonts는 각각을 CID Type 0C(Harano Aji, OpenType/CFF)와 CID TrueType(IPAex)으로 보고합니다. 원본 글꼴 파일은 6.4 MB와 7.8 MB로 거의 같은 크기이므로, 차이는 서체의 내용이 아니라 형식과 서브셋 효율에서 옵니다.
LuaLaTeX와 XeLaTeX에서의 지정 — luatexja-preset과 zxjafont
Unicode 엔진에서는 LuaLaTeX라면 LuaTeX-ja(luatexja)의 luatexja-preset, XeLaTeX라면 zxjafont에 프리셋 이름을 넘기는 것이 가장 빠릅니다. 둘 다 “명조는 이것, 고딕은 저것”이라는 조합을 한 단어로 설정해 줍니다. 프리셋 이름은 거의 공통이며 haranoaji, ipa/ipaex, hiragino-pro/hiragino-pron, noto/noto-otc, sourcehan, ms, yu-win10, morisawa-pr6n, kozuka-pr6n 등이 정의되어 있습니다. 실측에서는 \usepackage[haranoaji]{zxjafont}를 붙인 문서가 XeLaTeX에서 문제없이 통과했고 HaranoAjiMincho-Regular의 서브셋이 임베드되었습니다.
% LuaLaTeX
\documentclass{ltjsarticle}
\usepackage[haranoaji]{luatexja-preset}
% add deluxe for multiple weights of Mincho and Gothic:
% \usepackage[haranoaji,deluxe]{luatexja-preset}
% XeLaTeX
% \documentclass[a4paper]{bxjsarticle}
% \usepackage[haranoaji]{zxjafont}
\begin{document}
本文は明朝体。\textgt{見出しはゴシック体}。
\end{document}deluxe 옵션을 더하면 명조와 고딕의 여러 웨이트를 본문 안에서 구분해 쓸 수 있습니다. 실측에서 \usepackage[haranoaji,deluxe]{luatexja-preset}의 PDF에는 HaranoAjiMincho-Regular, HaranoAjiMincho-Bold, HaranoAjiGothic-Regular, HaranoAjiGothic-Medium 네 가지가 임베드되었습니다. 또한 ltjsarticle 같은 ltjs* 클래스는 일본어를 라틴 문자에 대해 축소해서 조판합니다. 컴파일 중 나오는 Package luatexja-preset Warning: Japanese fonts will be scaled by 0.924715. 알림이 바로 그것이며, 문제가 아니라 설계대로의 동작입니다.
프리셋에 기대지 않고 임의의 글꼴을 직접 지정하고 싶다면 LuaLaTeX에서 luatexja-fontspec을 읽어들입니다. 쓸 수 있는 명령은 fontspec과 짝을 이루며, 일본어용은 \setmainjfont(명조, 본문), \setsansjfont(고딕), \setmonojfont(등폭), \newjfontfamily이고 일회성이라면 \jfontspec입니다. Scale=나 Path= 같은 옵션 문법도 fontspec과 공통이라 라틴 쪽 지식을 그대로 쓸 수 있습니다. 서체 이름으로도 파일 이름으로도 지정할 수 있으며, 공동 집필에서는 파일 이름(HaranoAjiMincho-Regular.otf)으로 쓰는 편이 확실합니다.
\documentclass{ltjsarticle}
\usepackage{luatexja-fontspec}
% naming files, not family names, keeps it reproducible
\setmainjfont{HaranoAjiMincho-Regular.otf}
\setsansjfont{HaranoAjiGothic-Medium.otf}
% \setmainjfont{Hiragino Mincho ProN} % macOS only
\begin{document}
明朝の本文。\textsf{ゴシックの見出し}。\textbf{太字}。
\end{document}(u)pLaTeX + dvipdfmx에서의 지정 — kanji-config-updmap과 otf 패키지
전통적인 (u)pLaTeX에서는 어떤 글꼴을 임베드할지 정하는 것이 문서가 아니라 시스템 쪽 설정입니다. 조판에 쓰는 일본어 글꼴의 메트릭(글자 폭)은 가상적으로 고정되어 있어 소스에 실제 글꼴 이름이 나타나지 않습니다. 그 설정을 전환하는 것이 TeX Live에 딸린 kanji-config-updmap으로, dvipdfmx가 참조하는 글꼴 맵(updmap.cfg)을 다시 써서 명조와 고딕의 실제 글꼴을 한꺼번에 바꿉니다. 모든 사용자용은 kanji-config-updmap-sys(관리자 권한 필요), 자신만이라면 kanji-config-updmap-user이며 사용자 설정이 우선합니다.
# show the current setting and the candidates found on this system
kanji-config-updmap-sys status
# switch to Harano Aji (the TeX Live default)
sudo kanji-config-updmap-sys haranoaji
# other examples
sudo kanji-config-updmap-sys ipaex
sudo kanji-config-updmap-sys hiragino-pron
# use the JIS X 0213:2004 glyph shapes
sudo kanji-config-updmap-sys --jis2004 haranoaji
# embed nothing, or auto-detect what is installed
sudo kanji-config-updmap-sys nofont
sudo kanji-config-updmap-sys autostatus는 현재 설정과 시스템에서 찾은 후보 글꼴을 나열합니다. auto는 사용할 수 있는 상용·무료 글꼴을 자동으로 찾아 임베드 설정으로 만들고, 찾지 못하면 임베드 없음으로 되돌립니다. --jis2004는 JIS X 0213:2004 글리프(이른바 “2004 JIS”)를 선택합니다. 앞서 status 출력에 있던 variant: -04가 바로 이 글리프 선택의 다른 이름입니다. 기계별이 아니라 문서별로 글꼴을 바꾸고 싶다면, 시스템 설정을 건드리는 대신 pxchfon 패키지로 프리앰블에서 지정하는 길도 있습니다.
본문에서 여러 서체와 웨이트를 쓰고 Adobe-Japan1의 넓은 문자 집합에 손을 뻗으려면 齋藤修三郎의 otf 패키지(japanese-otf)를 읽어들입니다(upLaTeX에서는 \usepackage[uplatex]{otf}처럼 엔진을 명시). Adobe-Japan1은 일본어 글꼴의 표준 글리프 집합으로, JIS X 0208에 들어가지 않는 이체자·기호·구자를 포함합니다. 문자를 직접 지정하는 명령이 둘 있어, \UTF{...}는 Unicode 코드 포인트(4~5자리 16진수)를, \CID{...}는 10진수 Adobe-Japan1 CID 번호를 받습니다. 인명의 옛 글자처럼 입력하기 어려운 글자를 코드값으로 확실히 출력할 수 있다는 것이 장점입니다. 같은 기능은 LuaTeX-ja에서도 luatexja-otf로 쓸 수 있습니다.
森\UTF{9DD7}外
\CID{7652}飾区
葛城市、\CID{1481}城駅otf의 옵션도 알아 둡시다. deluxe는 명조 3웨이트, 고딕 3웨이트, 마루 고딕 1웨이트의 총 7서체를 쓸 수 있게 하고, 마루 고딕용으로 \mgfamily / \textmg{...}를 더합니다. expert는 세로쓰기용 약물이나 이체자 같은 추가 글리프를 활성화하고, jis2004는 2004 JIS 글리프를 선택합니다. 여러 웨이트를 실제로 쓰려면 대응하는 실제 글꼴이 kanji-config-updmap 쪽에서 설정되어 있어야 합니다. 참고로 일본어 글꼴의 인코딩은 가로쓰기가 JY3, 세로쓰기가 JT3입니다.
pdffonts로 글꼴이 PDF에 임베드되었는지 확인하기
PDF를 pdffonts에 넘기면 임베드된 글꼴이 한 줄씩 표시됩니다. 볼 열은 세 가지로, emb가 yes면 임베드됨, sub가 yes면 서브셋화(사용한 글자만 뽑아냄)됨, uni는 Unicode로 되짚는 정보의 유무입니다. 여기에 더해 글꼴 이름 앞에 붙는 NWYKMN+ 같은 영문 대문자 6자 접두사가 서브셋의 표식입니다. TeX Live 2024에서 시도한 어느 경로에서도 이 6자는 반드시 나타났습니다.
실측으로 하나 더 확인해 둘 것은 경로가 달라도 결과가 같다는 점입니다. 같은 jlreq 소스를 uplatex → dvipdfmx로 처리한 경우와 lualatex로 직접 처리한 경우 양쪽에서 pdffonts를 보면, 둘 다 HaranoAjiMincho-Regular의 서브셋이 임베드되어 있었습니다. 서브셋화의 효과는 극적이어서, 원본 HaranoAjiMincho-Regular.otf는 6.4 MB이지만 일곱 글자짜리 문서의 PDF는 5,617바이트뿐입니다. 곧 배포용 일본어 PDF가 수 MB로 부풀 걱정은 거의 할 필요가 없다는 뜻입니다.
# same jlreq source, two routes, same embedded font
$ uplatex doc.tex && dvipdfmx doc.dvi && pdffonts doc.pdf
UCCFIG+HaranoAjiMincho-Regular-Identity-H CID Type 0C yes yes
KXFDXT+LMRoman9-Regular Type 1C yes yes
$ lualatex doc.tex && pdffonts doc.pdf
NWYKMN+HaranoAjiMincho-Regular CID Type 0C yes yes
PNHTXY+LMRoman9-Regular CID Type 0C yes yes마지막으로, 이 확인은 반드시 직접 하세요. 일본어 PDF에서 상대가 “글자가 안 나온다”, “깨져 보인다”고 알려 오는 사고는 거의 전부 글꼴이 임베드되지 않은 PDF가 원인입니다. kanji-config-updmap-sys nofont 설정이 남아 있거나 프리앰블 어딘가에 임베드하지 않는 지정이 들어 있으면 pdffonts의 emb 열이 no가 됩니다. 제출 전에 pdffonts를 한 번만 돌려도 이런 종류의 사고를 통째로 피할 수 있습니다.