XeTeX는 UTF-8을 직접 읽고 시스템에 이미 설치된 글꼴을 사용하는 TeX 엔진입니다. TFM 또는 맵 파일 설정 없이 단순히 fontspec 패키지를 통해 글꼴 이름을 지정하면 OpenType 글꼴이 작동합니다. Jonathan Kew가 작성했으며 일반적으로 xelatex로 호출합니다.
XeTeX가 무엇인가요?
기존 TeX 및 pdfTeX에서 글꼴을 사용한다는 것은 TFM(TeX Font Metrics) 치수 파일을 준비하고 이를 .map 파일을 통해 실제 글꼴에 매핑하는 것을 의미했습니다. XeTeX는 이러한 잡일을 제거합니다. 운영 체제가 알고 있는 글꼴(OpenType / TrueType 및 macOS의 AAT)에 이름을 지정하고 직접 사용할 수 있습니다. 입력은 기본적으로 UTF-8로 해석되므로 일본어, 그리스어 또는 악센트 부호가 있는 문자를 리터럴 문자로 쓸 수 있습니다.
Jonathan Kew는 원래 SIL International용으로 작성했으며 당시 Mac 조판 기술인 AAT(Apple Advanced Typography)를 기반으로 구축되었습니다. 첫 번째 릴리스는 2004년 4월 Mac OS X 전용으로 출시되었으며 나중에 Windows 및 Linux에서도 실행되는 크로스 플랫폼 엔진이 되었습니다. 내부적으로는 e-TeX 확장 세트를 포함하므로 최신 LaTeX가 가정하는 기능이 모두 존재합니다.
이름의 Xe는 TeX의 마지막 X(그리스어 χ)에서 재생됩니다. 이는 "TeX의 반대"에 대한 말장난입니다. 영어에서는 발음이 다양하지만 비공식적으로 "zee-tech" 또는 "zi-tech"로 읽습니다.
최소한의 예
다음은 xelatex로 컴파일되는 가장 작은 문서입니다. fontspec를 로드하고 \setmainfont로 본문 글꼴을 설정하여 시스템이 알고 있는 대로 글꼴 이름을 지정합니다. Latin Modern 또는 TeX Gyre와 같은 번들 글꼴은 추가 설치 없이 작동하지만 Hiragino Mincho ProN와 같은 OS 글꼴은 동일한 방식으로 이름이 지정됩니다.
\documentclass{article}
\usepackage{fontspec}
\setmainfont{TeX Gyre Termes}
\begin{document}
Hello, \XeTeX! こんにちは、世界。
\[ E = mc^2 \]
\end{document}핵심은 inputenc 또는 fontenc를 로드하지 않는다는 것입니다. UTF-8 입력 및 Unicode 글꼴이 기준이므로 pdfLaTeX에 필요한 문자 인코딩 주문은 간단히 사라집니다. 단일 xelatex document.tex로 컴파일합니다(상호 참조가 있는 경우 두 번).
글꼴 — fontspec가 별입니다
실제로 fontspec 패키지를 통해 XeTeX의 글꼴 성능을 얻을 수 있습니다. 아래와 같이 본문, 산세리프 및 고정 폭 글꼴을 설정하고 특정 목적에 맞게 새 글꼴 모음을 생성할 수도 있습니다.
\usepackage{fontspec}
\setmainfont{TeX Gyre Pagella}
\setsansfont{TeX Gyre Heros}
\setmonofont{TeX Gyre Cursor}
\newfontfamily\headingfont{TeX Gyre Adventor}fontspec는 또한 글꼴에 구운 OpenType 기능을 노출합니다. 옵션을 통해 역사적인 합자, 작은 대문자 또는 구식 숫자 등을 전환할 수 있습니다. 글꼴이 제공하지 않는 기능은 아무런 효과가 없습니다.
\setmainfont{TeX Gyre Pagella}[
Ligatures = {Common, Historic},
Numbers = OldStyle,
SmallCapsFeatures = {Letters = SmallCaps},
]
% 生の OpenType / Graphite タグを直接指定:
\newfontfamily\swashfont{EB Garamond}[RawFeature = {+swsh}]더 미세한 제어를 위해 Renderer(HarfBuzz / AAT / Graphite 셰이퍼 선택) 및 RawFeature(글꼴의 원시 기능 태그를 직접 전달)와 같은 옵션이 있습니다. 문서 중간에 입력 인코딩을 전환하기 위해 엔진은 내장 \XeTeXinputencoding를 제공합니다. 그리고 Unicode 수학 글꼴(STIX Two Math, Latin Modern Math 등)을 원할 경우 XeTeX를 unicode-math 패키지와 페어링합니다.
파이프라인 — XDV에서 PDF까지
pdfTeX가 PDF를 직접 작성하는 경우 XeTeX는 두 단계로 작동합니다. 엔진은 먼저 중간 XDV(확장 DVI; XeTeX 장치 독립적) 파일을 내보냅니다. 이 파일은 번들로 제공되는 xdvipdfmx 드라이버가 PDF로 변환됩니다. 사용자 측에서는 xelatex를 한 번 실행하면 모든 작업이 수행되지만 내부적으로는 이 두 단계가 순서대로 실행됩니다(버전 0.997부터 xdvipdfmx가 모든 플랫폼의 기본 드라이버였습니다).
이 디자인은 \special, 드라이버 종속 옵션 및 그래픽 포함에 중요합니다. xdvipdfmx는 실제로 PDF를 생성하기 때문에 graphicx와 같은 패키지에 명시적인 드라이버가 필요할 때 xetex(예: xdvipdfmx)를 가리킵니다. 대부분의 패키지는 XeTeX를 자동 감지하므로 이에 대해 생각할 필요가 거의 없습니다.
디버깅할 때 이 2단계 파이프라인을 기억하세요. xelatex를 입력했더라도 이미지, 글꼴 포함 또는 PDF 북마크 관련 오류는 종종 로그에 xdvipdfmx 메시지로 끝나는 경우가 있습니다. 최종 드라이버 라인에서 첫 번째 TeX 오류 라인을 분리하여 .log를 읽습니다. 문제가 TeX 구문인지 아니면 드라이버가 그래픽이나 글꼴을 처리하지 못하는지 신속하게 알려줍니다.
다국어 및 복잡한 스크립트
XeTeX가 널리 사용되는 한 가지 이유는 오른쪽에서 왼쪽으로(RTL) 및 복잡한 스크립트에 대한 강점 때문입니다. 최신 XeTeX는 HarfBuzz(2013년 버전 0.9999에서 채택되어 이전 ICU LayoutEngine을 대체)를 사용하여 문자 모양을 형성하므로 아랍어 결합 및 합자가 풍부한 스크립트를 올바르게 설정합니다.
언어를 전환하려면 XeTeX / LuaTeX 시대(클래식 babel 대체)의 polyglossia 패키지를 사용하세요. RTL 조판은 bidi 패키지에 의해 처리되며 polyglossia는 아랍어, 히브리어 등을 요청할 때 자동으로 bidi를 로드합니다. 중국어, 한국어, 일본어(CJK)는 xeCJK로 처리됩니다. 하지만 특히 일본어의 경우 많은 사람들이 세로 쓰기 및 일본어 조판의 미세한 규칙을 위해 여전히 LuaTeX-ja(luatexja) 또는 upLaTeX를 선호합니다.
XeTeX 대 LuaTeX
XeTeX와 LuaTeX는 Unicode 입력과 시스템 글꼴이라는 동일한 최신 기반을 공유하지만 기질이 다릅니다. XeTeX는 더 간단하고 빠릅니다: "저는 Unicode와 함께 OS 글꼴을 사용하고 싶습니다"에 적합하며 수년간의 사용으로 인해 안정적이고 성숙되었습니다. 대조적으로 LuaTeX는 조판 엔진에 Lua 언어를 내장하고 있어 낮은 수준의 후크를 통해 해당 동작을 아주 자세하게 프로그래밍할 수 있습니다.
반면에 XeTeX는 Lua를 실행할 수 없으며 낮은 수준의 후크가 적습니다. 새로운 글꼴 기술과 조판 기계의 개발은 LuaTeX 측에 모이는 경향이 있습니다. 대략적인 작업 분업: 용이성과 안정성을 위한 XeTeX, 프로그래밍 가능성과 수명을 위한 LuaTeX.
| 측면 | XeTeX | LuaTeX |
|---|---|---|
Unicode 入力 | 예(UTF-8 기본값) | 예(UTF-8 기본값) |
システムフォント | fontspec를 통해 직접 | fontspec를 통해 직접 |
シェーピング | HarfBuzz / AAT / 그래파이트 | HarfBuzz(luaotfload) |
PDF 化 | XDV → xdvipdfmx (2단계) | 직접 출력 |
スクリプト言語 | 없음 | 임베디드 Lua |
性格 | 단순함, 안정적, 성숙함 | 프로그래밍 가능, 진화 중 |
XeTeX에 도달하는 시기
- 시스템에 이미 있는 글꼴을 사용하세요. OpenType / TrueType 글꼴 이름을 지정하면 완료됩니다.
- Unicode를 문자 그대로 씁니다. UTF-8 입력이 기본값입니다. 인코딩 설정이 필요하지 않습니다.
- 다국어 설정 / RTL 텍스트. polyglossia + bidi는 아랍어, 히브리어 등에 강력하게 적용됩니다.
- 빠르고 안정적으로 진행하세요. 작은 구성과 길고 안정적인 실적을 자랑합니다.
- Lua 수준의 사용자 정의가 필요한 경우 LuaTeX를 고려하고, 정확한 일본어 조판을 위해서는 upLaTeX / luatexja를 고려하십시오.
더욱 안전한 글꼴 선택 작업 흐름
XeLaTeX 오류는 일반적으로 두 가지 위치 중 하나에서 발생합니다. 글꼴 이름이 OS에 표시되지 않거나 일본어 조판 기대치가 xeCJK가 처리해야 하는 수준을 초과합니다. 먼저 Latin Modern 또는 TeX Gyre와 같은 번들 글꼴로 최소 문서를 컴파일한 다음 한 번에 하나의 글꼴을 교체합니다. 일본어 세로 쓰기, 미세한 금칙 동작 또는 게시자가 제공하는 일본어 수업이 필요한 경우 upLaTeX 또는 LuaLaTeX + LuaTeX-ja를 일찍 테스트하세요.
font not found오류의 경우 TeX 자체보다 먼저 OS 글꼴 이름 확인이 의심됩니다.- PDF 전용 제출의 경우 항상 글꼴 포함을 확인하세요.
- 협업을 위해 모든 OS에 동일한 글꼴이 있다고 가정하지 마세요. TeX Gyre와 같은 번들 글꼴을 고려해보세요.