microtype은 양쪽 정렬 문단을 눈에 띄게 더 아름답게 만드는 패키지입니다. 작성자는 R. Schlicht입니다. 하는 일은 화려하지 않습니다. 구두점을 여백 밖으로 아주 조금 내보내고, 글리프 폭을 퍼센트의 일부만큼 늘이거나 줄입니다. 한눈에는 보이지 않는 조정이지만, 한 페이지 전체로 보면 오른쪽 가장자리가 정돈되고 단어 사이 간격이 고르게 되며 흰 “강”과 넘치는 줄이 줄어듭니다. 보통 \usepackage{microtype} 한 줄이면 충분합니다. 이 페이지에서는 protrusion, expansion, tracking 및 기타 기능, 그리고 엔진마다 사용할 수 있는 기능이 다르다는 핵심을 차례로 살펴봅니다.
microtype이란
TeX의 조판은 원래도 훌륭하지만, microtype은 그 위에 마이크로타이포그래피(micro-typography), 즉 문자 하나와 글자 사이 간격 하나의 수준에서 작용하는 미세한 마감을 더합니다. 이 기능들은 원래 pdfTeX에 도입되었고, 이후 일부가 LuaTeX와 XeTeX로 확산되었습니다. microtype은 이 기능들에 대한 통합 LaTeX 인터페이스로, 서양어(라틴 문자) 텍스트의 외관을 끌어올립니다.
제공하는 주요 기능은 다음과 같습니다. 처음 두 가지인 protrusion과 font expansion이 중심이며, 안전하게 동작한다고 판단되면 기본적으로 켜집니다. 나머지는 필요에 따라 옵션으로 활성화합니다.
- 문자 protrusion(margin kerning): 구두점과 일부 글자를 여백 밖으로 조금 밀어내 텍스트 가장자리가 시각적으로 곧아 보이게 합니다.
- Font expansion: 각 줄의 글리프 폭을 아주 조금 늘이거나 줄여 단어 사이 간격의 변화를 줄이고 문단의 “색”을 고르게 합니다.
- Tracking / letterspacing(
\textls): 단어나 범위의 글자 사이를 균일하게 벌립니다. 대문자와 스몰캡에 적합합니다. - 합자 비활성화(
\DisableLigatures): 글꼴별로 합자를 끕니다. 타자체 등에 유용합니다. - 단어 사이 간격과 추가 kerning 조정:
spacing/kerning옵션(pdfTeX 전용).
이 기능들은 서양어(라틴 문자) 텍스트를 위한 마감이라는 점에 유의하세요. 일본어에는 행 머리/행 끝 금칙, 일본어와 서양어 문자 사이 간격 등 protrusion과 expansion과는 별개의 조판 모델이 있으며, luatexja 같은 도구가 맡습니다. 합자와 kerning 같은 더 기본적인 서양어 자동 처리는 자매 페이지 “Writing Western text”에서 다룹니다.
문자 protrusion
Protrusion(margin kerning이라고도 함)은 줄의 시작이나 끝에 있는 문자를 여백 밖으로 아주 조금 내보내는 기능입니다. 이유는 시각적 착시에 있습니다. 마침표, 쉼표, 하이픈, 또는 o, A, v처럼 둥글거나 기울어진 윤곽을 가진 글자를 텍스트 가장자리에 정확히 맞추면, 그 글리프의 좌우 여백 때문에 가장자리가 안쪽으로 꺼져 보입니다. 이런 글자를 조금 밖으로 내보내면 텍스트 블록의 끝이 시각적으로 곧게 맞아 보입니다.
행 끝의 구두점을 완전히 여백으로 밀어 넣는 방식은 hanging punctuation으로 잘 알려져 있습니다. microtype의 protrusion은 이를 문자별로 적절한 양만큼, 더 절제해서 적용한다고 생각하면 이해하기 쉽습니다. 효과는 구두점과 면적이 작거나 윤곽이 평평하지 않은 글자에서 특히 잘 보입니다. Protrusion은 세 주요 엔진, 즉 pdfTeX, LuaTeX, XeTeX 모두에서 사용할 수 있습니다.
Protrusion은 흐르는 문단에서는 자연스럽게 작용하지만, itemize나 tabular 내부처럼 TeX가 “여백”으로 보지 않는 곳에서는 작동하지 않습니다. 그런 곳에서 첫 글리프나 마지막 글리프를 protrude하고 싶다면 microtype이 제공하는 \leftprotrusion / \rightprotrusion을 사용합니다(이 정밀 제어에는 e-TeX 확장이 필요합니다).
글꼴 신축(font expansion)
Font expansion은 각 줄의 글리프를 가로 방향으로 아주 조금(보통 퍼센트의 일부에서 몇 퍼센트까지) 늘이거나 줄여 줄폭을 맞추는 기능입니다. 양쪽 정렬에서는 보통 줄폭을 맞추기 위해 단어 사이 glue(interword glue)를 늘이고 줄입니다. 글리프 폭 자체가 그 일을 조금 분담하면 단어 사이 간격의 변화가 작아도 됩니다. 결과적으로 줄마다 단어 간격의 편차가 줄고 문단 전체의 “색”이 더 균일해집니다.
실용적인 효과로는 overfull / underfull box(넘침과 듬성한 줄 경고)가 줄어든다는 점이 있습니다. 조판이 한 단계 더 매끄러워집니다. 신축량의 상한은 stretch / shrink 옵션으로, 간격은 step으로 조정할 수 있지만 기본값으로 시작해도 대체로 문제없습니다.
중요한 점은 expansion은 pdfTeX와 LuaTeX에서만 사용할 수 있고 XeTeX에서는 사용할 수 없다는 것입니다. XeTeX에서 microtype을 불러오면 protrusion과 tracking은 작동하지만 expansion은 자동으로 꺼집니다(패키지가 안전하게 동작하는 기능만 켜므로 오류는 나지 않습니다). expansion까지 포함한 전체 마감을 원한다면 LuaTeX로 옮기는 것이 맞습니다.
Tracking과 letterspacing
Tracking(letterspacing)은 글자 사이 간격을 균일하게 넓히는 조정입니다. microtype의 tracking은 글자 사이에 빈칸을 삽입하는 것이 아니라 글꼴 본래의 글리프 간격을 확장하는 방식으로 구현되므로 하이프네이션을 깨지 않습니다. 단어 중간에 직접 \kern을 흩뿌리는 고전적인 방식의 약점(그 단어가 줄바꿈되지 않음)을 피할 수 있습니다.
그때그때 letterspacing을 하려면 \textls{...}를 씁니다. tracking 옵션의 유무와 관계없이 사용할 수 있고, 수식 모드에서도 동작합니다. 벌리는 양은 천분율(기본값은 약 100/1000)이며 \textls[200]{...}처럼 선택 인수로 지정할 수 있습니다. 뒤따르는 연속 문자 전체에 적용하려면 \lsstyle을 써서 그룹 끝까지 letterspacing을 켭니다. 제목처럼 앞뒤에 추가 kerning을 붙이고 싶지 않은 경우에는 별표형 \textls*{...}가 편리합니다.
글꼴 집합 전체에 설정하려면 프리앰블에 \SetTracking{encoding=*, shape=sc}{40}처럼 씁니다(이 예는 스몰캡을 40/1000만큼 벌림). 주의할 점은 소문자의 letterspacing은 전통적으로 아름답지 않다고 여겨진다는 것입니다. microtype 매뉴얼도 원칙적으로 대문자나 스몰캡만 letterspacing해야 한다고 말합니다. Tracking은 pdfTeX, LuaTeX, XeTeX에서 사용할 수 있습니다.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{microtype}
% space out small caps by 40/1000 wherever they appear
\SetTracking{encoding = *, shape = sc}{40}
\begin{document}
\textsc{Small Caps}, and ad-hoc \textls[200]{LETTERSPACED} capitals.
\end{document}기타 기능과 설정
이 밖에도 microtype은 합자, 추가 kerning, 단어 사이 간격을 제어할 수 있습니다. 합자를 비활성화하려면 \DisableLigatures를 씁니다. 예를 들어 \DisableLigatures{encoding = T1, family = tt*}는 T1 인코딩의 타자체 계열에서 합자를 끕니다. 코드를 보여 줄 때 --가 en dash로 합쳐지지 않게 하고 싶은 경우 등에 유용합니다. 다만 글꼴의 모든 합자를 비활성화하면 그 글꼴의 kerning도 함께 꺼진다는 점에 주의하세요. 선택 인수에 [?,!]처럼 합자를 시작하는 문자를 나열하면 선택한 합자만 비활성화할 수 있습니다. 이 명령은 프리앰블에서 한 번만 사용할 수 있습니다.
kerning과 spacing 옵션은 각각 추가 kerning과 단어 사이 간격 미세 조정을 켜지만, 이들은 pdfTeX 전용입니다(LuaTeX나 XeTeX에서는 효과가 없습니다). 둘 다 기본값은 꺼짐이므로, 필요할 때만 \usepackage[kerning=true,spacing=true]{microtype}처럼 명시적으로 켭니다.
로드한 뒤 설정을 바꾸려면 \microtypesetup{...}을 씁니다. 예를 들어 목차를 만드는 동안에만 protrusion을 끄려면 앞뒤를 \microtypesetup{protrusion=false}와 \microtypesetup{protrusion=true}로 감쌉니다. 문서 일부에만 다른 설정을 주고 싶다면 \microtypecontext{...}(또는 microtypecontext 환경)으로 문맥을 전환합니다. draft 옵션을 넘기면 미세 조판을 한꺼번에 비활성화하므로 전후 비교에 편리합니다.
엔진별 지원
어떤 기능을 사용할 수 있는지는 TeX 엔진에 따라 다릅니다. microtype은 읽어 들인 엔진에서 안전하게 동작하는 기능만 자동으로 켜므로, 옵션 없이 불러와도 오류가 나지는 않습니다. 그래도 무엇이 적용되고 무엇이 적용되지 않는지 알아두면 도움이 됩니다. 핵심은 두 가지입니다. XeTeX에서는 expansion을 사용할 수 없고, 단어 사이 간격과 추가 kerning은 pdfTeX 전용입니다.
| 기능 | pdfTeX | LuaTeX | XeTeX | |
|---|---|---|---|---|
protrusion | Protrusion | 예 | 예 | 예 |
expansion | Font expansion | 예 | 예 | 아니요 |
tracking | Tracking(letterspacing) | 예 | 예 | 예 |
ligatures | 합자 비활성화 | 예 | 예 | 아니요 |
kerning | 추가 kerning | 예 | 아니요 | 아니요 |
spacing | 단어 사이 간격 | 예 | 아니요 | 아니요 |
정리하면 가장 기능이 많은 것은 pdfTeX(protrusion + expansion + tracking + kerning + spacing)이고, 그다음은 LuaTeX(protrusion + expansion + tracking, 단 kerning/spacing은 불가)이며, XeTeX는 protrusion과 tracking만 제공합니다(expansion 불가).
사용법과 예시
기본은 \usepackage{microtype} 한 줄입니다. 이것으로 protrusion과 expansion(엔진이 지원하는 경우)이 기본으로 켜지고, 대부분의 문서는 의미 있게 좋아집니다. microtype은 안정적이고 부작용이 거의 없어 추가해서 곤란한 일은 드뭅니다. 서양어를 본격적으로 조판한다면 사실상의 표준, 거의 필수적인 품질 향상이라고 생각해도 좋습니다. 일반적으로 fontenc(pdfTeX 계열에서는 [T1])와 함께 씁니다.
다음은 조금 더 들어간 프리앰블 예입니다. protrusion과 expansion을 명시적으로 활성화하고(activate), \SetTracking으로 스몰캡의 자간을 가볍게 벌리며, 코드 표시용 타자체 계열에서만 합자를 끕니다. 주석을 따라가면 각 옵션의 역할을 알 수 있습니다.
\documentclass{article}
\usepackage[T1]{fontenc}
% protrusion + expansion explicitly on; "final" forces them in draft mode too
\usepackage[activate={true,nocompatibility},final]{microtype}
% letterspace small caps a little (40/1000)
\SetTracking{encoding = *, shape = sc}{40}
% in code, keep "--" as two hyphens (also turns off kerning for this font)
\DisableLigatures{encoding = T1, family = tt*}
\begin{document}
Justified paragraphs look more even, \textsc{small caps} are gently
letterspaced, and \texttt{a--b} stays as two hyphens in code.
\end{document}미세 조정은 절제되어 있어 한눈에 보이지 않을 수도 있습니다. 하지만 페이지를 넘기다 보면 오른쪽 가장자리가 정돈되고 단어 사이 간격이 차분해지며 하이프네이션과 넘침이 줄어든 것을 알게 됩니다. 마무리 한 줄로서 microtype은 기억해 둘 가치가 있습니다.