summaryrefslogtreecommitdiff
path: root/macros/xetex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-06-19 03:01:48 +0000
committerNorbert Preining <norbert@preining.info>2021-06-19 03:01:48 +0000
commitdaa6873fe1d06863ffc2980970295b39071f02ba (patch)
tree436daaf0d6464d12d7ad7af294e5aeed5851f8fb /macros/xetex
parent3ecc00c27119bc47ba26b518b7d26c00b69599df (diff)
CTAN sync 202106190301
Diffstat (limited to 'macros/xetex')
-rw-r--r--macros/xetex/generic/xetexko/ChangeLog7
-rw-r--r--macros/xetex/generic/xetexko/README7
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.pdfbin254038 -> 255904 bytes
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.tex13
-rw-r--r--macros/xetex/generic/xetexko/xetexko.sty294
5 files changed, 171 insertions, 150 deletions
diff --git a/macros/xetex/generic/xetexko/ChangeLog b/macros/xetex/generic/xetexko/ChangeLog
index 486d2ddf12..f1b41e9cef 100644
--- a/macros/xetex/generic/xetexko/ChangeLog
+++ b/macros/xetex/generic/xetexko/ChangeLog
@@ -1,3 +1,10 @@
+2021-06-18 Dohyun Kim <nomos at ktug org>
+
+ Version 3.7
+
+ * fix position of dotemph regarding hangul tone marks
+ * enhance compatibility with ulem/ruby packages
+
2021-06-10 Dohyun Kim <nomos at ktug org>
Version 3.6
diff --git a/macros/xetex/generic/xetexko/README b/macros/xetex/generic/xetexko/README
index 8546016217..fcec961996 100644
--- a/macros/xetex/generic/xetexko/README
+++ b/macros/xetex/generic/xetexko/README
@@ -1,4 +1,4 @@
-XeTeX-ko Package version 3.6 (2021/06/10)
+XeTeX-ko Package version 3.7 (2021/06/18)
=========================================
XeTeX-ko is a macro package for Xe(La)TeX which supports typesetting
@@ -124,8 +124,9 @@ Emphasise Hangul or Hanja by putting dot above.
\begin{vertical}{<dimen>}
\end{vertical}
This environment makes a vbox vertically typeset. <dimen> is an
-argument to indicate the box height. For vertical typesetting
-of entire document, use the command \verticaltypesetting instead.
+argument to indicate the box height. When <dimen> is \empty, an hbox
+with natural height will be made. For vertical typesetting of
+entire document, use the command \verticaltypesetting instead.
\은 \는 \이 \가 \을 \를 \와 \과 \로 \으로 \라 \이라
Commands for automatic Josa selection. Unlike those of cjk-ko
diff --git a/macros/xetex/generic/xetexko/xetexko-doc.pdf b/macros/xetex/generic/xetexko/xetexko-doc.pdf
index 654bedda95..e8c210813e 100644
--- a/macros/xetex/generic/xetexko/xetexko-doc.pdf
+++ b/macros/xetex/generic/xetexko/xetexko-doc.pdf
Binary files differ
diff --git a/macros/xetex/generic/xetexko/xetexko-doc.tex b/macros/xetex/generic/xetexko/xetexko-doc.tex
index fed8d24e1b..226dc96105 100644
--- a/macros/xetex/generic/xetexko/xetexko-doc.tex
+++ b/macros/xetex/generic/xetexko/xetexko-doc.tex
@@ -74,7 +74,7 @@
\title{\xetexko\ 간단 매뉴얼}
\author{Dohyun Kim \normalsize <\texttt{nomos at ktug org}> \and
\normalsize <\url{http://github.com/dohyunkim/xetexko}>}
-\date{Version 3.6\quad 2021/06/10}
+\date{Version 3.7\quad 2021/06/18}
\maketitle
\begin{quote}\small
@@ -285,7 +285,11 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다.
\item[CharRaise, charraise]\quad
글자의 {\addhangulfontfeature{charraise=.5ex}수직 위치}를 조절한다.
- 기본값은 \verb|0pt|.
+ 기본값은 \verb|0pt|.%
+ \footnote{%
+ 세로쓰기에서는 이 옵션의 값을 고정길이(가령 pt 단위)로 주어야
+ 크기가 다른 폰트들 간에 중앙정렬이 이루어진다.
+ }
고정폭 글꼴에서도 이 옵션은 작동한다.
\end{description}
\vernote{3.0}부터는 다음 옵션들이 아무 효과도 가져오지 않게
@@ -690,7 +694,10 @@ microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가
\LaTeX 에서는 \uwave{ulem 패키지}를 로드하는 것만으로 자동 지원된다.
\cs{xetexkoulemsupport} 명령이 \vernote{3.3}부터 부활하였으므로
-플레인텍에서는 이 명령을 명시해야 할 경우가 있을 것이다.
+플레인텍에서는 이 명령을 명시해야 할 경우가 있을 것이다.%
+\footnote{%
+ ulem 명령어의 인자 안에서도 \cs{dotemph} 명령을 쓸 수 있다.
+}
%\hfill \fboxsep=-\fboxrule \fbox{\vbox to1em{\hbox to1em{\hss}\vss}}
diff --git a/macros/xetex/generic/xetexko/xetexko.sty b/macros/xetex/generic/xetexko/xetexko.sty
index e82c85aabd..edd8221c8c 100644
--- a/macros/xetex/generic/xetexko/xetexko.sty
+++ b/macros/xetex/generic/xetexko/xetexko.sty
@@ -16,7 +16,7 @@
\ifdefined\ProvidesPackage
\NeedsTeXFormat{LaTeX2e}[2021/06/01]
- \ProvidesPackage{xetexko}[2021/06/10 v3.6 typesetting Korean with XeTeX]
+ \ProvidesPackage{xetexko}[2021/06/18 v3.7 typesetting Korean with XeTeX]
\else
\ifdefined\@tempcnta\else \newcount\@tempcnta \fi
\ifdefined\@sptoken \else
@@ -598,23 +598,22 @@
\chardef\XeKo@cjk@ignorespaces\z@
\protected\def\removeclassicspaces{\chardef\XeKo@cjk@ignorespaces\@ne}
-\expandafter\let\csname XeKo@1@class\endcsname =\XeTeXcharclassHG
-\expandafter\let\csname XeKo@2@class\endcsname =\XeTeXcharclassID
-% skip 3 which ulem uses
-\expandafter\let\csname XeKo@4@class\endcsname =\XeTeXcharclassSY
-\expandafter\let\csname XeKo@5@class\endcsname =\XeTeXcharclassAA
-\expandafter\let\csname XeKo@6@class\endcsname =\XeTeXcharclassAO
-\expandafter\let\csname XeKo@7@class\endcsname =\XeTeXcharclassAC
-\expandafter\let\csname XeKo@8@class\endcsname =\XeTeXcharclassAP
-\expandafter\let\csname XeKo@9@class\endcsname =\XeTeXcharclassAM
-\expandafter\let\csname XeKo@10@class\endcsname=\XeTeXcharclassAH
-\expandafter\let\csname XeKo@11@class\endcsname=\XeTeXcharclassOP
-\expandafter\let\csname XeKo@12@class\endcsname=\XeTeXcharclassCL
-\expandafter\let\csname XeKo@13@class\endcsname=\XeTeXcharclassMD
-\expandafter\let\csname XeKo@14@class\endcsname=\XeTeXcharclassFS
-\expandafter\let\csname XeKo@15@class\endcsname=\XeTeXcharclassEX
-\expandafter\let\csname XeKo@16@class\endcsname=\XeTeXcharclassLD
-\expandafter\let\csname XeKo@17@class\endcsname=\XeTeXcharclassVC
+\expandafter\let\csname XeKo@6@class\endcsname =\XeTeXcharclassHG
+\expandafter\let\csname XeKo@7@class\endcsname =\XeTeXcharclassID
+\expandafter\let\csname XeKo@8@class\endcsname =\XeTeXcharclassSY
+\expandafter\let\csname XeKo@9@class\endcsname =\XeTeXcharclassAA
+\expandafter\let\csname XeKo@10@class\endcsname=\XeTeXcharclassAO
+\expandafter\let\csname XeKo@11@class\endcsname=\XeTeXcharclassAC
+\expandafter\let\csname XeKo@12@class\endcsname=\XeTeXcharclassAP
+\expandafter\let\csname XeKo@13@class\endcsname=\XeTeXcharclassAM
+\expandafter\let\csname XeKo@14@class\endcsname=\XeTeXcharclassAH
+\expandafter\let\csname XeKo@15@class\endcsname=\XeTeXcharclassOP
+\expandafter\let\csname XeKo@16@class\endcsname=\XeTeXcharclassCL
+\expandafter\let\csname XeKo@17@class\endcsname=\XeTeXcharclassMD
+\expandafter\let\csname XeKo@18@class\endcsname=\XeTeXcharclassFS
+\expandafter\let\csname XeKo@19@class\endcsname=\XeTeXcharclassEX
+\expandafter\let\csname XeKo@20@class\endcsname=\XeTeXcharclassLD
+\expandafter\let\csname XeKo@21@class\endcsname=\XeTeXcharclassVC
\newtoks\XeKo@toks@
\newtoks\XeKo@toks@ii
@@ -628,7 +627,7 @@
\ifnum\XeKo@charslot="FFFF
\expandafter\XeKo@flush@toks
\else
- \ifnum 0\ifnum\XeKo@currclass>4 \ifnum\XeKo@currclass<11 % AA..AH
+ \ifnum 0\ifnum\XeKo@currclass>8 \ifnum\XeKo@currclass<15 % AA..AH
1\fi\fi >\z@
\expandafter\expandafter\expandafter\XeKo@check@next@tok@latin
\else % HG ID
@@ -657,18 +656,18 @@
\fi
}
\def\XeKo@addto@toks#1{%
- \ifnum\XeKo@currclass=5 % AA
+ \ifnum\XeKo@currclass=9 % AA
\global\let\XeKo@josatoken=#1\relax
\else\ifnum\XeTeXcharclass\XeKo@charslot=\XeTeXcharclassJJ
\global\let\XeKo@josatoken=#1\relax
- \else\ifnum\XeKo@currclass=4 % SY
+ \else\ifnum\XeKo@currclass=8 % SY
\global\let\XeKo@josatoken=#1\relax
\fi\fi\fi
\XeKo@toks@\expandafter{\the\XeKo@toks@ #1}%
\XeKo@check@next@tok
}
\def\XeKo@flush@toks{%
- \ifnum\XeKo@currclass<\thr@@
+ \ifnum\XeKo@currclass<8 %
\XeKo@toks@ii{}\expandafter\XeKo@char@orphan % HG, ID
\else
\expandafter\XeKo@do@flush@toks
@@ -729,20 +728,20 @@
\XeKo@pre@hang % hanging punctuations
\fi
\XeKo@char@raise@start % charraise
- \ifnum\XeKo@currclass=\@ne
- \XeKo@everyhangul{\the\XeKo@toks@}% everyhangul
+ \ifnum\XeKo@currclass=6 %
+ \XeKo@everyhangul{\XeKo@maybe@dotemph \the\XeKo@toks@}% everyhangul
\else
- \ifnum\XeKo@currclass=\tw@
- \XeKo@everyhanja{\the\XeKo@toks@}% everyhanja
+ \ifnum\XeKo@currclass=7 %
+ \XeKo@everyhanja{\XeKo@maybe@dotemph \the\XeKo@toks@}% everyhanja
\else
\ifnum\XeKo@compresspuncts=\@ne
- \ifnum\XeKo@currclass=11 % OP
+ \ifnum\XeKo@currclass=15 % OP
\hbox to.5em\bgroup\hss \the\XeKo@toks@ \egroup
- \else\ifnum\XeKo@currclass=12 % CL
+ \else\ifnum\XeKo@currclass=16 % CL
\hbox to.5em\bgroup \the\XeKo@toks@ \hss\egroup
- \else\ifnum\XeKo@currclass=13 % MD
+ \else\ifnum\XeKo@currclass=17 % MD
\hbox to.5em\bgroup\hss \the\XeKo@toks@ \hss\egroup
- \else\ifnum\XeKo@currclass=14 % FS
+ \else\ifnum\XeKo@currclass=18 % FS
\hbox to.5em\bgroup \the\XeKo@toks@ \hss\egroup
\else
\the\XeKo@toks@
@@ -773,8 +772,8 @@
}
% remove space
\def\XeKo@maybe@ignorespaces{%
- \ifnum 0\ifnum\XeKo@currclass<5 1\else % HG ID SY
- \ifnum\XeKo@currclass>10 1\fi\fi % CJK punctuations
+ \ifnum 0\ifnum\XeKo@currclass<9 1\else % HG ID SY
+ \ifnum\XeKo@currclass>14 1\fi\fi % CJK punctuations
>\z@
\expandafter\XeKo@ignorespaces@iv
\fi
@@ -810,7 +809,7 @@
\ifnum\XeKo@hangingpuncts=\@ne
\ifcsname XeKo@hanging@ratio@\number`#1\endcsname
\ifnum 0\ifnum\XeKo@compresspuncts=\@ne
- \ifnum\XeKo@currclass=11 % OP
+ \ifnum\XeKo@currclass=15 % OP
1\fi\fi >\z@
\XeKo@dimen@=.5em
\else
@@ -829,8 +828,8 @@
\ifnum\XeKo@hangingpuncts=\@ne
\ifcsname XeKo@hanging@ratio@\number`#1\endcsname
\ifnum 0\ifnum\XeKo@compresspuncts=\@ne
- \ifnum\XeKo@currclass>11 %
- \ifnum\XeKo@currclass<15 % CL MD FS
+ \ifnum\XeKo@currclass>15 %
+ \ifnum\XeKo@currclass<19 % CL MD FS
1\fi\fi\fi >\z@
\XeKo@dimen@=.5em
\else
@@ -868,14 +867,14 @@
\def\XeKo@startHG#1{%
\global\let\XeKo@josatoken=#1\relax
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{1}%
+ \def\XeKo@currclass{6}%
\XeKo@toks@{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startID#1{%
\global\let\XeKo@josatoken=#1\relax
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{2}%
+ \def\XeKo@currclass{7}%
\XeKo@toks@{#1}%
\ifdefined\fallbackhanjafont
\iffontchar\font`#1\else
@@ -886,55 +885,55 @@
}
\def\XeKo@startCJ#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{2}% same as ID
+ \def\XeKo@currclass{7}% same as ID
\XeKo@toks@{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startSY#1{%
\global\let\XeKo@josatoken=#1\relax
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{4}%
+ \def\XeKo@currclass{8}%
\XeKo@toks@{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAA#1{%
\global\let\XeKo@josatoken=#1\relax
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{5}%
+ \def\XeKo@currclass{9}%
\XeKo@toks@{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAO#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{6}%
+ \def\XeKo@currclass{10}%
\XeKo@toks@{#1}%
\XeKo@def@pre@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAC#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{7}%
+ \def\XeKo@currclass{11}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAP#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{8}%
+ \def\XeKo@currclass{12}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAM#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{9}%
+ \def\XeKo@currclass{13}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startAH#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{10}%
+ \def\XeKo@currclass{14}%
\XeKo@toks@{#1}%
\ifnum`#1=\hyphenchar\font \else % exclude hyphen char
\XeKo@def@post@hang{#1}%
@@ -943,49 +942,49 @@
}
\def\XeKo@startOP#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{11}%
+ \def\XeKo@currclass{15}%
\XeKo@toks@{#1}%
\XeKo@def@pre@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startCL#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{12}%
+ \def\XeKo@currclass{16}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startMD#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{13}%
+ \def\XeKo@currclass{17}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startFS#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{14}%
+ \def\XeKo@currclass{18}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startEX#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{15}%
+ \def\XeKo@currclass{19}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startLD#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{16}%
+ \def\XeKo@currclass{20}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
}
\def\XeKo@startVC#1{%
\let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined
- \def\XeKo@currclass{17}%
+ \def\XeKo@currclass{21}%
\XeKo@toks@{#1}%
\XeKo@def@post@hang{#1}%
\XeKo@check@next@tok
@@ -994,9 +993,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassHG{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XKinterhanjabreak \or \or \or \or % 1: ruby를 한자처럼 취급
\or \unkern\unkern \XKinterhangulbreak % HG HG
\or \unkern\unkern \XKinterhanjabreak % ID HG
- \or
\or \unkern\unkern % SY HG
\or \unkern\unkern \XeKo@latincjk % AA HG
\or \unkern\unkern % AO HG
@@ -1020,9 +1019,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassID{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XKinterhanjabreak \or \or \or \or
\or \unkern\unkern \XKinterhanjabreak % HG ID
\or \unkern\unkern \XKinterhanjabreak % ID ID
- \or
\or \unkern\unkern % SY ID
\or \unkern\unkern \XeKo@latincjk % AA ID
\or \unkern\unkern % AO ID
@@ -1046,9 +1045,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassCJ{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XKinterhanjabreak \XeKo@suppress@linebreak \or \or \or \or
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % HG CJ
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % ID CJ
- \or
\or \unkern\unkern % SY CJ
\or \unkern\unkern \XeKo@latincjk % AA CJ
\or \unkern\unkern % AO CJ
@@ -1072,9 +1071,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassSY{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG SY
\or \unkern\unkern % ID SY
- \or
\or \unkern\unkern % SY SY
\or \unkern\unkern % AA SY
\or \unkern\unkern % AO SY
@@ -1098,9 +1097,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAA{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@latincjk \or \or \or \or
\or \unkern\unkern \XeKo@latincjk % HG AA
\or \unkern\unkern \XeKo@latincjk % ID AA
- \or
\or \unkern\unkern % SY AA
\or \unkern\unkern % AA AA
\or \unkern\unkern % AO AA
@@ -1122,9 +1121,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAO{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@latincjk \or \or \or \or
\or \unkern\unkern \XeKo@latincjk % HG AO
\or \unkern\unkern \XeKo@latincjk % ID AO
- \or
\or \unkern\unkern \XeKo@latincjk % SY AO
\or \unkern\unkern % AA AO
\or \unkern\unkern % AO AO
@@ -1146,9 +1145,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAC{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG AC
\or \unkern\unkern % ID AC
- \or
\or \unkern\unkern % SY AC
\or \unkern\unkern % AA AC
\or \unkern\unkern % AO AC
@@ -1170,9 +1169,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAP{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG AP
\or \unkern\unkern % ID AP
- \or
\or \unkern\unkern % SY AP
\or \unkern\unkern % AA AP
\or \unkern\unkern % AO AP
@@ -1194,9 +1193,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAM{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@nobreak\XeKo@latincjk \or \or \or \or
\or \unkern\unkern \XeKo@nobreak\XeKo@latincjk % HG AM
\or \unkern\unkern \XeKo@nobreak\XeKo@latincjk % ID AM
- \or
\or \unkern\unkern \XeKo@nobreak\XeKo@latincjk % SY AM
\or \unkern\unkern % AA AM
\or \unkern\unkern % AO AM
@@ -1218,9 +1217,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAH{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@nobreak \or \or \or \or
\or \unkern\unkern \XeKo@nobreak % HG AH
\or \unkern\unkern \XeKo@nobreak % ID AH
- \or
\or \unkern\unkern \XeKo@nobreak % SY AH
\or \unkern\unkern % AA AH
\or \unkern\unkern % AO AH
@@ -1242,9 +1241,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassOP{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@halfhalf \or \or \or \or
\or \unkern\unkern \XeKo@halfhalf % HG OP
\or \unkern\unkern \XeKo@halfhalf % ID OP
- \or
\or \unkern\unkern \XeKo@halfhalf % SY OP
\or \unkern\unkern \XeKo@halfhalf % AA OP
\or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % AO OP
@@ -1268,9 +1267,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassCL{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG CL
\or \unkern\unkern % ID CL
- \or
\or \unkern\unkern % SY CL
\or \unkern\unkern % AA CL
\or \unkern\unkern % AO CL
@@ -1292,9 +1291,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassMD{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XeKo@nobreak\XeKo@quarterquarter \or \or \or \or
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % HG MD
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % ID MD
- \or
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % SY MD
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AA MD
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AO MD
@@ -1318,9 +1317,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassFS{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG FS
\or \unkern\unkern % ID FS
- \or
\or \unkern\unkern % SY FS
\or \unkern\unkern % AA FS
\or \unkern\unkern % AO FS
@@ -1342,9 +1341,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassEX{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG EX
\or \unkern\unkern % ID EX
- \or
\or \unkern\unkern % SY EX
\or \unkern\unkern % AA EX
\or \unkern\unkern % AO EX
@@ -1366,9 +1365,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassLD{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \XKinterhanjabreak \XeKo@suppress@linebreak \or \or \or \or
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % HG LD
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % ID LD
- \or
\or \unkern\unkern % SY LD
\or \unkern\unkern % AA LD
\or \unkern\unkern % AO LD
@@ -1390,9 +1389,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassVC{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern % HG VC
\or \unkern\unkern % ID VC
- \or
\or \unkern\unkern % SY VC
\or \unkern\unkern % AA VC
\or \unkern\unkern % AO VC
@@ -1418,7 +1417,7 @@
% !!!!! 이 경우 \everyhangul 등이 제대로 작동 않는다 !!!!!
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassJJ{%
\ifnum\lastnodetype=12 %
- \ifnum\lastkern=\@ne
+ \ifnum\lastkern=6 %
\unkern\unkern
\expandafter\expandafter\expandafter\XeKo@startJJ
\fi
@@ -1441,9 +1440,9 @@
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassCM{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
+ \or \or \or \or \or
\or \unkern\unkern \expandafter\expandafter\expandafter\XeKo@startCM % HG
\or \unkern\unkern \expandafter\expandafter\expandafter\XeKo@startCM % ID
- \or
\or \unkern\unkern \expandafter\expandafter\expandafter\XeKo@startCM % SY
\or \unkern\unkern \expandafter\expandafter\expandafter\XeKo@startCM % AA
\or \unkern\unkern \expandafter\expandafter\expandafter\XeKo@startCM % AO
@@ -1485,7 +1484,7 @@
\XeKo@insert@kerns
}
\def\XeKo@rebox@punctbox#1{%
- \ifnum 0\ifnum\XeKo@currclass>10 \ifnum\XeKo@currclass<15
+ \ifnum 0\ifnum\XeKo@currclass>14 \ifnum\XeKo@currclass<19 % OP .. FS
1\fi\fi >\z@
\setbox\XeKo@box@=\lastbox
\hbox to.5em\bgroup
@@ -1684,22 +1683,46 @@
\fi
\newbox\XeKo@dotemph@box
+\let\XeKo@maybe@dotemph\relax
+
\protected\def\dotemph#1{%
\leavevmode
+ \setbox\XeKo@dotemph@box\hbox{\raise\dotemphraise\hbox{\dotemphchar}}%
\begingroup
- \setbox\XeKo@dotemph@box\hbox{\dotemphchar}%
- \edef\XeKo@flush@char@orphan{%
- \unexpanded{%
- \edef\XeKo@tempa{%
- \XeKo@toks@{%
- \setbox\z@\hbox{\the\XeKo@toks@}%
- \setbox\tw@\hbox to\wd\z@{\hss\unhcopy\XeKo@dotemph@box\hss}\ht\tw@\z@\dp\tw@\z@
- \rlap{\raise\dotemphraise\box\tw@}\the\XeKo@toks@ }%
- }\XeKo@tempa }%
- \unexpanded\expandafter{\XeKo@flush@char@orphan}}%
+ \let\XeKo@maybe@dotemph\XeKo@do@dotemph
#1\relax
\endgroup
- }
+}
+\def\XeKo@do@dotemph{%
+ \XeKo@check@hangulTM % 방점 너비를 감안하자
+ \setbox\z@\hbox{\the\XeKo@toks@}%
+ \setbox\tw@\hbox to\wd\z@{%
+ \hss
+ \ifnum\XeKo@has@hangulTM>\z@
+ \kern\fontcharwd\font\XeKo@has@hangulTM
+ \fi
+ \unhcopy\XeKo@dotemph@box
+ \hss
+ }\wd\tw@\z@ \ht\tw@\z@ \dp\tw@\z@
+ \box\tw@
+}
+\def\XeKo@check@hangulTM{%
+ \chardef\XeKo@has@hangulTM\z@
+ \expandafter\XeKo@check@hangulTM@e \the\XeKo@toks@ ^^^^302e\relax
+ \ifnum\XeKo@has@hangulTM=\z@
+ \expandafter\XeKo@check@hangulTM@f \the\XeKo@toks@ ^^^^302f\relax
+ \fi
+}
+\def\XeKo@check@hangulTM@e#1^^^^302e#2\relax{%
+ \ifx\empty#2\empty \else
+ \chardef\XeKo@has@hangulTM="302E
+ \fi
+}
+\def\XeKo@check@hangulTM@f#1^^^^302f#2\relax{%
+ \ifx\empty#2\empty \else
+ \chardef\XeKo@has@hangulTM="302F
+ \fi
+}
% other commands
\let\enablecjksymbolspacing\compresspunctuations
@@ -1755,62 +1778,49 @@
\let\disableautojosa\relax
\let\disablejamoautojosa\relax
% ulem support
-\ifcsname ver@xetexko.sty\endcsname
- \def\xetexkoulemsupport{%
- \ifdefined\UL@hook
- \UL@hook\expandafter{\the\UL@hook
- % uline 안에서 폰트가 변경되는 경우를 대비
- \expandafter\def\expandafter\XeKo@hangul@selectfont\expandafter{%
- \XeKo@hangul@selectfont
- \ifdefined\XeKo@in@selectfont\else
- \xdef\XeKo@UL@hangul@font{%
- \def\noexpand\XeKo@hangul@font{\unexpanded\expandafter{\XeKo@hangul@font}}}%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hangul@font
- % 여기서 라틴폰트 지정을 보존한다.
- \global\let\XeKo@UL@latin@font\font@name
- \aftergroup\aftergroup\aftergroup\XeKo@UL@latin@font
- \fi }%
- \expandafter\def\expandafter\XeKo@hanja@selectfont\expandafter{%
- \XeKo@hanja@selectfont
- \ifdefined\XeKo@in@selectfont\else
- \xdef\XeKo@UL@hanja@font{%
- \def\noexpand\XeKo@hanja@font{\unexpanded\expandafter{\XeKo@hanja@font}}}%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hanja@font
- \fi }%
- }%
- \fi
- }
-\else
- \let\XeKo@UL@hangul@patch\relax
- \let\XeKo@UL@hanja@patch \relax
- \def\xetexkoulemsupport{%
- \ifdefined\UL@hook
- \UL@hook\expandafter{\the\UL@hook
- % uline 안에서 폰트가 변경되는 경우를 대비
- \def\XeKo@UL@hangul@patch{%
- \xdef\XeKo@UL@hangul@font{%
- \def\noexpand\XeKo@hangul@font{\unexpanded\expandafter{\XeKo@hangul@font}}}%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hangul@font
- \XeKo@UL@latin@patch
- }%
- \def\XeKo@UL@hanja@patch{%
- \xdef\XeKo@UL@hanja@font{%
- \def\noexpand\XeKo@hanja@font{\unexpanded\expandafter{\XeKo@hanja@font}}}%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hanja@font
- \XeKo@UL@latin@patch
- }%
- % uline 안에서 폰트 지시는 라틴폰트, 한글폰트 순서로 해야 라틴폰트가 올바로 동작함
- \def\XeKo@UL@latin@patch{%
- \ifnum 0\expandafter\ifx\the\font\XeKo@raw@hangul@font 1\else
- \expandafter\ifx\the\font\XeKo@raw@hanja@font 1\fi\fi =\z@
- \global\expandafter\let\expandafter\XeKo@UL@latin@font\the\font
- \aftergroup\aftergroup\aftergroup\XeKo@UL@latin@font
- \fi
- }%
- }%
+\protected\def\XeKo@UL@dotemph#1{%
+ \ifx\ \LA@space\else \UL@stop\fi
+ \leavevmode
+ \setbox\XeKo@dotemph@box\hbox{\raise\dotemphraise\hbox{\dotemphchar}}%
+ \begingroup
+ \let\XeKo@maybe@dotemph\XeKo@do@dotemph
+ \XeKo@UL@dotemph@#1 ^^^^ffff \relax
+ \endgroup
+ \ifx\ \LA@space\else \UL@start\fi
+}
+\def\XeKo@UL@dotemph@#1 {%
+ \ifx^^^^ffff#1\relax
+ \unskip\unskip\unskip
+ \else
+ \ifx\ \LA@space
+ #1\ %
+ \else
+ \UL@start
+ #1\ %
+ \UL@stop
\fi
- }
-\fi
+ \expandafter\XeKo@UL@dotemph@
+ \fi
+}
+\def\xetexkoulemsupport{%
+ \let\XeKo@UL@stop\UL@stop
+ \UL@hook\expandafter{\the\UL@hook
+ \let\dotemph\XeKo@UL@dotemph
+ % uline 안에서 폰트가 변경되는 경우를 대비
+ \def\UL@stop{%
+ \global\let\XeKo@UL@tmp@latinfont \XeKo@latin@font
+ \global\let\XeKo@UL@tmp@hangulfont \XeKo@hangul@font
+ \global\let\XeKo@UL@tmp@hanjafont \XeKo@hanja@font
+ \global\let\XeKo@UL@tmp@rawhangulfont \XeKo@raw@hangul@font
+ \global\let\XeKo@UL@tmp@rawhanjafont \XeKo@raw@hanja@font
+ \expandafter \XeKo@UL@stop \the\font
+ \let\XeKo@latin@font \XeKo@UL@tmp@latinfont
+ \let\XeKo@hangul@font \XeKo@UL@tmp@hangulfont
+ \let\XeKo@hanja@font \XeKo@UL@tmp@hanjafont
+ \let\XeKo@raw@hangul@font \XeKo@UL@tmp@rawhangulfont
+ \let\XeKo@raw@hanja@font \XeKo@UL@tmp@rawhanjafont
+ }%
+}}
% math hangul
\def\setmathhangulblock#1#2{%
@@ -1829,7 +1839,7 @@
\unexpanded\expandafter{\plainoutput}}%
\def\pagebody{\setbox\z@\vbox to\hsize{\boxmaxdepth=\maxdepth \pagecontents}%
\XeKo@rotatebox\z@\box\z@}%
- \maxdepth\z@ \typesetvertical
+ \typesetvertical
\let\verticaltypesetting\relax % prevent multiple running
}
\def\beginverticaltypesetting{\vfill\supereject \begingroup \verticaltypesetting}
@@ -1845,7 +1855,6 @@
\ifdefined\xetexkointerhchar \def\noexpand\xetexkointerhchar{\xetexkointerhchar}\fi
\ifdefined\xetexkocharraise \def\noexpand\xetexkocharraise{\xetexkocharraise}\fi
}%
- \XeKo@UL@hangul@patch
}
\protected\def\sethangulfont#1{%
\def\@tempa{#1}%
@@ -1861,7 +1870,6 @@
\ifdefined\xetexkointerhchar \def\noexpand\xetexkointerhchar{\xetexkointerhchar}\fi
\ifdefined\xetexkocharraise \def\noexpand\xetexkocharraise{\xetexkocharraise}\fi
}%
- \noexpand\XeKo@UL@hangul@patch
}%
}
\protected\def\hanjafont{%
@@ -1874,7 +1882,6 @@
\ifdefined\xetexkointerhchar \def\noexpand\xetexkointerhchar{\xetexkointerhchar}\fi
\ifdefined\xetexkocharraise \def\noexpand\xetexkocharraise{\xetexkocharraise}\fi
}%
- \XeKo@UL@hanja@patch
}
\protected\def\sethanjafont#1{%
\def\@tempa{#1}%
@@ -1890,7 +1897,6 @@
\ifdefined\xetexkointerhchar \def\noexpand\xetexkointerhchar{\xetexkointerhchar}\fi
\ifdefined\xetexkocharraise \def\noexpand\xetexkocharraise{\xetexkocharraise}\fi
}%
- \noexpand\XeKo@UL@hanja@patch
}%
}
\protected\def\hanjabyhangulfont{\let\XeKo@hanja@font\XeKo@hangul@font }
@@ -1946,7 +1952,7 @@
\expandafter\textwidth\expandafter\textheight
\@outputpage
}%
- \maxdepth\z@ \typesetvertical
+ \typesetvertical
\let\verticaltypesetting\relax % prevent multiple running
}
\def\endverticaltypesetting{%