summaryrefslogtreecommitdiff
path: root/macros/xetex/generic/xetexko/xetexko-doc.tex
blob: 4fd1752234849dee04ea6239e7b17f961359eec9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
%% !tex program = xelatex
%%
%% xetexko-doc.tex
%%
%% This file is in the public domain

\documentclass[a4paper]{article}
\usepackage[hmargin=3.8cm]{geometry}
\usepackage[hangul]{xetexko}
\defaultfontfeatures+{Script=Hangul, Language=Korean}
\setmainhangulfont{Noto Serif CJK KR}[
  UprightFont=* Light, BoldFont=* Bold,
]
\setsanshangulfont{Noto Sans CJK KR}[
  UprightFont=* DemiLight,
]
\setmathhangulfont{Noto Sans CJK KR}[
  SizeFeatures={
    {Size=-6,  Font=* Medium},
    {Size=6-9, Font=*},
    {Size=9-,  Font=* DemiLight},
  },
]
\usepackage{xetexko-hanging, hologo, xcolor, ulem}
\usepackage[bookmarksnumbered,hidelinks]{hyperref}

\edef\verbatim{\unexpanded\expandafter{\verbatim
  \linespread{1.1}\selectfont }}
\def\logoko{\textsf{k}\kern-.2ex\textit{o}}
\def\XeTeX{\hologo{XeTeX}}
\def\xetexko{\XeTeX\kern-.1ex -\logoko}
\def\kotex{\logoko\kern-.1ex .\kern-.1667em \hologo{TeX}}
\pdfstringdefDisableCommands{\def\xetexko{XeTeX-ko}}
\renewcommand*\descriptionlabel[1]{\hspace\labelsep\ttfamily\bfseries
  \color{blue!50!black}#1}
\def\grayhrule{{\color{white!80!black}\hrule height2pt}}
\def\grayvrule{{\color{white!80!black}\vrule width 2pt}}
\newenvironment{plaintex}
  {\setbox0=\vbox\bgroup\hsize=\dimexpr\textwidth-12pt\relax
    \hrule width0pt\kern5pt\par\small
  \noindent}
  {\par \vskip-\lastskip\kern5pt\hrule width0pt\egroup \par\medskip\par
    \dimen0=\dimexpr\pagegoal-\pagetotal\relax
    \ifdim\dimen0<2\baselineskip\relax \dimen0\maxdimen \fi
    \ifdim\ht0<\dimen0
      \hbox{\grayvrule\kern10pt\box0}%
    \else
      \setbox2=\vsplit0 to\dimen0
      \lineskip0pt
      \ifvoid2 \else\hbox{\grayvrule\kern10pt\box2}\fi
      \ifvoid0 \else\hbox{\grayvrule\kern10pt\box0}\fi
    \fi \par\medskip\par }
\newenvironment{example}
  {\hbox\bgroup\grayvrule
    \vbox\bgroup\hsize\dimexpr\textwidth-4pt\relax
    \grayhrule\kern1em\leftskip1em\rightskip1em
  }{\par\kern1em\grayhrule\egroup\grayvrule\egroup}
\def\cs#1{\texttt{\textbackslash #1}}
\def\hemph#1{\textsf{\bfseries #1}}
\def\hparen#1{{\small\hangulparens(#1)}}
\def\hparens#1{\leavevmode\unskip---{\small #1}---\ignorespaces}
\def\keyword#1{\leavevmode\marginpar{\hfuzz\maxdimen\footnotesize\cs{#1}}}

\begin{document}
\title{\xetexko\ 간단 매뉴얼}
\author{Dohyun Kim \normalsize <\texttt{nomos at ktug org}> \and
  \normalsize <\url{http://github.com/dohyunkim/xetexko}>}
\date{Version 2.23\quad 2020/02/17}
\maketitle

\begin{quote}\small
  For a summary introduction in English,
  please see \verb+README+ file in this package.

  \begin{itemize}\itemsep=0pt\linespread{1.2}\selectfont
    \item[v2.0]---
    \item \hyperref[sec:loading]
      {플레인텍에서 xetexko.tex이 아니라 xetexko.sty를 불러야 한다.}
    \item \hyperref[sec:symbolfont]
      {CJK 기호문자를 \hparen{한자가 아니라} 한글 글꼴에서 찾는 것이
      기본값이 되었다.}
    \item \hyperref[sec:fontopts]
      {\texttt{interpunctskern} 글꼴 옵션을 없애고 \texttt{quoteraise}를
      추가했다.}
    \item[v2.2]---
    \item \hyperref[sec:fontopts]
      {글꼴 옵션 \texttt{CharRaise}를 추가했다.}
    \item \hyperref[sec:fontcmds]
      {\cs{fallbackhanjafont} 명령을 인식한다.}
    \item \hyperref[sec:etccmds]
      {\cs{everyhangul}, \cs{everyhanja} 명령이 추가되었다.}
    \item \hyperref[sec:symbolfont]
      {하이픈 문자를 \hparen{직전 글꼴이 아니라} 라틴 글꼴에서 찾는
      것이 기본값이 되었다.}
    \item[v2.4]---
    \item Variation Selector를 이용한 한자 변형 글리프 접근을 허용한다.
    \item[v2.7]---
    \item \hyperref[sec:fontcmds]
      {main/sans hangul/hanja 글꼴에는 디폴트 옵션
      \texttt{Ligatures=TeX}이 주어진다.}
    \item \hyperref[sec:fontopts]
      {\cs{defaulthangulfontfeatures}와 \cs{defaulthanjafontfeatures}
      명령이 생겼다.}
    \item[v2.10]---
    \item 패키지 옵션 \texttt{[unfonts]}를 더는 지원하지 않는다. 이 옵션을
      사용한 기존 문서는 기본 글꼴인 은글꼴 트루타입으로 식자될 것이다.
    \item[v2.13]---
    \item \hyperref[sec:verttype]
      {\texttt{horizontal} 환경이 추가되었다.}
    \item[v2.23]---
    \item \hyperref[sec:fontcmds]
      {디폴트 한글 폰트가 나눔글꼴에서 은글꼴로 변경되었다.}

  \end{itemize}
\end{quote}

\smallskip

\section{입력 인코딩}
입력은 원칙적으로 UTF-8으로 한다.
BOM (Byte Order Mark)은 있어도 좋고 없어도 좋다.
EUC-KR이나 CP949 입력도 지원하는데, 다음과 같은 선언이 있으면 된다.
\begin{verbatim}
  \XeTeXinputencoding="korean"
  \XeTeXdefaultencoding="korean"
\end{verbatim}

\section{\XeTeX\ 자체 기능}
\XeTeX 은 자체적으로 유니코드를 잘 지원하므로 \xetexko 를 사용하지
않더라도 한글을 찍는 데 문제가 없다.
\begin{verbatim}
  \usepackage{fontspec}
  \setmainfont{UnBatang}
  \setsansfont{UnDotum}
  \setmonofont{UnTaza}
  \XeTeXlinebreaklocale="ko"
  \XeTeXlinebreakpenalty=50
  \XeTeXlinebreakskip=0pt plus.1ex minus.05ex
\end{verbatim}
하지만 이렇게 사용하면 영문자와 한글이 같은 글꼴로 식자될 뿐만 아니라,
한글 사이 자간이나 영문자와 한글 사이 간격 따위의 \xetexko 가 제공하는
기능을 포기해야 할 것이다.

\section{\xetexko\ 부르기}\label{sec:loading}
\xetexko\ 로드하기: \cs{usepackage\{xetexko\}} 혹은 \cs{usepackage\{kotex\}}.
이 명령으로 fontspec 패키지도 함께 불러들인다.
fontspec에 옵션을 주려면 \xetexko를 부르기 전에 fontspec을 따로 로드하면 된다.

\begin{plaintex}
플레인텍이라면 \verb|\input xetexko.sty| 혹은 \verb|\input kotex.sty|.
\end{plaintex}

패키지 옵션:
\begin{description}\hangulquotes
\item[ hangul ] `제~1~장' `표' `차례' 등 한글 표제를 이용한다.
  절 제목 이하에는 한글 표제가 붙지 않고 숫자로만 표현된다.
  한글이 주된 언어라고 인식하여 줄간격 조정도 수행한다.
\item[ hanja ]  `第~1~章' `表' `目次' 등 한자 표제를 이용한다.
  절 제목 이하에는 한자 표제가 붙지 않고 숫자로만 표현된다.
  한글이 주된 언어라고 인식하여 줄간격 조정도 수행한다.
\end{description}


\section{글꼴 명령}\label{sec:fontcmds}
\begin{verbatim}
  \setmainfont      {Linux Libertine}
  \setmainhangulfont{NanumMyeongjo}
  \setmainhanjafont {UnBatang}
\end{verbatim}
각 명령의 의미는 이름이 뜻하는 그대로이며, fontspec 매뉴얼에 따라
설정한다.  마찬가지로 다음 명령들도 제공한다.
\begin{verbatim}
  \setsansfont \setsanshangulfont \setsanshanjafont
  \setmonofont \setmonohangulfont \setmonohanjafont
\end{verbatim}
main/sans hangul/hanja 폰트에는 따로 \verb|Ligatures=TeX| 옵션을 지시하지
않더라도 자동으로 주어진다.

한글폰트를 따로 지정하지 않으면 영문폰트가 한글에도 사용된다.
한자폰트를 따로 지정하지 않으면 한글폰트가 한자에도 적용된다.
\LaTeX 에서는 영문폰트에 한글·한자 글리프가 없고 한글·한자 폰트도 따로
지시하지 않았다면 \hemph{은바탕/은돋움 트루타입}을 한글·한자 글꼴의 기본값으로
사용한다.

\begin{plaintex}
플레인텍이라면 다음처럼 한다.
\begin{verbatim}
    \font\tenrm="[lmroman10-regular]:mapping=tex-text" at 10pt
    \hangulfont="[UnBatang]:mapping=tex-text" at 10pt
    \hanjafont ="Naver Dictionary:mapping=tex-text" at 10pt
\end{verbatim}
\end{plaintex}

\keyword{fallbackhanjafont}%
\cs{fallbackhanjafont}를 정의해두면 \hemph{한자 글꼴에도 없는 한자}를
이 글꼴에서 찾아 식자한다. \verb|\newfontfamily| 명령 등으로 정의한다.

\section{글꼴 명령 (계속)}
\begin{verbatim}
  \hangulfontspec{NanumGothic}[Ligatures=TeX]
  \hanjafontspec {UnGungseo}[Ligatures=TeX]
\end{verbatim}
임시로 사용할 한글·한자 글꼴을 지시한다.
\cs{adhochangulfont}와 \cs{adhochanjafont}는 이들 명령의 다른 이름이다.

\begin{verbatim}
  \newhangulfontfamily\myhangul{NanumGothic}[Ligatures=TeX]
  \newhanjafontfamily \myhanja {UnGungseo}[Ligatures=TeX]
  \newhangulfontface  \myhangul{NanumGothic Bold}[Ligatures=TeX]
  \newhanjafontface   \myhanja {UnDotumBold}[Ligatures=TeX]
\end{verbatim}
fontspec 패키지의 \verb+\setfontfamily+ \verb+\newfontface+ 명령에 해당한다.

\begin{verbatim}
  \addhangulfontfeature{Color=FF0000,InterHangul=-.1em}
  \addhanjafontfeature {Color=00FF00}
\end{verbatim}
fontspec의 \verb+\addfontfeature+ 명령을 구현한 것이다.
fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다.

참고로, 한자와 한글을 같은 글꼴로 식자하고 싶을 때 글꼴 설정을
번거롭게 두 번 할 필요 없이 한글 글꼴만 설정한 뒤 간단히
\keyword{hanjabyhangulfont}%
\cs{hanjabyhangulfont}를 선언하면 된다.%
\footnote{앞 절의 main/sans 글꼴 명령들과 달리 한글 폰트가 자동으로
  한자에도 적용되지 않는다는 말이다. 어쨌든 이미 한자 폰트가 지정돼 있는
  상태이기 때문이다.}


\section{기호 글꼴 명령}\label{sec:symbolfont}
라틴 문자나 CJK 기호를 어떤 폰트로 식자할 것인가를 사용자가 지정할 수 있다.
\begin{verbatim}
  \xetexkofontregime{hangul}[quotes=latin, puncts=prevfont]
\end{verbatim}
모든 라틴 문자와 CJK 기호들을 원칙적으로 한글 폰트로 식자하되,
따옴표는 라틴 폰트로 찍고 마침표 따위는 현재 폰트를 따라간다는 의미이다.
명령의 인자에는 latin, hangul, hanja, prevfont 중 하나가 올 수 있어서
각각 라틴 폰트, 한글 폰트, 한자 폰트로 식자하라는 뜻이며
마지막의 prevfont는 \hemph{현재 활성화된 폰트를 그대로 이어받도록} 지시한다.
현재 폰트가 직전 문자의 폰트가 아닐 수 있음에 주의할 것.

옵션 키의 종류와 의미는 다음과 같으며 각 키 값은 인자의 경우와 같다.
\begin{description}\itemsep0pt\hangulparens
\item[alphs] 라틴 알파벳 및 아래에 해당하지 않는 모든 라틴 문자
\item[nums] 라틴 숫자 \hparen{수식 제외}
\item[parens] 라틴 괄호, 중괄호, 대괄호, 꺽쇠
\item[quotes] accent grave, apostrophy 및 이들의 리거쳐
\item[colons] 라틴 콜론, 세미콜론, endash, emdash
\item[hyphens] 하이픈, 하이픈으로 이루어지는 리거쳐, 슬래시
\item[puncts] 마침표, 물음표, 느낌표, 쉼표
\item[cjksymbols] CJK 구두점, 괄호 및 상징기호
\end{description}
기본값은 다음 명령을 준 것과 동일하다. \hemph{CJK 기호가 한글폰트}로,
\hemph{하이픈은 라틴폰트}로
식자되게 기본값이 변경되었음에 유의할 것.
\begin{verbatim}
  \xetexkofontregime {latin}%
    [ puncts=prevfont, colons=prevfont, cjksymbols=hangul ]
\end{verbatim}
\begin{plaintex}
플레인텍에서는 다음 명령을 사용한다. \LaTeX에서도 쓸 수 있다.
\begin{verbatim}
  \latinalphs      \hangulalphs      \hanjaalphs      \prevfontalphs
  \latinnums       \hangulnums       \hanjanums       \prevfontnums
  \latinparens     \hangulparens     \hanjaparens     \prevfontparens
  \latinquotes     \hangulquotes     \hanjaquotes     \prevfontquotes
  \latinhyphens    \hangulhyphens    \hanjahyphens    \prevfonthyphens
  \latincolons     \hangulcolons     \hanjacolons     \prevfontcolons
  \latinpuncts     \hangulpuncts     \hanjapuncts     \prevfontpuncts
  \latincjksymbols \hangulcjksymbols \hanjacjksymbols \prevfontcjksymbols
\end{verbatim}
다음 명령은 이상의 모든 라틴 문자를 식자할 폰트를 지시한다.
\begin{verbatim}
  \latinmarks      \hangulmarks      \hanjamarks      \prevfontmarks
\end{verbatim}
\end{plaintex}

\section{간격 조정 옵션}\label{sec:fontopts}
\dotemph{고정폭 글꼴을 제외한} 한글·한자 글꼴 명령에 미세 간격 옵션을
쓸 수 있다.
\begin{verbatim}
  \setsanshangulfont{NanumGothic}[InterHangul=-.04em]
\end{verbatim}
이 때 나눔고딕 글꼴에만 한글 마이너스 자간이 작동한다.
허용되는 옵션은 다음과 같으며 기본값은 다른 언급이 없는 한 모두 0pt이다.
\begin{description}\itemsep0pt
\item[hu, InterLatinCJK]
  영문자와 한글 사이 간격을 지시한다.
  영문 괄호와 한글 사이 간격은 그 두 배이다. 기본값 0.05em.
\item[interhchar, InterHangul]
  {\addhangulfontfeature{interhchar=0.3em} 한글 자간을} 지시한다.%
  \footnote{한자 자간 옵션은 제공하지 않는다.
  혹시 한자 자간을 조절하고 싶다면 \cs{XKinterhanjabreak}을 재정의하라.
  참고로 한글 자간을 조절하는 저수준 명령은 \cs{XKinterhangulbreak} 이다.}
\item[charraise, CharRaise]
  글자의 {\addhangulfontfeature{charraise=.5ex}수직 위치}를 조절한다.
  다른 글꼴 관련 효과와 충돌할 수 있어 주의를 요한다.
\item[lowerperiod, PunctRaise]
  \verb+lowerperiod+는 CJK 문자 직후의 마침표를 아래로 끌어내리는
  {\addhangulfontfeature{lowerperiod=.5ex}정도를 지시한다.
  반대로 \verb+PunctRaise+ 옵션은 끌어올리는 정도를 지시한다.}
\item[lowerquestion]
  CJK 문자 직후의 물음표를 아래로 끌어내리는 정도.
\item[lowerexclamation]
  CJK 문자 직후의 느낌표를 아래로 끌어내리는 정도.
\item[lowercomma]
  CJK 문자 직후의 쉼표를 아래로 끌어내리는 정도.
\item[preperiodkern]
  {\addhangulfontfeature{preperiodkern=1ex}CJK 문자 직후의 마침표 앞에
  들어가는 간격.}
\item[postperiodkern]
  {\addhangulfontfeature{postperiodkern=1ex}CJK 문자 직후의 마침표 뒤에
  들어가는 간격.}
\item[prequestionkern]
  CJK 문자 직후의 물음표 앞에 들어가는 간격.
\item[postquestionkern]
  CJK 문자 직후의 물음표 뒤에 들어가는 간격.
\item[preexclamationkern]
  CJK 문자 직후의 느낌표 앞에 들어가는 간격.
\item[postexclamationkern]
  CJK 문자 직후의 느낌표 뒤에 들어가는 간격.
\item[precommakern]
  CJK 문자 직후의 쉼표 앞에 들어가는 간격.
\item[postcommakern]
  CJK 문자 직후의 쉼표 뒤에 들어가는 간격.
\item[quoteraise]
  영문 인용부호\hparens{아스키문자로 입력하는 것}를
  위로 끌어올리는 정도.
\item[quotewidth]
  영문 인용부호의 폭. 기본값은 natural width.
\item[postmathskip]
  수식과 CJK 문자 사이의 간격.  기본값은 위 hu 값의 두 배.
\end{description}

\begin{plaintex}
플레인텍에서는 다음과 같은 방법으로 제어할 수 있다. 기본값은 \LaTeX에서와 같다.
\begin{verbatim}
  \def\xetexkohu{0.05em }
  \def\xetexkointerhchar{-0.04em }
  \def\xetexkocharraise{-0.1ex }
  \def\xetexkolowerperiod{0.15ex }
  \def\xetexkolowerquestion{0.15ex }
  \def\xetexkolowerexclamation{0.15ex }
  \def\xetexkolowercomma{0.15ex }
  \def\xetexkopreperiodkern {-0.1em }
  \def\xetexkopostperiodkern{}
  \def\xetexkoprequestionkern {0.2em }
  \def\xetexkopostquestionkern{0.2em }
  \def\xetexkopreexclamationkern {0.1em }
  \def\xetexkopostexclamationkern{0.1em }
  \def\xetexkoprecommakern {0.1em }
  \def\xetexkopostcommakern{0.1em }
  \def\xetexkoquoteraise{0.1em }
  \def\xetexkoquotewidth{0.33em }
  \def\xetexkopostmathskip{0.2em }
\end{verbatim}
\end{plaintex}

\LaTeX 에서는 한글·한자 글꼴의 기본 옵션을 지정할 수 있다.
\begin{verbatim}
  \defaulthangulfontfeatures {InterLatinCJK=.1em, InterHangul=-.1em}
  \defaulthangulfontfeatures+{InterLatinCJK=.1em, InterHangul=-.1em}
  \defaulthanjafontfeatures  {InterLatinCJK=.1em}
  \defaulthanjafontfeatures +{InterLatinCJK=.1em}
\end{verbatim}
fontspec 패키지의 \cs{defaultfontfeatures}에 상응하는 것이지만,
오직 이 절에서 언급한 옵션들만 인식하며 나머지는 무시된다는 점을 유의하라.


\section{그밖의 명령들}\label{sec:etccmds}
\begin{description}
  \item[\cs{everyhangul}, \cs{everyhanja}]
    한글 또는 한자에 대해 글자마다 지시한 명령을 수행한다. 예컨대
    \verb|\everyhangul{\fbox{#1}}| 명령은 모든
    {\everyhangul{\fbox{#1}}\fboxsep=1pt 한글 주위에 박스}를
    두른다.  다른 글꼴 옵션과 충돌할 수 있으므로
    주의를 요한다.

  \item[\cs{disablekoreanfonts}]
한글폰트를 따로 설정하지 않고 영문 폰트를 따라간다.
이 때  \verb|\setmainfont| 따위가 한글과 한자에도 적용된다.

  \item[\cs{disableautojosa}]
혹시 있을지 모를 예기치 못한 기능간 충돌에 대비하여 자동조사 기능을
끄는 명령을 제공한다.

  \item[\cs{disablejamoautojosa}]
옛한글 자모에 한해서 자동조사 기능을 끈다.
옛한글 자모에 영향을 주는 \verb+Mapping+ 글꼴 옵션을 사용해야 한다면
이 명령을 선언해두어야 정상 작동한다.

  \item[\cs{disablecjksymbolspacing}]
CJK 구두점의 폭을 0.5em으로 강제설정하는 것을 방지한다.
\xetexko는 낡은 고정폭 한글 폰트들을 고려하여 이 기능을 구현하였으나
현대적인 한글 폰트는 이러한 과잉친절이 오히려 성가실 경우가 있다.

  \item[\cs{disablehangulspacing}]
한글조판에 관련된 모든 미세간격을 영(zero)으로 돌린다. 한글 자간도,
영문자와 한글 사이 간격도, 구두점 위치 조정도, 구두점 사이의 간격도
모두 작동하지 않는다. 그러나 CJK 글자 사이의 줄바꿈 허용만은 유지된다.

  \item[\cs{disablehangulspacingandlinebreak}]
위 명령과 마찬가지로 모든 미세간격을 금지할 뿐만 아니라 CJK 글자 사이의
줄바꿈까지도 먹지 않게 한다.
일부 고급 오픈타입 기능을 사용하기 위해서 이 명령이 필요할 때가 있다.
이를테면, 폰트가 지원하는 한글 리거쳐가 동작하지 않을 때 이 명령을
선언하면 문제가 해결된다.\footnote{만약 사용자가
  {\ttfamily\string\XeTeXlinebreaklocale}도 선언했다면
  {\ttfamily\string\XeTeXlinebreaklocale""} 명령도 요구된다.
  이 원시명령은 그룹 내에서 쓰더라도 항상 전역적인 효과를 가짐을 유의하라}
\end{description}

\section{옛한글}

옛한글을 사용하기 위해선 \verb|Script=Hangul| 옵션을 주는 것으로 족하다.
옛한글 식자는 고급 오픈타입 기능을 이용하므로
폰트가 이런 기능을 제공해야만 가능한 일이다.\footnote{%
이런 기능을 제공하는 폰트로는 윈도즈~8에 번들된 맑은고딕이
있으며 공개폰트로는 은바탕, 함초롬~LVT, Source Han Sans (본고딕),
Source Han Serif (본명조), Noto Sans CJK, Noto Serif CJK,
나눔명조옛한글, 나눔바른고딕옛한글, KoPubWorld 바탕, KoPubWorld 돋움 등이 있다.
또한 \textsf{\char"1112\char"119E\char"11AB글}에 번들된 함초롬 글꼴에도
최근 옛한글 지원이 추가되었다.}

\begin{figure}
  \begin{example}
    \sffamily \obeylines\leftskip10em
뎨 가ᄂᆞᆫ 뎌 각시 본 듯도 ᄒᆞᆫ뎌이고.
天텬上상白ᄇᆡᆨ玉옥京경을 엇디ᄒᆞ야 離니別별ᄒᆞ고
ᄒᆡ 다 져믄 날의 눌을 보라 가시ᄂᆞᆫ고
\medbreak
어와 네여이고 내 ᄉᆞ셜 드러보오.
내 얼굴 이 거동이 님 괴얌즉 ᄒᆞᆫ가마ᄂᆞᆫ
엇딘디 날 보시고 네로다 녀기실ᄉᆡ
나도 님을 미더 군 ᄠᅥ디 전혀 업서
이ᄅᆡ야 교ᄐᆡ야 어ᄌᆞ러이 구돗ᄯᅥᆫ디
반기시ᄂᆞᆫ ᄂᆞᆺ비치 녜와 엇디 다ᄅᆞ신고.
  \end{example}
  \caption{옛한글 조판 보기}\label{fig:yethangul}
\end{figure}

\begin{verbatim}
  \setmainhangulfont{Malgun Gothic}[ Script=Hangul ]
\end{verbatim}
\begin{plaintex}
플레인텍이라면,
\begin{verbatim}
  \hangulfont="Malgun Gothic:script=hang" at 10pt
\end{verbatim}
\end{plaintex}

\section{세로쓰기}\label{sec:verttype}

세로쓰기를 위한 글꼴 지정은 다음과 같다.
역시 고급 오픈타입 기능을 이용하는 것이므로 폰트가 이를 지원해야 한다.%
\footnote{폰트의 세로쓰기 글자폭이 가로쓰기와 다르다면
  \cs{verticalem=1.05em} 같은 선언을 미리 해두는 게 좋다.}
\begin{verbatim}
  \setmainhangulfont{Noto Sans CJK KR}[
    Vertical=Alternates, RawFeature=vertical ]
\end{verbatim}
\keyword{verticaltypesetting}%
문서 전체를 세로쓰기할 때 \cs{verticaltypesetting}을 선언하면
면주는 그대로 두고 본문만 세로쓰기한다.\footnote{면주의 글꼴에는
  \texttt{Vertical} 옵션이 없어야 할 것이다.
  면주 글꼴을 따로 지정하는 것은 사용자의 몫이다. }
문서의 일부를 세로쓰기 하려면 \verb|vertical| 환경을 이용한다.
vertical 환경의 인자는 세로쓰기 박스의 세로 길이이다.
보통 그 뒤에  세로쓰기에 사용할 글꼴 명령이 온다.
\begin{figure}
\begin{example}
\hfil\begin{vertical}{16em}
  \sffamily\addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex,
  RawFeature=vertical}
  \hanjabyhangulfont \parindent-1em\leftskip1em
  \noindent 님의 침묵 (The Silent Beloved)
\smallbreak
\hfil\hfil 한 용 운\hfil
\bigbreak
님은 갓슴니다 아아 사랑하는나의님은 갓슴니다\par
푸른산빗을깨치고 단풍나무숩을향하야난 적은길을 거러서 참어떨치고 갓슴니다\par
黃金의꽃가티 굿고빗나든 옛盟誓는 차듸찬띠끌이되야서 한숨의 微風에 나러갓슴니다\par
날카로은 첫〈키쓰〉의追憶은 나의運命의指針을 돌너노코 뒷거름처서 사러젓슴니다\par
\hellipsis\par
아아 님은갓지마는 나는 님을보내지 아니하얏슴니다\par
제곡조를못이기는 사랑의노래는 님의沈默을 휩싸고돔니다\par
\end{vertical}\hfil
\end{example}
\caption{세로쓰기 보기}\label{fig:vertical}
\end{figure}

\begin{verbatim}
  \begin{vertical}{12em}
    \hangulfontspec{Noto Sans CJK KR}[
      Vertical=Alternates, RawFeature=vertical ]
    세로쓰기로 식자할 부분
  \end{vertical}
\end{verbatim}
혹시 세로로 식자되지 않는 라틴문자 부분이 있다면
베이스라인이 한글과 어울리지 않을 수 있다. 이를 교정하려면
\verb|CharRaise| 옵션을 한글 폰트에 준다.\footnote{%
  이 방법이 여의치 않으면 라틴문자 부분을 \cs{vertlatin} 명령으로 감쌀 수도
  있는데, 이때 인자가 박스로 처리되어 그 안에서 줄바꿈이 일어나지 않는다.}
\medbreak
\begin{plaintex}
플레인텍이라면,
\begin{verbatim}
  \vertical{16em}\hangulfont="Noto Sans CJK KR:vertical;+vert"
    세로쓰기로 식자할 부분
  \endvertical
\end{verbatim}
\end{plaintex}
세로쓰기 도중에 문서의 일부를 가로쓰기로 삽입하려면
\verb|horizontal| 환경을 이용한다.
horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한다.
가로쓰기 영역의 폰트 설정은 사용자의 몫이다.

\section{고문헌·일본어·중국어}

띄어쓰기가 없는 옛문헌이나 일본어 단락 따위를 삽입할 때
\verb|japanese| 혹은 \verb|chinese| 환경을 선언하는 것이 좋다.
들여쓰기\footnote {들여쓰기 기본값은 japanese는 1em 이고 chinese는 2em 이다.}
및 자간 조절이 자동으로 이루어지며
사용자가 입력한 불필요한 공백도 없애준다.
\verb|Schinese| 환경은 chinese의 다른 이름이다.
\verb|Tchinese|도 제공하는데 중국어 번체 글꼴을 사용한다면 이 환경을 이용하라.
일반적으로 우리 고문헌 조판에는 japanese 환경이 더 적합하다.

\begin{figure}
  \begin{example}\linespread{1.3}
    \sffamily\japanese
子曰:「學而時習之,不亦說乎?有朋自遠方來,不亦樂乎?人不知而不慍,不亦君子乎?」\par
有子曰:「其爲人也孝弟,而好犯上者,鮮矣!不好犯上,而好作亂者,未之有也!君子務本,本立而道生;孝弟也者,其爲仁之本與?」\par
子曰:「巧言令色,鮮矣仁!」\par
曾子曰:「吾日三省吾身:爲人謀,而不忠乎?與朋友交,而不信乎?傳,不習乎?」\par
子曰:「道千乘之國,敬事而信,節用而愛人,使民以時。」\par
子曰:「弟子入則孝,出則弟;謹而信,汎愛衆;而親仁,行有餘力,則以學文。」
  \end{example}
\caption{고문헌 조판 보기. japanese 환경을 이용했다.}\label{fig:ancientdoc}
\end{figure}

\keyword{inhibitglue}%
\cs{inhibitglue} 명령은 일본어 등 환경에서 가끔 유용한데,
해당 지점에 자동 삽입되는 공백을 영(zero)으로 만들어준다.

\section{매달린 구두점}
마침표, 쉼표, 인용부호를 판면 바깥에 식자하여 행 끝에 매달리게 만든다.
\begin{verbatim}
  \usepackage{xetexko-hanging}
\end{verbatim}
\cs{hangingpunctuation} 명령은 버전 2.2 이후 불필요해졌다.
글자 내밀기 기본값에 차이가 좀 있긴 하지만,
microtype 패키지를 로드하는 것으로도 유사한 결과를 얻을 수 있다.

%\begin{figure}
%\Large
%\hangingpunctuation
%\setbox0\hbox{줄 끝에 매달린 구두점}
%\vbox{\hfil\hbox{\vrule\vbox{\hsize\wd0
%  줄 끝에 매달린 구두점.
%  줄 끝에 매달린 구두점,
%  ``줄 끝에 매달린 구두점''
%  `줄 끝에 매달린 구두점'
%  “줄 끝에 매달린 구두점”
%  ‘줄 끝에 매달린 구두점’
%  줄 끝에 매달린 구두점、
%  줄 끝에 매달린 구두점。
%  줄 끝에 매달린 구두점
%  }\vrule}\hfil}
%\caption{매달린 구두점 보기}\label{fig:hanging}
%\end{figure}

\section{수식 한글}
수식 모드에서도 한글을 \hparens{hbox로 감싸지 않고} 직접 입력할 수 있다.
\begin{quote}
  \verb|$가^{나^다}$|\quad$\Rightarrow\quad가^{나^다}$
\end{quote}
수식 한글은 따로 설정하지 않으면 문서의 기본 글꼴을 따라가지만
굳이 설정하려면 다음과 같이 한다. 이 명령은 플레인텍에서도 쓸 수 있다.
\begin{verbatim}
  \setmathhangulfont{Noto Sans CJK KR}[
    SizeFeatures={ {Size=-6,  Font=* Medium},
                   {Size=6-9, Font=*},
                   {Size=9-,  Font=* DemiLight} }
  ]
\end{verbatim}
현재 한글만 쓸 수 있게 설정되어 있다.
한자도 수식에 직접 입력하려면 사용자는
\begin{verbatim}
  \setmathhangulblock{4E00}{9FC3}
\end{verbatim}
명령으로 유니코드 블럭을 추가 지정해야 한다.

\section{자동조사}
자동조사는 \kotex 의 경우와 기본적으로 동일하게 동작한다.
게다가 문장 중에서도 동작하고
플레인텍에서까지 사용할 수 있다.
그럼에도 불구하고 사용자가 임의로 제어할 필요가 생긴다면
\cs{jong} \cs{jung} \cs{rieul} 중 하나를
미리 선언해 둘 수 있다. 이를테면,
\begin{verbatim}
  \def\mypage{페이지\jung}
  \def\mypage{쪽\jong}
  \def\mystar{별\rieul}
\end{verbatim}

\section{드러냄표}
\keyword{dotemph}%
\dotemph{드러냄표} 강조도 \kotex 과 대동소이하다.
기본은 글자 위에 점을 찍는 형태이나 다음 명령을 이용해 개인적으로 선호하는
기호를 드러냄표로 쓸 수 있다.
\begin{verbatim}
  \def\dotemphraise{0.4em }
  \def\dotemphchar{\bfseries ^^^^02d9}
\end{verbatim}
전자는 드러냄표를 피강조 글자 위로 끌어올리는 길이를,
후자는 드러냄표 기호 자체를 정의한다.
\verb|^^^^02d9|는 유니코드 코드포인트를 뜻하는 16진수이고
숫자 대신 직접 문자를 입력해도 된다.
플레인텍에서도 드러냄표 강조를 사용할 수 있다.

\section{고아글자 문제}
어느 정도는 고아글자가 생기지 않게 만들어 두었으나,
\XeTeX 에서는 고아글자를 자동으로 완전히 회피하기는 어렵다.
필요하다면 사용자가 적당한 곳에 \verb|\nobreak| 명령을 삽입해야 한다.

\section{한국어 번호}
항목 번호를 한국어 기호로 붙일 수 있다. \kotex과 마찬가지로
\verb|\jaso| \verb|\gana| \verb|\ojaso| \verb|\ogana| \verb|\pjaso|
\verb|\pgana| \verb|\onum| \verb|\pnum| \verb|\oeng| \verb|\peng|
\verb|\hnum| \verb|\Hnum| \verb|\hroman| \verb|\hRoman| \verb|\hNum|
\verb|\hanjanum|
따위를 사용한다.

\section{밑줄긋기}
\LaTeX에서는 \uline{ulem 패키지}를 로드하는 것만으로 자동 지원된다.
\begin{plaintex}
플레인텍에서는 패키지 로드 후 사용자가 \cs{xetexkoulemsupport}
명령을 내려주어야 한다.
\end{plaintex}

\hfill \fboxsep=-\fboxrule \fbox{\vbox to1em{\hbox to1em{\hss}\vss}}


\end{document}