summaryrefslogtreecommitdiff
path: root/macros/xetex/generic/xetexko
diff options
context:
space:
mode:
Diffstat (limited to 'macros/xetex/generic/xetexko')
-rw-r--r--macros/xetex/generic/xetexko/ChangeLog6
-rw-r--r--macros/xetex/generic/xetexko/README2
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.pdfbin250218 -> 254362 bytes
-rw-r--r--macros/xetex/generic/xetexko/xetexko-doc.tex76
-rw-r--r--macros/xetex/generic/xetexko/xetexko.sty214
5 files changed, 146 insertions, 152 deletions
diff --git a/macros/xetex/generic/xetexko/ChangeLog b/macros/xetex/generic/xetexko/ChangeLog
index 3d2c82eba2..8bd1ebb212 100644
--- a/macros/xetex/generic/xetexko/ChangeLog
+++ b/macros/xetex/generic/xetexko/ChangeLog
@@ -1,3 +1,9 @@
+2021-05-15 Dohyun Kim <nomos at ktug org>
+
+ Version 3.4
+
+ * internal changes regarding font-switching method
+
2021-04-20 Dohyun Kim <nomos at ktug org>
Version 3.3
diff --git a/macros/xetex/generic/xetexko/README b/macros/xetex/generic/xetexko/README
index 4d0dfb8182..9cae875e93 100644
--- a/macros/xetex/generic/xetexko/README
+++ b/macros/xetex/generic/xetexko/README
@@ -1,4 +1,4 @@
-XeTeX-ko Package version 3.3 (2021/04/20)
+XeTeX-ko Package version 3.4 (2021/05/15)
=========================================
XeTeX-ko is a macro package for Xe(La)TeX which supports typesetting
diff --git a/macros/xetex/generic/xetexko/xetexko-doc.pdf b/macros/xetex/generic/xetexko/xetexko-doc.pdf
index baec8abd9f..d20c61d0da 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 37e1e49f7f..3aad0c1b2b 100644
--- a/macros/xetex/generic/xetexko/xetexko-doc.tex
+++ b/macros/xetex/generic/xetexko/xetexko-doc.tex
@@ -61,8 +61,8 @@
\def\hemph#1{\textsf{\bfseries #1}}
\def\hparen#1{{\small\hangulparens(#1)}}
\let\hparens\hparen
-\def\keyword#1{\leavevmode\marginpar{\hfuzz\maxdimen\footnotesize\cs{#1}}}
-\def\vernote#1{\leavevmode\marginpar{\hfuzz\maxdimen\footnotesize{\color{red}☜ v#1}}}
+\def\keyword#1{\cs{#1}\marginpar{\hfuzz\maxdimen\footnotesize{\color{blue!70}\cs{#1}}}}
+\def\vernote#1{v#1\marginpar{\hfuzz\maxdimen\footnotesize{\color{red}☜ v#1}}}
\hangingpunctuations
@@ -70,7 +70,7 @@
\title{\xetexko\ 간단 매뉴얼}
\author{Dohyun Kim \normalsize <\texttt{nomos at ktug org}> \and
\normalsize <\url{http://github.com/dohyunkim/xetexko}>}
-\date{Version 3.3\quad 2021/04/20}
+\date{Version 3.4\quad 2021/05/15}
\maketitle
\begin{quote}\small
@@ -146,7 +146,7 @@ main/sans hangul/hanja 폰트에는 따로 \verb|Ligatures=TeX| 옵션을 지시
\bigskip
-※ 버전 3.1부터 플레인텍에 주요 변경사항이 있다:\vernote{3.1}%
+※ \vernote{3.1} 및 \vernote{3.4}부터 플레인텍에 주요 변경사항이 있다:
\begin{plaintex}
플레인텍에서도 기본값으로 은바탕을 한글에 사용한다. 한글폰트를 지시하는 방법은 다음과 같다.
\begin{verbatim}
@@ -154,22 +154,20 @@ main/sans hangul/hanja 폰트에는 따로 \verb|Ligatures=TeX| 옵션을 지시
\hangulfont="[UnBatang]:mapping=tex-text" at 10pt
\hanjafont ="Naver Dictionary:mapping=tex-text" at 10pt
\end{verbatim}
- 그런데 3.1 버전부터는 이렇게 하면 문서 중간에 영문글꼴을 바꾸더라도
- \cs{hangulfont} 선언시의 영문글꼴이 계속 적용되도록 바뀌었다.
- 그래서 다음과 같은 새로운 명령을 제공한다.
+ \sout{그런데 3.1 버전부터는 이렇게 하면 문서 중간에 영문글꼴을 바꾸더라도
+ \cs{hangulfont} 선언시의 영문글꼴이 계속 적용되도록 바뀌었다.}
+ 또한 다음과 같은 새로운 명령을 제공한다.
\begin{verbatim}
- \tt
\sethangulfont\untaza ="[UnTaza.ttf]" at 10pt
\sethanjafont \undotum="[UnDotum.ttf]" at 10pt
- \def\tt{\untaza\undotum}
+ \expandafter\def\expandafter\tt\expandafter{\tt\untaza\undotum}
\end{verbatim}
- 이 경우 \cs{untaza}, \cs{undotum} 명령에 \cs{set...font} 실행시의 현재폰트 명령이
- 자동으로 포함된다. 뒤에서 설명할 글꼴옵션이 포함되는 것과 같은 개념이다.
+ \sout{이 경우 \cs{untaza}, \cs{undotum} 명령에 \cs{set...font} 실행시의 현재폰트 명령이
+ 자동으로 포함된다. 뒤에서 설명할 글꼴옵션이 포함되는 것과 같은 개념이다.}
그리하여 예의 \cs{tt} 명령으로 이제 한글, 한자, 영문 글꼴을 동시에 바꿀 수 있게 된다.
\end{plaintex}
-\keyword{fallbackhanjafont}%
-\cs{fallbackhanjafont}를 정의해두면 \hemph{한자 글꼴에도 없는 한자}를
+\keyword{fallbackhanjafont}를 정의해두면 \hemph{한자 글꼴에도 없는 한자}를
이 글꼴에서 찾아 식자한다. \cs{newfontfamily} 명령 등으로 정의한다.
\section{글꼴 명령 (계속)}
@@ -197,8 +195,7 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다.
참고로, 한자와 한글을 같은 글꼴로 식자하고 싶을 때 글꼴 설정을
번거롭게 두 번 할 필요 없이 한글 글꼴만 설정한 뒤 간단히
-\keyword{hanjabyhangulfont}%
-\cs{hanjabyhangulfont}를 선언하면 된다.%
+\keyword{hanjabyhangulfont}를 선언하면 된다.%
\footnote{프리앰블의 main/sans/mono 글꼴 명령들과 달리 새로 지정한 한글 폰트가
한자에도 자동으로 적용되지는 않는다는 말이다.}
@@ -225,16 +222,16 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다.
\item[cjksymbols] CJK 구두점, 괄호 및 상징기호
\end{description}
-종전에\vernote{3.0}
+종전에
라틴숫자에 적용되던 \verb|nums| 옵션과
라틴 인용부호에 적용되던 \verb|quotes| 옵션이
-3.0 버전부터는
+\vernote{3.0}부터는
각각 \verb|alphs| 옵션과 \verb|parens| 옵션에 통합되었음에 유의하라.
-또한\vernote{3.0} en dash, em dash가 종래 \verb|colons|에 속하던 것이 이제
+또한 en dash, em dash가 종래 \verb|colons|에 속하던 것이 이제
\verb|hyphens|에 속하게 되었다.
기본값은 다음 명령을 준 것과 동일하다.
-v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유의하라.
+\vernote{3.0}부터 괄호류의 기본글꼴이 한글이 되었음도 유의하라.
\begin{verbatim}
\xetexkofontregime {latin}%
[ puncts=prevfont, colons=prevfont,
@@ -285,7 +282,7 @@ v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유
기본값은 \verb|0pt|.
고정폭 글꼴에서도 이 옵션은 작동한다.
\end{description}
-3.0 버전부터는\vernote{3.0} 다음 옵션들이 아무 효과도 가져오지 않게
+\vernote{3.0}부터는 다음 옵션들이 아무 효과도 가져오지 않게
변경되었음을 주의하라.
\begin{verbatim}
lowerperiod lowerquestion
@@ -311,9 +308,9 @@ v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유
한자폰트 옵션을 서로 달리 지시할 수 있다.
\end{plaintex}
-종전에 한글·한자 글꼴의 옵션 기본값을 지정하던\vernote{3.0}
+종전에 한글·한자 글꼴의 옵션 기본값을 지정하던
\cs{defaulthangulfontfeatures} 및 \cs{defaulthanjafontfeatures} 명령이
-3.0 버전부터는
+\vernote{3.0}부터는
아무런 기능을 하지 않게 변경되었음에 유의하라.
폰트옵션의 수가 적어졌기 때문에 이 명령의 유용성도 거의 사라졌다고 판단했다.
@@ -336,8 +333,7 @@ v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유
\cs{nocompresspunctuations}는 이 명령과 동의어이다.\\
반대로
- \keyword{compresspunctuations}%
- \cs{compresspunctuations}는 반각을 강제하라는 명령이다.
+ \keyword{compresspunctuations}는 반각을 강제하라는 명령이다.
이것이 기본값이므로 특별한 경우가 아니면 따로 선언할 필요가 없다.
\item[\cs{disablehangulspacing}]
@@ -359,7 +355,7 @@ v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유
}
\end{description}
-3.0 버전부터는\vernote{3.0} 종전의
+\vernote{3.0}부터는 종전의
\cs{disableautojosa} 및 \cs{disablejamoautojosa} 명령이 아무 기능도 하지 않게
변경되었음을 유의하라.
@@ -411,8 +407,8 @@ Source Han Serif (본명조), Noto Sans CJK, Noto Serif CJK,
\setmainhangulfont{Noto Sans CJK KR}[
Vertical=Alternates, RawFeature=vertical ]
\end{verbatim}
-\keyword{verticaltypesetting}%
-문서 전체를 세로쓰기할 때 \cs{verticaltypesetting}을 선언하면
+
+문서 전체를 세로쓰기할 때 \keyword{verticaltypesetting}을 선언하면
면주는 그대로 두고 본문만 세로쓰기한다.\footnote{면주의 글꼴에는
\texttt{vertical} 옵션이 없어야 할 것이다.
면주 글꼴을 따로 지정하는 것은 사용자의 몫이다. }
@@ -482,10 +478,9 @@ horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한
\verb|typesetclassic| 환경은 고문헌 조판에 적합한 환경이다.
-불필요한 공백을 없애주는 기능은\vernote{3.0}
-3.0 버전부터는 자동으로 동작하지 않는다. 사용자가
-\keyword{removeclassicspaces}%
-\cs{removeclassicspaces} 명령을 주어야 CJK 글자간 공백을
+불필요한 공백을 없애주는 기능은
+\vernote{3.0}부터는 자동으로 동작하지 않는다. 사용자가
+\keyword{removeclassicspaces} 명령을 주어야 CJK 글자간 공백을
제거하기 시작한다.
간단한 일본어, 중국어 문단 정도를 식자하는 데도 이 환경을 이용할 수 있으나
@@ -505,8 +500,7 @@ horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한
\end{plaintex}
-\keyword{inhibitglue}%
-\cs{inhibitglue} 명령은
+\keyword{inhibitglue} 명령은
해당 지점에 자동 삽입되는 공백을 영(zero)으로 만들어준다.
현대문서 조판에는 \verb|typesetmodern| 환경이 쓰인다. 이 환경은 기본값이므로
@@ -554,13 +548,12 @@ horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한
\section{매달린 구두점}
\hemph{하이픈을 제외한} 문장부호들를 판면 바깥에 식자하여 행 끝에 매달리게 만들 수 있다.
-3.0 버전부터는\vernote{3.0} \keyword{hangingpunctuations}%
-\cs{hangingpunctuations} 명령으로 활성화한다.
+\vernote{3.0}부터는 \keyword{hangingpunctuations} 명령으로 활성화한다.
\cs{hangingpunctuation}은 이 명령과 동의어이다.
당분간 xetexko-hanging.sty을 로드하는 것으로도 활성화되도록 해 두었다.
이렇게 활성화되면 기본값으로 온점, 반점, 고리점, 모점에 대해서 전부 내밀기가 작동한다.
-3.2 버전부터는\vernote{3.2} 사용자가 원하는 문장부호를 원하는 만큼 판면 밖으로 내밀 수 있다.
+\vernote{3.2}부터는 사용자가 원하는 문장부호를 원하는 만큼 판면 밖으로 내밀 수 있다.
\begin{verbatim}
\sethangingratio"28=0.5 %
\sethangingratio"3002=1 %
@@ -602,7 +595,7 @@ microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가
\begin{quote}
\verb|$가^{나^다}$|\quad$\Rightarrow\quad가^{나^다}$
\end{quote}
-3.0 버전부터는\vernote{3.0}
+\vernote{3.0}부터는
자동으로 수식한글을 잡아주지 않으므로 사용자가 다음과 같이 명시적으로 선언해야 한다.
\begin{verbatim}
\setmathhangulfont{Noto Sans CJK KR}[
@@ -645,7 +638,7 @@ microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가
\end{verbatim}
\section{드러냄표}
-\keyword{dotemph}%
+\keyword{dotemph} 명령을 사용하는
\dotemph{드러냄표} 강조도 \kotex 과 대동소이하다.
기본은 글자 위에 점을 찍는 형태이나 다음 명령을 이용해 개인적으로 선호하는
기호를 드러냄표로 쓸 수 있다.
@@ -675,7 +668,7 @@ microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가
\section{밑줄긋기}
\LaTeX 에서는 \uwave{ulem 패키지}를 로드하는 것만으로 자동 지원된다.
-\cs{xetexkoulemsupport} 명령이 \vernote{3.3}3.3 버전부터 부활하였으므로
+\cs{xetexkoulemsupport} 명령이 \vernote{3.3}부터 부활하였으므로
플레인텍에서는 이 명령을 명시해야 할 경우가 있을 것이다.
@@ -687,6 +680,11 @@ microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가
\begin{small}\linespread{1.2}\selectfont
\begin{description}\itemsep=0pt
+ \item[v3.4] 2021-05-15
+ \begin{itemize}
+ \item \hyperref[sec:fontcmds]
+ {글꼴 전환 방식의 내부적 변화 및 그에 따른 플레인텍 한글 폰트 명령의 의미 변경}
+ \end{itemize}
\item[v3.3] 2021-04-20
\begin{itemize}
\item \cs{xetexkoulemsupport} 명령 부활
diff --git a/macros/xetex/generic/xetexko/xetexko.sty b/macros/xetex/generic/xetexko/xetexko.sty
index 67de1e2aa9..d2fc815549 100644
--- a/macros/xetex/generic/xetexko/xetexko.sty
+++ b/macros/xetex/generic/xetexko/xetexko.sty
@@ -16,7 +16,7 @@
\ifdefined\ProvidesPackage
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
- \ProvidesPackage{xetexko}[2021/04/20 v3.3 typesetting Korean with XeTeX]
+ \ProvidesPackage{xetexko}[2021/05/15 v3.4 typesetting Korean with XeTeX]
\else
\ifdefined\@tempcnta\else \newcount\@tempcnta \fi
\ifdefined\@gobble\else \def\@gobble#1{} \fi
@@ -357,9 +357,9 @@
}
\def\XeKo@Tchinese@classes{% these glyphs in traditional chinese fonts are center-aligned
\XeTeXcharclass "3001 = \XeTeXcharclassMD % 、
- \XeTeXcharclass "3002 = \XeTeXcharclassMD % 。
+ \XeTeXcharclass "3002 = \XeTeXcharclassLD % 。
\XeTeXcharclass "FF0C = \XeTeXcharclassMD % ,
- \XeTeXcharclass "FF0E = \XeTeXcharclassMD % .
+ \XeTeXcharclass "FF0E = \XeTeXcharclassLD % .
}
\chardef\XeKo@typesetvertical\z@
@@ -405,7 +405,8 @@
\protected\def\endhorizontal{%
\egroup
\XeKo@unrotatebox\z@
- \lower.5\ht\z@ \box\z@
+ \lower\dimexpr.5\ht\z@\ifdefined\xetexkocharraise-\xetexkocharraise\fi\relax
+ \box\z@
}
\def\XeKo@rotatebox#1{%
\setbox#1\hbox to\dimexpr\ht#1+\dp#1\bgroup
@@ -429,11 +430,22 @@
\egroup
}
\ifcsname ver@xetexko.sty\endcsname
- \def\verticaltypesetting{%
- \maxdepth\z@ \typesetvertical
- \dimen@\textwidth \textwidth\textheight \textheight\dimen@
- \edef\@outputpage{\unexpanded{\XeKo@rotatebox\@outputbox
- \textwidth\textheight}\unexpanded\expandafter{\@outputpage}}}
+ \IfFormatAtLeastTF{2021/06/01}{
+ \def\verticaltypesetting{%
+ \maxdepth\z@ \typesetvertical
+ \dimen@\textwidth \textwidth\textheight \textheight\dimen@
+ \AddToHook{cmd/@outputpage/before}{\XeKo@rotatebox\@outputbox \textwidth\textheight}%
+ \let\verticaltypesetting\relax % prevent multiple running
+ }
+ }{
+ \def\verticaltypesetting{%
+ \maxdepth\z@ \typesetvertical
+ \dimen@\textwidth \textwidth\textheight \textheight\dimen@
+ \edef\@outputpage{\unexpanded{\XeKo@rotatebox\@outputbox
+ \textwidth\textheight}\unexpanded\expandafter{\@outputpage}}%
+ \let\verticaltypesetting\relax % prevent multiple running
+ }
+ }
\else
\def\verticaltypesetting{%
\dimen@\hsize \hsize\vsize \vsize\dimen@
@@ -441,7 +453,9 @@
\unexpanded\expandafter{\plainoutput}}%
\def\pagebody{\setbox\z@\vbox to\hsize{\boxmaxdepth=\maxdepth
\pagecontents}\XeKo@rotatebox\z@\box\z@}%
- \maxdepth\z@ \typesetvertical }
+ \maxdepth\z@ \typesetvertical
+ \let\verticaltypesetting\relax % prevent multiple running
+ }
\fi
\protected\def\vertlatin#1{\leavevmode\lower.5ex\hbox{\latinmarks #1}} % compat
@@ -453,25 +467,38 @@
\let\xetexkointerhchar\XeKo@undefined
}
+\expandafter\let\expandafter\XeKo@latin@font\the\font
+
\def\XeKo@font@Hangul{%
+ \expandafter\ifx\the\font\XeKo@raw@hangul@font \else
+ \expandafter\ifx\the\font\XeKo@raw@hanja@font \else
+ \expandafter\let\expandafter\XeKo@latin@font\the\font
+ \fi\fi
\ifdefined\XeKo@hangul@font
\XeKo@reset@options
\XeKo@hangul@font
- \let\XeKo@curr@font\XeKo@hangul@font
+ \expandafter\let\expandafter\XeKo@raw@hangul@font\the\font
\fi
}
\def\XeKo@font@CJK{%
+ \expandafter\ifx\the\font\XeKo@raw@hangul@font \else
+ \expandafter\ifx\the\font\XeKo@raw@hanja@font \else
+ \expandafter\let\expandafter\XeKo@latin@font\the\font
+ \fi\fi
\ifdefined\XeKo@hanja@font
\XeKo@reset@options
\XeKo@hanja@font
- \let\XeKo@curr@font\XeKo@hanja@font
+ \expandafter\let\expandafter\XeKo@raw@hanja@font\the\font
\fi
}
\def\XeKo@font@Latin{%
- \ifdefined\XeKo@latin@font
+ \expandafter\ifx\the\font\XeKo@raw@hangul@font
\XeKo@latin@font
- \let\XeKo@curr@font\XeKo@latin@font
- \fi
+ \else \expandafter\ifx\the\font\XeKo@raw@hanja@font
+ \XeKo@latin@font
+ \else
+ \expandafter\let\expandafter\XeKo@latin@font\the\font
+ \fi\fi
}
\let\XeKo@fontHG\XeKo@font@Hangul
\let\XeKo@fontID\XeKo@font@CJK
@@ -539,14 +566,14 @@
\protected\def\hanjacolons {\let\XeKo@fontAM\XeKo@font@CJK}
\protected\def\hanjahyphens{\let\XeKo@fontAH\XeKo@font@CJK}
\protected\def\hanjacjksymbols{%
- \let\XeKo@fontSY\XeKo@font@Hanja
- \let\XeKo@fontOP\XeKo@font@Hanja
- \let\XeKo@fontCL\XeKo@font@Hanja
- \let\XeKo@fontMD\XeKo@font@Hanja
- \let\XeKo@fontFS\XeKo@font@Hanja
- \let\XeKo@fontEX\XeKo@font@Hanja
- \let\XeKo@fontLD\XeKo@font@Hanja
- \let\XeKo@fontVC\XeKo@font@Hanja
+ \let\XeKo@fontSY\XeKo@font@CJK
+ \let\XeKo@fontOP\XeKo@font@CJK
+ \let\XeKo@fontCL\XeKo@font@CJK
+ \let\XeKo@fontMD\XeKo@font@CJK
+ \let\XeKo@fontFS\XeKo@font@CJK
+ \let\XeKo@fontEX\XeKo@font@CJK
+ \let\XeKo@fontLD\XeKo@font@CJK
+ \let\XeKo@fontVC\XeKo@font@CJK
}
\protected\def\hanjamarks{%
\hanjaalphs\hanjaparens\hanjapuncts\hanjacolons\hanjahyphens\hanjacjksymbols
@@ -691,16 +718,20 @@
\def\XeKo@flush@char@orphan{\expandafter \XeKo@do@flush@toks \the\XeKo@toks@ii }
\def\XeKo@char@raise@start{%
\ifdefined\xetexkocharraise
- \ifx\XeKo@curr@font\XeKo@latin@font\else
+ \expandafter\ifx\the\font\XeKo@raw@hangul@font
\raise\xetexkocharraise\hbox\bgroup
- \fi
+ \else \expandafter\ifx\the\font\XeKo@raw@hanja@font
+ \raise\xetexkocharraise\hbox\bgroup
+ \fi\fi
\fi
}
\def\XeKo@char@raise@stop{%
\ifdefined\xetexkocharraise
- \ifx\XeKo@curr@font\XeKo@latin@font\else
+ \expandafter\ifx\the\font\XeKo@raw@hangul@font
\egroup
- \fi
+ \else \expandafter\ifx\the\font\XeKo@raw@hanja@font
+ \egroup
+ \fi\fi
\fi
}
\def\XeKo@do@flush@toks{%
@@ -973,12 +1004,9 @@
}
\def\XeKo@maybe@gobble{%
- \ifdefined\XeKo@curr@font\expandafter\XeKo@maybe@gobble@\fi
- }
-\let\XeKo@do@maybe@gobble\XeKo@maybe@gobble
-\def\XeKo@maybe@gobble@{%
\expandafter\expandafter\expandafter\@gobble
}
+\let\XeKo@do@maybe@gobble\XeKo@maybe@gobble
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassHG{%
\ifnum\lastnodetype=12 %
@@ -1102,7 +1130,7 @@
\or \unkern\unkern \XeKo@quarterquarter % MD AA
\or \unkern\unkern \XeKo@halfzero % FS AA
\or \unkern\unkern \XeKo@halfhalf % EX AA
- \or \unkern\unkern % LD AA
+ \or \unkern\unkern \XeKo@latincjk % LD AA
\or \unkern\unkern \XeKo@quarterquarter % VC AA
\fi
\fi
@@ -1126,7 +1154,7 @@
\or \unkern\unkern \XeKo@quarterquarter % MD AO
\or \unkern\unkern \XeKo@halfzero % FS AO
\or \unkern\unkern \XeKo@halfhalf % EX AO
- \or \unkern\unkern % LD AO
+ \or \unkern\unkern \XeKo@latincjk % LD AO
\or \unkern\unkern \XeKo@quarterquarter % VC AO
\fi
\fi
@@ -1518,8 +1546,8 @@
}
\def\XeKo@read@hanja@hangul@line{%
\read1 to \@tempa
- \ifnum\count@=\@tempcnta
- \global\count@\@tempa
+ \ifnum\XeKo@count@=\@tempcnta
+ \global\XeKo@count@\@tempa
\else
\advance\@tempcnta\@ne \expandafter\XeKo@read@hanja@hangul@line
\fi
@@ -1747,9 +1775,9 @@
\ifcsname ver@xetexko.sty\endcsname
\def\xetexkoulemsupport{%
\ifdefined\UL@hook
- \UL@hook\expandafter{%
- \the\UL@hook
+ \UL@hook\expandafter{\the\UL@hook
\let\XeKo@char@orphan\XeKo@flush@char@orphan
+ \let\XeKo@maybe@gobble\relax
% uline 안에서 폰트가 변경되는 경우를 대비
\expandafter\def\expandafter\XeKo@hangul@selectfont\expandafter{%
\XeKo@hangul@selectfont
@@ -1757,6 +1785,9 @@
\global\let\XeKo@temp@hangul@font\XeKo@hangul@font
\gdef\XeKo@UL@hangul@font{\let\XeKo@hangul@font\XeKo@temp@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
@@ -1765,13 +1796,6 @@
\gdef\XeKo@UL@hanja@font{\let\XeKo@hanja@font\XeKo@temp@hanja@font}%
\aftergroup\aftergroup\aftergroup\XeKo@UL@hanja@font
\fi }%
- \expandafter\def\expandafter\XeKo@latin@selectfont\expandafter{%
- \XeKo@latin@selectfont
- \ifdefined\XeKo@in@selectfont\else
- \global\let\XeKo@temp@latin@font\XeKo@latin@font
- \gdef\XeKo@UL@latin@font{\let\XeKo@latin@font\XeKo@temp@latin@font}%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@latin@font
- \fi }%
}%
\fi
}
@@ -1780,23 +1804,30 @@
\let\XeKo@UL@hanja@patch \relax
\def\xetexkoulemsupport{%
\ifdefined\UL@hook
- \UL@hook\expandafter{%
- \the\UL@hook
+ \UL@hook\expandafter{\the\UL@hook
\let\XeKo@char@orphan\XeKo@flush@char@orphan
+ \let\XeKo@maybe@gobble\relax
+ % uline 안에서 폰트가 변경되는 경우를 대비
\def\XeKo@UL@hangul@patch{%
\global\let\XeKo@temp@hangul@font\XeKo@hangul@font
- \global\let\XeKo@temp@latin@font\XeKo@latin@font
- \gdef\XeKo@UL@hangul@font{%
- \let\XeKo@hangul@font\XeKo@temp@hangul@font
- \let\XeKo@latin@font\XeKo@temp@latin@font }%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hangul@font }%
+ \gdef\XeKo@UL@hangul@font{\let\XeKo@hangul@font\XeKo@temp@hangul@font}%
+ \aftergroup\aftergroup\aftergroup\XeKo@UL@hangul@font
+ \XeKo@UL@latin@patch
+ }%
\def\XeKo@UL@hanja@patch{%
\global\let\XeKo@temp@hanja@font\XeKo@hanja@font
- \global\let\XeKo@temp@latin@font\XeKo@latin@font
- \gdef\XeKo@UL@hanja@font{%
- \let\XeKo@hanja@font\XeKo@temp@hanja@font
- \let\XeKo@latin@font\XeKo@temp@latin@font }%
- \aftergroup\aftergroup\aftergroup\XeKo@UL@hanja@font }%
+ \gdef\XeKo@UL@hanja@font{\let\XeKo@hanja@font\XeKo@temp@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
+ }%
}%
\fi
}
@@ -1817,14 +1848,6 @@
\afterassignment\XeKo@hangulfont@setup\font\XeKo@hangul@font
}
\def\XeKo@hangulfont@setup{%
- \ifdefined\XeKo@curr@font
- \ifx\XeKo@curr@font\XeKo@hangul@font\else
- \ifx\XeKo@curr@font\XeKo@hanja@font\else
- \expandafter\let\expandafter\XeKo@latin@font\the\font
- \fi\fi
- \else
- \expandafter\let\expandafter\XeKo@latin@font\the\font
- \fi
\edef\XeKo@hangul@font{%
\the\XeKo@hangul@font
\ifdefined\xetexkohu \def\noexpand\xetexkohu{\xetexkohu}\fi
@@ -1841,15 +1864,6 @@
}
\def\XeKo@sethangulfont@setup{%
\expandafter\edef\@tempa{%
- \let\noexpand\XeKo@latin@font=%
- \ifdefined\XeKo@curr@font
- \ifx\XeKo@curr@font\XeKo@hangul@font \the\XeKo@latin@font \else
- \ifx\XeKo@curr@font\XeKo@hanja@font \the\XeKo@latin@font \else
- \the\font
- \fi\fi
- \else
- \the\font
- \fi
\def\noexpand\XeKo@hangul@font{%
\csname XeKo@hangul@font@\@tempb\endcsname
\ifdefined\xetexkohu \def\noexpand\xetexkohu{\xetexkohu}\fi
@@ -1863,14 +1877,6 @@
\afterassignment\XeKo@hanjafont@setup\font\XeKo@hanja@font
}
\def\XeKo@hanjafont@setup{%
- \ifdefined\XeKo@curr@font
- \ifx\XeKo@curr@font\XeKo@hangul@font\else
- \ifx\XeKo@curr@font\XeKo@hanja@font\else
- \expandafter\let\expandafter\XeKo@latin@font\the\font
- \fi\fi
- \else
- \expandafter\let\expandafter\XeKo@latin@font\the\font
- \fi
\edef\XeKo@hanja@font{%
\the\XeKo@hanja@font
\ifdefined\xetexkohu \def\noexpand\xetexkohu{\xetexkohu}\fi
@@ -1887,15 +1893,6 @@
}
\def\XeKo@sethanjafont@setup{%
\expandafter\edef\@tempa{%
- \let\noexpand\XeKo@latin@font=%
- \ifdefined\XeKo@curr@font
- \ifx\XeKo@curr@font\XeKo@hangul@font \the\XeKo@latin@font \else
- \ifx\XeKo@curr@font\XeKo@hanja@font \the\XeKo@latin@font \else
- \the\font
- \fi\fi
- \else
- \the\font
- \fi
\def\noexpand\XeKo@hanja@font{%
\csname XeKo@hanja@font@\@tempb\endcsname
\ifdefined\xetexkohu \def\noexpand\xetexkohu{\xetexkohu}\fi
@@ -1959,28 +1956,37 @@
\latinalphs\latinparens\latinpuncts\latincolons\latinhyphens
\disablehangulspacing
}
-\edef\verbatim@font{%
- \unexpanded\expandafter{%
- \verbatim@font
+\IfFormatAtLeastTF{2021/06/01}{
+ \AddToHook{cmd/verbatim@font/after}{%
\disablehangulspacingandlinebreak
\aftergroup\enablehangulspacingandlinebreak
- }}
+ }
+}{
+ \edef\verbatim@font{%
+ \unexpanded\expandafter{%
+ \verbatim@font
+ \disablehangulspacingandlinebreak
+ \aftergroup\enablehangulspacingandlinebreak
+ }}
+}
\AddToHook{normalfont}{%
\let \xetexkohangulfont \xetexkodefaulthangulfont
\let \xetexkohanguloption \xetexkodefaulthanguloption
\let \xetexkohanjafont \xetexkodefaulthanjafont
\let \xetexkohanjaoption \xetexkodefaulthanjaoption
}
+\AddToHook{env/picture/begin}{%
+ \latinalphs\latinparens\latinpuncts\latincolons\latinhyphens
+ }
+
\IfHookExistsTF{selectfont}{
\AddToHook{selectfont}{%
- \XeKo@latin@selectfont
\XeKo@hanja@selectfont
\XeKo@hangul@selectfont
}
}{
\RequirePackage{everysel}
\EverySelectfont{%
- \XeKo@latin@selectfont
\XeKo@hanja@selectfont
\XeKo@hangul@selectfont
}
@@ -2016,16 +2022,6 @@
\let\XeKo@hanja@font\XeKo@undefined
\fi
\fi }
-\def\XeKo@latin@selectfont{%
- \ifdefined\XeKo@in@selectfont\else
- \begingroup
- \let\XeKo@in@selectfont\empty
- \selectfont
- \edef\x{\endgroup
- \def\noexpand\XeKo@latin@font{\the\font}%
- }\x
- \fi
- }
\ExplSyntaxOn
\tl_new:N \l_xtxko_font_opts_tl
@@ -2094,7 +2090,6 @@
\cs_set_eq:NN \xetexkohanguloption \xetexkomainhanguloption
\cs_set_eq:NN \xetexkodefaulthangulfont \xetexkomainhangulfont
\cs_set_eq:NN \xetexkodefaulthanguloption \xetexkomainhanguloption
- \XeKo@latin@selectfont
\XeKo@hangul@selectfont
}
\ignorespaces
@@ -2114,7 +2109,6 @@
\cs_set_eq:NN \xetexkohanguloption \xetexkosanshanguloption
\cs_set_eq:NN \xetexkodefaulthangulfont \xetexkosanshangulfont
\cs_set_eq:NN \xetexkodefaulthanguloption \xetexkosanshanguloption
- \XeKo@latin@selectfont
\XeKo@hangul@selectfont
}
\ignorespaces
@@ -2134,7 +2128,6 @@
\cs_set_eq:NN \xetexkohanguloption \xetexkomonohanguloption
\cs_set_eq:NN \xetexkodefaulthangulfont \xetexkomonohangulfont
\cs_set_eq:NN \xetexkodefaulthanguloption \xetexkomonohanguloption
- \XeKo@latin@selectfont
\XeKo@hangul@selectfont
}
\ignorespaces
@@ -2221,7 +2214,6 @@
\cs_set_eq:NN \xetexkohanjaoption \xetexkomainhanjaoption
\cs_set_eq:NN \xetexkodefaulthanjafont \xetexkomainhanjafont
\cs_set_eq:NN \xetexkodefaulthanjaoption \xetexkomainhanjaoption
- \XeKo@latin@selectfont
\XeKo@hanja@selectfont
}
\ignorespaces
@@ -2241,7 +2233,6 @@
\cs_set_eq:NN \xetexkohanjaoption \xetexkosanshanjaoption
\cs_set_eq:NN \xetexkodefaulthanjafont \xetexkosanshanjafont
\cs_set_eq:NN \xetexkodefaulthanjaoption \xetexkosanshanjaoption
- \XeKo@latin@selectfont
\XeKo@hanja@selectfont
}
\ignorespaces
@@ -2261,7 +2252,6 @@
\cs_set_eq:NN \xetexkohanjaoption \xetexkomonohanjaoption
\cs_set_eq:NN \xetexkodefaulthanjafont \xetexkomonohanjafont
\cs_set_eq:NN \xetexkodefaulthanjaoption \xetexkomonohanjaoption
- \XeKo@latin@selectfont
\XeKo@hanja@selectfont
}
\ignorespaces