From 9d91b3ba4871c0bae18f2fcc916da52c06694c01 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 11 Apr 2021 21:40:05 +0000 Subject: xetexko git-svn-id: svn://tug.org/texlive/trunk@58840 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/xetex/xetexko/ChangeLog | 10 + Master/texmf-dist/doc/xetex/xetexko/README | 2 +- .../texmf-dist/doc/xetex/xetexko/xetexko-doc.pdf | Bin 244622 -> 251319 bytes .../texmf-dist/doc/xetex/xetexko/xetexko-doc.tex | 121 ++++---- Master/texmf-dist/tex/xetex/xetexko/xetexko.sty | 343 +++++++++++---------- 5 files changed, 252 insertions(+), 224 deletions(-) diff --git a/Master/texmf-dist/doc/xetex/xetexko/ChangeLog b/Master/texmf-dist/doc/xetex/xetexko/ChangeLog index f8e4013e58b..cdad25a5664 100644 --- a/Master/texmf-dist/doc/xetex/xetexko/ChangeLog +++ b/Master/texmf-dist/doc/xetex/xetexko/ChangeLog @@ -1,3 +1,13 @@ +2021-04-08 Dohyun Kim + + Version 3.2 + + * fix ulem package support + * \hangingpunctuation does not work with quotes by default. + * new commands \sethangingratio, \unsethangingratio added. + * \disablehangulspacing will remove \penalty between Hangul + characters. + 2021-03-22 Dohyun Kim Version 3.1 diff --git a/Master/texmf-dist/doc/xetex/xetexko/README b/Master/texmf-dist/doc/xetex/xetexko/README index 50575ee4a2c..c311723be57 100644 --- a/Master/texmf-dist/doc/xetex/xetexko/README +++ b/Master/texmf-dist/doc/xetex/xetexko/README @@ -1,4 +1,4 @@ -XeTeX-ko Package version 3.1 (2021/03/22) +XeTeX-ko Package version 3.2 (2021/04/08) ========================================= XeTeX-ko is a macro package for Xe(La)TeX which supports typesetting diff --git a/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.pdf b/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.pdf index 7d5f60a656a..c03bfa8a4db 100644 Binary files a/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.pdf and b/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.pdf differ diff --git a/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.tex b/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.tex index 481a2a0a570..616c9fcc5bc 100644 --- a/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.tex +++ b/Master/texmf-dist/doc/xetex/xetexko/xetexko-doc.tex @@ -41,7 +41,6 @@ {\setbox0=\vbox\bgroup\hsize=\dimexpr\textwidth-12pt\relax \hrule width0pt\kern5pt\par\small \parindent0pt } -% \noindent} {\par \vskip-\lastskip\kern5pt\hrule width0pt\egroup \par\medskip\par \dimen0=\dimexpr\pagegoal-\pagetotal\relax \ifdim\dimen0<2\baselineskip\relax \dimen0\maxdimen \fi @@ -56,8 +55,8 @@ \newenvironment{example} {\hbox\bgroup\grayvrule \vbox\bgroup\hsize\dimexpr\textwidth-4pt\relax - \grayhrule\kern1em\leftskip1em\rightskip1em - }{\par\kern1em\grayhrule\egroup\grayvrule\egroup} + \grayhrule\kern5pt\leftskip10pt\rightskip10pt + }{\par\kern5pt\grayhrule\egroup\grayvrule\egroup} \def\cs#1{\texttt{\textbackslash #1}} \def\hemph#1{\textsf{\bfseries #1}} \def\hparen#1{{\small\hangulparens(#1)}} @@ -71,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.1\quad 2021/03/22} +\date{Version 3.2\quad 2021/04/08} \maketitle \begin{quote}\small @@ -217,7 +216,7 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. 현재 폰트가 직전 문자의 폰트가 아닐 수 있음에 주의할 것. 옵션 키의 종류와 의미는 다음과 같으며 각 키 값은 인자의 경우와 같다. -\begin{description}\itemsep0pt\hangulparens +\begin{description}\itemsep0pt \item[alphs] 라틴 알파벳, 숫자, 아래에 해당않는 모든 non-CJK 문자 \item[parens] 라틴 괄호, 중괄호, 대괄호, 꺽쇠, 인용부호 및 그 리거쳐 \item[colons] 라틴 콜론, 세미콜론 @@ -229,15 +228,17 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. 종전에\vernote{3.0} 라틴숫자에 적용되던 \verb|nums| 옵션과 라틴 인용부호에 적용되던 \verb|quotes| 옵션이 -3.0버전부터는 +3.0 버전부터는 각각 \verb|alphs| 옵션과 \verb|parens| 옵션에 통합되었음에 유의하라. 또한\vernote{3.0} en dash, em dash가 종래 \verb|colons|에 속하던 것이 이제 -\verb|hyphens|에 속하게 되었음도 주의하라. +\verb|hyphens|에 속하게 되었다. 기본값은 다음 명령을 준 것과 동일하다. +v3.0부터\vernote{3.0} 괄호류의 기본글꼴이 한글이 되었음도 유의하라. \begin{verbatim} \xetexkofontregime {latin}% - [ puncts=prevfont, colons=prevfont, cjksymbols=hangul ] + [ puncts=prevfont, colons=prevfont, + parens=hangul, cjksymbols=hangul ] \end{verbatim} \begin{plaintex} 플레인텍에서는 다음 명령을 사용한다. \LaTeX에서도 쓸 수 있다. @@ -255,7 +256,7 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. \end{verbatim} \end{plaintex} -\section{간격 조정 옵션}\label{sec:fontopts} +\section{글꼴 옵션}\label{sec:fontopts} \dotemph{고정폭 글꼴을 제외한} 한글·한자 글꼴 명령에 미세 간격 옵션을 쓸 수 있다. 예컨대 \begin{verbatim} @@ -282,25 +283,19 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. \item[CharRaise, charraise]\quad 글자의 {\addhangulfontfeature{charraise=.5ex}수직 위치}를 조절한다. 기본값은 \verb|0pt|. + 고정폭 글꼴에서도 이 옵션은 작동한다. \end{description} -3.0버전부터는\vernote{3.0} 다음 옵션들이 아무 효과도 가져오지 않게 +3.0 버전부터는\vernote{3.0} 다음 옵션들이 아무 효과도 가져오지 않게 변경되었음을 주의하라. \begin{verbatim} - lowerperiod, PunctRaise - lowerquestion - lowerexclamation - lowercomma - preperiodkern - postperiodkern - prequestionkern - postquestionkern - preexclamationkern - postexclamationkern - precommakern - postcommakern - quoteraise - quotewidth - postmathskip + lowerperiod lowerquestion + lowerexclamation lowercomma + preperiodkern postperiodkern + prequestionkern postquestionkern + preexclamationkern postexclamationkern + precommakern postcommakern + quoteraise quotewidth + postmathskip PunctRaise \end{verbatim} \begin{plaintex} @@ -356,10 +351,12 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. 줄바꿈까지도 먹지 않게 한다. 일부 고급 오픈타입 기능을 사용하기 위해서 이 명령이 필요할 때가 있다. 이를테면, 폰트가 지원하는 한글 리거쳐가 동작하지 않을 때 이 명령을 - 선언하면 문제가 해결된다. - - \cs{enablehangulspacingandlinebreak}는 이 명령의 효력을 원래대로 - 되돌리는 기능을 한다. + 선언하면 문제가 해결된다.% + \footnote{% + 이 명령은 그룹 안에서 실행해야 할 것이다. 그렇더라도 + \cs{enablehangulspacingandlinebreak} 명령을 그룹을 닫고나서 선언해야 + 원래 기능이 완전히 복구된다. + } \end{description} 3.0 버전부터는\vernote{3.0} 종전의 @@ -376,8 +373,6 @@ fontspec과 마찬가지로 각 명령의 끝에 `s'를 붙여도 된다. Source Han Serif (본명조), Noto Sans CJK, Noto Serif CJK, 나눔명조옛한글, 나눔바른고딕옛한글, KoPubWorld 바탕, KoPubWorld 돋움 등이 있다. 또한 -%%% BUG: \char를 이용하여 옛한글을 찍으면 자모가 분리된다. -%%% 코드 수정 요망. \textsf{^^^^1112^^^^119e^^^^11ab글}에 번들된 함초롬 글꼴에도 최근 옛한글 지원이 추가되었다.} @@ -427,12 +422,13 @@ vertical 환경의 인자는 세로쓰기 박스의 세로 길이이다. \begin{figure} \begin{example} \hfil\begin{vertical}{18em} - \spaceskip=.5em plus .08em minus .04em - \sffamily\addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex, - RawFeature=vertical} - \hanjabyhangulfont \parindent-1em\leftskip1em + \linespread{1.5}\sffamily + \addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex,RawFeature=vertical} + \hanjabyhangulfont \typesetclassic \latinparens - \noindent 님의 침묵 (The Silent Beloved) + \parindent0pt \everypar{\hangindent1em \hangafter1 } + \spaceskip=.5em plus .25em minus .125em + \quad 님의 침묵 (The Silent Beloved) \smallbreak \hfil\hfil 한 용 운\hfil \bigbreak @@ -449,7 +445,7 @@ vertical 환경의 인자는 세로쓰기 박스의 세로 길이이다. 세로쓰기 보기.\quad \sffamily\small Noto Sans CJK KR 글꼴을 이용했다. 이 글꼴의 세로쓰기 어간이 1em으로 - 매우 커서 \cs{spaceskip=0.5em plus.08em minus.04em}을 강제했다. + 매우 커서 \cs{spaceskip=0.5em plus.25em minus.125em}을 강제했다. \texttt{CharRaise=.5ex}도 글꼴 옵션에 추가했다. 또한 \cs{latinparens}를 선언했는데 제목 다음의 괄호가 CJK 괄호가 아니라 아스키 괄호이기 때문이다. @@ -540,11 +536,10 @@ horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한 \begin{figure} \begin{example}\linespread{1.3} - \hfil\begin{vertical}{18em} - \sffamily\typesetclassic - \addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex, - RawFeature=vertical} - \hanjabyhangulfont \parindent-1em\leftskip1em + \hfil\begin{vertical}{19em} + \linespread{1.5}\sffamily\typesetclassic + \addhangulfontfeatures{Vertical=Alternates,CharRaise=.5ex,RawFeature=vertical} + \hanjabyhangulfont \parindent0pt \everypar{\hangindent1em \hangafter1 } \analect \end{vertical}\hfil \end{example} @@ -557,15 +552,36 @@ horizontal 환경에는 가로쓰기 박스의 너비를 인자로 주어야 한 \end{figure} \section{매달린 구두점} -마침표, 쉼표, 인용부호를 판면 바깥에 식자하여 행 끝에 매달리게 만든다. +\hemph{하이픈을 제외한} 문장부호들를 판면 바깥에 식자하여 행 끝에 매달리게 만들 수 있다. 3.0 버전부터는\vernote{3.0} \keyword{hangingpunctuations}% \cs{hangingpunctuations} 명령으로 활성화한다. \cs{hangingpunctuation}은 이 명령과 동의어이다. -당분간 xetexko-hanging.sty 을 로드하는 것으로도 활성화되도록 해 두었다. +당분간 xetexko-hanging.sty을 로드하는 것으로도 활성화되도록 해 두었다. +이렇게 활성화되면 기본값으로 온점, 반점, 고리점, 모점에 대해서 전부 내밀기가 작동한다. + +3.2 버전부터는\vernote{3.2} 사용자가 원하는 문장부호를 원하는 만큼 판면 밖으로 내밀 수 있다. +\begin{verbatim} + \sethangingratio"28=0.5 % + \sethangingratio"3002=1 % +\end{verbatim} +등호 앞의 숫자는 유니코드 코드포인트이고 뒤의 숫자는 글자폭에 대한 비율을 뜻한다. +따라서 위 예는 여는괄호(U+0028)를 절반만 내밀고 고리점(U+3002)은 완전히 밀어내라는 지시다. +어느 방향으로 내밀지는 \xetexko 가 알아서 판단한다. +이러한 지시를 취소하려면, +\begin{verbatim} + \unsethangingratio"28 + \unsethangingratio"3002 +\end{verbatim} -글자 내밀기 기본값에 차이가 좀 있긴 하지만, -microtype 패키지를 로드하는 것으로도 유사한 결과를 얻을 수 있다. +microtype 패키지의 protrusion 기능이 잘 작동하지 않는 경우가 있어,% +\footnote{% + 원시명령 \cs{lpcode} \cs{rpcode} 등 엔진이 제공하는 기능을 말한다. + 이들 원시명령에는 글리프 인덱스를 지시해야 하는데 어떤 글자의 글리프 인덱스를 + 알아내는 일은 간단치가 않다. + \XeTeX\ reference guide를 참고하라. + } +어쩔 수 없이 제공하게 되었으므로 예외적으로만 사용할 것을 권한다. %\begin{figure} %\Large @@ -574,15 +590,11 @@ microtype 패키지를 로드하는 것으로도 유사한 결과를 얻을 수 %\vbox{\hfil\hbox{\vrule\vbox{\hsize\wd0 % 줄 끝에 매달린 구두점. % 줄 끝에 매달린 구두점, -% ``줄 끝에 매달린 구두점'' -% `줄 끝에 매달린 구두점' -% “줄 끝에 매달린 구두점” -% ‘줄 끝에 매달린 구두점’ % 줄 끝에 매달린 구두점、 % 줄 끝에 매달린 구두점。 % 줄 끝에 매달린 구두점 % }\vrule}\hfil} -%\caption{매달린 구두점 보기}\label{fig:hanging} +%\caption{기본값이 적용된 매달린 구두점}\label{fig:hanging} %\end{figure} \section{수식 한글} @@ -661,7 +673,7 @@ microtype 패키지를 로드하는 것으로도 유사한 결과를 얻을 수 따위를 사용한다. \section{밑줄긋기} -\LaTeX에서는 \uwave{ulem 패키지}를 로드하는 것만으로 자동 지원된다. +\uwave{ulem 패키지}를 로드하는 것만으로 자동 지원된다. 3.0 버전부터는\vernote{3.0} \cs{xetexkoulemsupport} 선언이 불필요하게 되었다. 이 명령은 호환성을 위해 남겨두었으나 아무 일도 @@ -675,6 +687,11 @@ microtype 패키지를 로드하는 것으로도 유사한 결과를 얻을 수 \begin{small}\linespread{1.2}\selectfont \begin{description}\itemsep=0pt + \item[v3.2] 2021-04-08 + \begin{itemize} + \item 매달린 구두점이 기본값으로 따옴표에는 작동하지 않고 마침표^^b7쉼표에만 작동한다. + \item \cs{sethangingratio}, \cs{unsethangingratio} 명령 추가 + \end{itemize} \item[v3.1] 2021-03-22 \begin{itemize} \item 플레인텍 명령 \cs{sethangulfont}, \cs{sethanjafont} 추가 diff --git a/Master/texmf-dist/tex/xetex/xetexko/xetexko.sty b/Master/texmf-dist/tex/xetex/xetexko/xetexko.sty index 9b155d3c737..63108b667c2 100644 --- a/Master/texmf-dist/tex/xetex/xetexko/xetexko.sty +++ b/Master/texmf-dist/tex/xetex/xetexko/xetexko.sty @@ -16,7 +16,7 @@ \ifdefined\ProvidesPackage \NeedsTeXFormat{LaTeX2e}[2020/10/01] - \ProvidesPackage{xetexko}[2021/03/22 v3.1 typesetting Korean with XeTeX] + \ProvidesPackage{xetexko}[2021/04/08 v3.2 typesetting Korean with XeTeX] \else \ifdefined\@tempcnta\else \newcount\@tempcnta \fi \ifdefined\@gobble\else \def\@gobble#1{} \fi @@ -524,20 +524,21 @@ \expandafter\let\csname XeKo@1@class\endcsname =\XeTeXcharclassHG \expandafter\let\csname XeKo@2@class\endcsname =\XeTeXcharclassID -\expandafter\let\csname XeKo@3@class\endcsname =\XeTeXcharclassSY -\expandafter\let\csname XeKo@4@class\endcsname =\XeTeXcharclassAA -\expandafter\let\csname XeKo@5@class\endcsname =\XeTeXcharclassAO -\expandafter\let\csname XeKo@6@class\endcsname =\XeTeXcharclassAC -\expandafter\let\csname XeKo@7@class\endcsname =\XeTeXcharclassAP -\expandafter\let\csname XeKo@8@class\endcsname =\XeTeXcharclassAM -\expandafter\let\csname XeKo@9@class\endcsname =\XeTeXcharclassAH -\expandafter\let\csname XeKo@10@class\endcsname=\XeTeXcharclassOP -\expandafter\let\csname XeKo@11@class\endcsname=\XeTeXcharclassCL -\expandafter\let\csname XeKo@12@class\endcsname=\XeTeXcharclassMD -\expandafter\let\csname XeKo@13@class\endcsname=\XeTeXcharclassFS -\expandafter\let\csname XeKo@14@class\endcsname=\XeTeXcharclassEX -\expandafter\let\csname XeKo@15@class\endcsname=\XeTeXcharclassLD -\expandafter\let\csname XeKo@16@class\endcsname=\XeTeXcharclassVC +% 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 \newtoks\XeKo@toks@ \newtoks\XeKo@toks@ii @@ -551,7 +552,8 @@ \ifnum\XeKo@charslot="FFFF % 다음 한 줄이 없으면 한글과 한글 사이에 폰트가 변경되는 경우 글자 누락. % 폰트 변경은 kern 에 아무 영향을 주지 않기 때문. - \def\XeKo@maybe@gobble{\def\XeKo@maybe@gobble{\expandafter\expandafter\expandafter\@gobble}}% + \def\XeKo@maybe@gobble{\def\XeKo@maybe@gobble{% + \ifdefined\XeKo@curr@font\expandafter\XeKo@maybe@gobble@\fi }}% \expandafter\XeKo@flush@toks \else \ifnum\XeKo@currclass>\tw@ @@ -579,11 +581,11 @@ \fi } \def\XeKo@addto@toks#1{% - \ifnum\XeKo@currclass=4 % AA + \ifnum\XeKo@currclass=5 % AA \global\let\XeKo@josatoken=#1\relax \else\ifnum\XeTeXcharclass\XeKo@charslot=\XeTeXcharclassJJ \global\let\XeKo@josatoken=#1\relax - \else\ifnum\XeKo@currclass=\thr@@ % SY + \else\ifnum\XeKo@currclass=4 % SY \global\let\XeKo@josatoken=#1\relax \fi\fi\fi \XeKo@toks@\expandafter{\the\XeKo@toks@ #1}% @@ -682,8 +684,8 @@ } % remove space \def\XeKo@maybe@ignorespaces{% - \ifnum 0\ifnum\XeKo@currclass<4 1\else % HG ID SY - \ifnum\XeKo@currclass>9 1\fi\fi % CJK punctuations + \ifnum 0\ifnum\XeKo@currclass<5 1\else % HG ID SY + \ifnum\XeKo@currclass>10 1\fi\fi % CJK punctuations >\z@ \expandafter\XeKo@ignorespaces@iv \fi @@ -708,6 +710,61 @@ \protected\def\hangingpunctuation{\chardef\XeKo@hangingpuncts\@ne } \let\hangingpunctuations\hangingpunctuation +\protected\def\sethangingratio#1=#2 {% + \expandafter\def\csname XeKo@hanging@ratio@\number#1\endcsname{#2}% + } +\protected\def\unsethangingratio{\afterassignment\unsethangingratio@\count@= } +\def\unsethangingratio@{% + \expandafter\let\csname XeKo@hanging@ratio@\number\count@\endcsname\XeKo@undefined + } +\def\XeKo@def@pre@hang#1{% + \ifnum\XeKo@hangingpuncts=\@ne + \ifcsname XeKo@hanging@ratio@\number`#1\endcsname + \ifnum 0\ifnum\XeKo@compresspuncts=\@ne + \ifnum\XeKo@currclass=11 % OP + 1\fi\fi >\z@ + \XeKo@dimen@=.5em + \else + \setbox\XeKo@box@\hbox{\XeTeXinterchartokenstate\z@ #1}% + \XeKo@dimen@=\wd\XeKo@box@ + \fi + \XeKo@dimen@=\csname XeKo@hanging@ratio@\number`#1\endcsname\XeKo@dimen@ + \edef\XeKo@pre@hang{% + \kern\the\XeKo@dimen@ + \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ + }% + \fi + \fi + } +\def\XeKo@def@post@hang#1{% + \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 + 1\fi\fi\fi >\z@ + \XeKo@dimen@=.5em + \else + \setbox\XeKo@box@\hbox{\XeTeXinterchartokenstate\z@ #1}% + \XeKo@dimen@=\wd\XeKo@box@ + \fi + \XeKo@dimen@=\csname XeKo@hanging@ratio@\number`#1\endcsname\XeKo@dimen@ + \edef\XeKo@post@hang{% + \noexpand\XeKo@count@\noexpand\spacefactor + \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ + \kern\the\XeKo@dimen@ + \noexpand\spacefactor\noexpand\XeKo@count@ + }% + \fi + \fi + } +\sethangingratio"2C=1 % , 반점 +\sethangingratio"2E=1 % . 온점 +\sethangingratio"3001=1 % 、 모점 +\sethangingratio"3002=1 % 。 고리점 +\sethangingratio"FF0C=1 % , 전각반점 +\sethangingratio"FF0E=1 % . 전각온점 + % compress CJK punctuations to .5em \protected\def\compresspunctuations{\chardef\XeKo@compresspuncts\@ne } \protected\def\nocompresspunctuations{\chardef\XeKo@compresspuncts\z@ } @@ -747,200 +804,140 @@ \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{3}% + \def\XeKo@currclass{4}% \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{4}% + \def\XeKo@currclass{5}% \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{5}% + \def\XeKo@currclass{6}% \XeKo@toks@{#1}% - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum`#1="60 % ` - \XeKo@dimen@=\fontcharwd\font"60 % - \edef\XeKo@pre@hang{% - \kern\the\XeKo@dimen@ - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - }% - \fi - \fi + \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{6}% + \def\XeKo@currclass{7}% \XeKo@toks@{#1}% - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum`#1="27 % ' - \XeKo@dimen@=\fontcharwd\font"27 % - \edef\XeKo@post@hang{% - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - \kern\the\XeKo@dimen@ - }% - \fi - \fi + \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{7}% + \def\XeKo@currclass{8}% \XeKo@toks@{#1}% - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum 0\ifnum`#1="2E 1\else % . , - \ifnum`#1="2C 1\fi\fi >\z@ - \XeKo@dimen@=\fontcharwd\font`#1 % - \edef\XeKo@post@hang{% - \noexpand\XeKo@count@\noexpand\spacefactor - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - \kern\the\XeKo@dimen@ - \noexpand\spacefactor\noexpand\XeKo@count@ - }% - \fi - \fi + \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{8}% + \def\XeKo@currclass{9}% \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{9}% + \def\XeKo@currclass{10}% \XeKo@toks@{#1}% + \ifnum`#1=\hyphenchar\font \else % exclude hyphen char + \XeKo@def@post@hang{#1}% + \fi \XeKo@check@next@tok } \def\XeKo@startOP#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{10}% + \def\XeKo@currclass{11}% \ifnum\XeKo@compresspuncts=\@ne \XeKo@toks@{\hbox to.5em\bgroup\hss #1\egroup}% \else \XeKo@toks@{#1}% \fi - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum0\ifnum`#1="2018 1\else % ‘ “ - \ifnum`#1="201C 1\fi\fi >\z@ - \ifnum\XeKo@compresspuncts=\@ne - \XeKo@dimen@=.5em - \else - \XeKo@dimen@=\fontcharwd\font`#1 % - \fi - \ifnum`#1="201C % - \XeKo@dimen@=.5\XeKo@dimen@ - \fi - \edef\XeKo@pre@hang{% - \kern\the\XeKo@dimen@ - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - }% - \fi - \fi + \XeKo@def@pre@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startCL#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{11}% + \def\XeKo@currclass{12}% \ifnum\XeKo@compresspuncts=\@ne \XeKo@toks@{\hbox to.5em\bgroup #1\hss\egroup}% \else \XeKo@toks@{#1}% \fi - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum 0\ifnum`#1="2019 1\else % ’ ” 、 , - \ifnum`#1="201D 1\else - \ifnum`#1="3001 1\else - \ifnum`#1="FF0C 1\fi\fi\fi\fi >\z@ - \ifnum\XeKo@compresspuncts=\@ne - \XeKo@dimen@=.5em - \else - \XeKo@dimen@=\fontcharwd\font`#1 % - \fi - \ifnum`#1="201D % - \XeKo@dimen@=.5\XeKo@dimen@ - \fi - \edef\XeKo@post@hang{% - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - \kern\the\XeKo@dimen@ - }% - \fi - \fi + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startMD#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{12}% + \def\XeKo@currclass{13}% \ifnum\XeKo@compresspuncts=\@ne \XeKo@toks@{\hbox to.5em\bgroup\hss #1\hss\egroup}% \else \XeKo@toks@{#1}% \fi + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startFS#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{13}% + \def\XeKo@currclass{14}% \ifnum\XeKo@compresspuncts=\@ne \XeKo@toks@{\hbox to.5em\bgroup #1\hss\egroup}% \else \XeKo@toks@{#1}% \fi - \ifnum\XeKo@hangingpuncts=\@ne - \ifnum 0\ifnum`#1="3002 1\else % 。 . - \ifnum`#1="FF0E 1\fi\fi >\z@ - \ifnum\XeKo@compresspuncts=\@ne - \XeKo@dimen@=.5em - \else - \XeKo@dimen@=\fontcharwd\font`#1 % - \fi - \edef\XeKo@post@hang{% - \vrule width-\the\XeKo@dimen@ height\z@ depth\z@ - \kern\the\XeKo@dimen@ - }% - \fi - \fi + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startEX#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{14}% + \def\XeKo@currclass{15}% \XeKo@toks@{#1}% + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startLD#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{15}% + \def\XeKo@currclass{16}% \XeKo@toks@{#1}% + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } \def\XeKo@startVC#1{% \let\XeKo@pre@hang\XeKo@undefined \let\XeKo@post@hang\XeKo@undefined - \def\XeKo@currclass{16}% + \def\XeKo@currclass{17}% \XeKo@toks@{#1}% + \XeKo@def@post@hang{#1}% \XeKo@do@flush@toks } -\def\XeKo@maybe@gobble{\expandafter\expandafter\expandafter\@gobble} +\def\XeKo@maybe@gobble{% + \ifdefined\XeKo@curr@font\expandafter\XeKo@maybe@gobble@\fi + } +\def\XeKo@maybe@gobble@{% + \expandafter\expandafter\expandafter\@gobble + } \XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassHG{% \ifnum\lastnodetype=12 % \ifcase\lastkern \or \unkern\unkern \XKinterhangulbreak \XeKo@maybe@gobble % HG HG \or \unkern\unkern \XKinterhanjabreak % ID HG + \or \or \unkern\unkern % SY HG \or \unkern\unkern \XeKo@latincjk % AA HG \or \unkern\unkern \XeKo@nobreak % AO HG \or \unkern\unkern \XeKo@latincjk % AC HG \or \unkern\unkern \XeKo@latincjk % AP HG \or \unkern\unkern \XeKo@latincjk % AM HG - \or \unkern\unkern % AH HG + \or \unkern\unkern \XKinterhanjabreak % AH HG \or \unkern\unkern % OP HG \or \unkern\unkern \XeKo@halfhalf % CL HG \or \unkern\unkern \XeKo@quarterquarter % MD HG @@ -959,13 +956,14 @@ \ifcase\lastkern \or \unkern\unkern \XKinterhanjabreak % HG ID \or \unkern\unkern \XKinterhanjabreak \XeKo@maybe@gobble % ID ID + \or \or \unkern\unkern % SY ID \or \unkern\unkern \XeKo@latincjk % AA ID \or \unkern\unkern \XeKo@nobreak % AO ID \or \unkern\unkern \XeKo@latincjk % AC ID \or \unkern\unkern \XeKo@latincjk % AP ID \or \unkern\unkern \XeKo@latincjk % AM ID - \or \unkern\unkern % AH ID + \or \unkern\unkern \XKinterhanjabreak % AH ID \or \unkern\unkern % OP ID \or \unkern\unkern \XeKo@halfhalf % CL ID \or \unkern\unkern \XeKo@quarterquarter % MD ID @@ -983,14 +981,15 @@ \ifnum\lastnodetype=12 % \ifcase\lastkern \or \unkern\unkern \XKinterhanjabreak % HG CJ - \or \unkern\unkern \penalty5000\XKinterhanjabreak \XeKo@maybe@gobble % ID CJ + \or \unkern\unkern \XKinterhanjabreak\XeKo@suppress@char@orphan \XeKo@maybe@gobble % ID CJ + \or \or \unkern\unkern % SY CJ \or \unkern\unkern \XeKo@latincjk % AA CJ \or \unkern\unkern \XeKo@nobreak % AO CJ \or \unkern\unkern \XeKo@latincjk % AC CJ \or \unkern\unkern \XeKo@latincjk % AP CJ \or \unkern\unkern \XeKo@latincjk % AM CJ - \or \unkern\unkern % AH CJ + \or \unkern\unkern \XKinterhanjabreak % AH CJ \or \unkern\unkern % OP CJ \or \unkern\unkern \XeKo@halfhalf % CL CJ \or \unkern\unkern \XeKo@quarterquarter % MD CJ @@ -1009,6 +1008,7 @@ \ifcase\lastkern \or \unkern\unkern % HG SY \or \unkern\unkern % ID SY + \or \or \unkern\unkern \XeKo@maybe@gobble % SY SY \or \unkern\unkern % AA SY \or \unkern\unkern \XeKo@nobreak % AO SY @@ -1034,6 +1034,7 @@ \ifcase\lastkern \or \unkern\unkern \XeKo@latincjk % HG AA \or \unkern\unkern \XeKo@latincjk % ID AA + \or \or \unkern\unkern % SY AA \or \unkern\unkern \XeKo@maybe@gobble % AA AA \or \unkern\unkern % AO AA @@ -1057,6 +1058,7 @@ \ifcase\lastkern \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 \XeKo@maybe@gobble % AO AO @@ -1080,6 +1082,7 @@ \ifcase\lastkern \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 @@ -1103,6 +1106,7 @@ \ifcase\lastkern \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 @@ -1126,6 +1130,7 @@ \ifcase\lastkern \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 @@ -1147,22 +1152,23 @@ \XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassAH{% \ifnum\lastnodetype=12 % \ifcase\lastkern - \or \unkern\unkern \XeKo@nobreak % HG AH - \or \unkern\unkern \XeKo@nobreak % ID AH - \or \unkern\unkern \XeKo@nobreak % SY AH - \or \unkern\unkern % AA AH - \or \unkern\unkern % AO AH - \or \unkern\unkern % AC AH - \or \unkern\unkern % AP AH - \or \unkern\unkern % AM AH + \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 + \or \unkern\unkern % AC AH + \or \unkern\unkern % AP AH + \or \unkern\unkern % AM AH \or \unkern\unkern \XeKo@maybe@gobble % AH AH - \or \unkern\unkern % OP AH - \or \unkern\unkern \XeKo@nobreak % CL AH - \or \unkern\unkern \XeKo@nobreak % MD AH - \or \unkern\unkern \XeKo@nobreak % FS AH - \or \unkern\unkern \XeKo@nobreak % EX AH - \or \unkern\unkern \XeKo@nobreak % LD AH - \or \unkern\unkern \XeKo@nobreak % VC AH + \or \unkern\unkern % OP AH + \or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % CL AH + \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD AH + \or \unkern\unkern \XeKo@nobreak\XeKo@halfzero % FS AH + \or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % EX AH + \or \unkern\unkern \XeKo@nobreak % LD AH + \or \unkern\unkern \XeKo@nobreak % VC AH \fi \fi \XeKo@fontAH\XeKo@startAH @@ -1172,13 +1178,14 @@ \ifcase\lastkern \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 \or \unkern\unkern \XeKo@halfhalf % AC OP \or \unkern\unkern \XeKo@halfhalf % AP OP \or \unkern\unkern \XeKo@halfhalf % AM OP - \or \unkern\unkern % AH OP + \or \unkern\unkern \XeKo@halfhalf % AH OP \or \unkern\unkern \XeKo@maybe@gobble % OP OP \or \unkern\unkern \XeKo@halfhalf % CL OP \or \unkern\unkern \XeKo@quarterquarter % MD OP @@ -1197,6 +1204,7 @@ \ifcase\lastkern \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 @@ -1220,13 +1228,14 @@ \ifcase\lastkern \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 \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AC MD \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AP MD \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AM MD - \or \unkern\unkern % AH MD + \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % AH MD \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % OP MD \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % CL MD \or \unkern\unkern \XeKo@nobreak\XeKo@halfquarter \XeKo@maybe@gobble % MD MD @@ -1245,6 +1254,7 @@ \ifcase\lastkern \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 @@ -1268,6 +1278,7 @@ \ifcase\lastkern \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 @@ -1291,6 +1302,7 @@ \ifcase\lastkern \or \unkern\unkern % HG LD \or \unkern\unkern % ID LD + \or \or \unkern\unkern % SY LD \or \unkern\unkern % AA LD \or \unkern\unkern % AO LD @@ -1312,21 +1324,22 @@ \XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassVC{% \ifnum\lastnodetype=12 % \ifcase\lastkern - \or \unkern\unkern % HG VC - \or \unkern\unkern % ID VC - \or \unkern\unkern % SY VC - \or \unkern\unkern % AA VC - \or \unkern\unkern % AO VC - \or \unkern\unkern % AC VC - \or \unkern\unkern % AP VC - \or \unkern\unkern % AM VC - \or \unkern\unkern % AH VC - \or \unkern\unkern % OP VC - \or \unkern\unkern % CL VC - \or \unkern\unkern \XeKo@nobreak\XeKo@halfquarter % MD VC - \or \unkern\unkern % FS VC - \or \unkern\unkern % EX VC - \or \unkern\unkern % LD VC + \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 + \or \unkern\unkern % AC VC + \or \unkern\unkern % AP VC + \or \unkern\unkern % AM VC + \or \unkern\unkern % AH VC + \or \unkern\unkern % OP VC + \or \unkern\unkern % CL VC + \or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD VC + \or \unkern\unkern % FS VC + \or \unkern\unkern % EX VC + \or \unkern\unkern % LD VC \or \unkern\unkern \XeKo@maybe@gobble % VC VC \fi \fi @@ -1615,30 +1628,19 @@ \let\XeKo@iiiquarterquarter \inhibitglue \let\XeKo@latincjk \inhibitglue \let\XeKo@postmath \inhibitglue - \let\XKinterhangulbreak \XKinterhanjabreak + \let\XKinterhangulbreak \inhibitglue + \let\XKinterhanjabreak \inhibitglue \let\XeKo@latincjk@classic \inhibitglue \let\XeKo@latincjk@modern \inhibitglue \let\XeKo@postmath@modern \inhibitglue \let\XeKo@suppress@char@orphan \relax - \chardef\XeKo@hangingpuncts \z@ \chardef\XeKo@cjk@ignorespaces \z@ + \chardef\XeKo@compresspuncts \z@ } \protected\def\disablehangulspacingandlinebreak{% - \let\XeKo@halfzero \relax - \let\XeKo@halfhalf \relax - \let\XeKo@halfquarter \relax - \let\XeKo@quarterquarter \relax - \let\XeKo@iiiquarterquarter \relax - \let\XeKo@latincjk \relax - \let\XeKo@postmath \relax - \let\XKinterhangulbreak \relax - \let\XKinterhanjabreak \relax - \let\XeKo@latincjk@classic \relax - \let\XeKo@latincjk@modern \relax - \let\XeKo@postmath@modern \relax - \let\XeKo@suppress@char@orphan \relax - \chardef\XeKo@hangingpuncts \z@ - \chardef\XeKo@cjk@ignorespaces \z@ + \let\inhibitglue \relax + \chardef\XeKo@hangingpuncts \z@ + \disablehangulspacing \XeTeXlinebreaklocale"" } \protected\def\enablehangulspacingandlinebreak{% @@ -1938,7 +1940,7 @@ \DeclareDocumentCommand \setmonohangulfont { O{} m O{} } { \__xtxko_assign_font_opts:n { #1, #3 } - \fontspec_set_family:Nnn \XeKo@monohangulfamily { Ligatures=TeX, \l_xtxko_rest_opts_tl } { #2 } + \fontspec_set_family:Nnn \XeKo@monohangulfamily { \l_xtxko_rest_opts_tl } { #2 } \cs_set_protected_nopar:Npn \xetexkomonohangulfont { \fontencoding \g_fontspec_encoding_tl \fontfamily \XeKo@monohangulfamily \selectfont @@ -2065,7 +2067,7 @@ \DeclareDocumentCommand \setmonohanjafont { O{} m O{} } { \__xtxko_assign_font_opts:n { #1, #3 } - \fontspec_set_family:Nnn \XeKo@monohanjafamily { Ligatures=TeX, \l_xtxko_rest_opts_tl } { #2 } + \fontspec_set_family:Nnn \XeKo@monohanjafamily { \l_xtxko_rest_opts_tl } { #2 } \cs_set_protected_nopar:Npn \xetexkomonohanjafont { \fontencoding \g_fontspec_encoding_tl \fontfamily \XeKo@monohanjafamily \selectfont @@ -2082,7 +2084,6 @@ } \ignorespaces } - \XeKo@latin@selectfont \DeclareDocumentCommand \newhanjafontfamily { m O{} m O{} } { \__xtxko_assign_font_opts:n { #2, #4 } -- cgit v1.2.3