summaryrefslogtreecommitdiff
path: root/macros/xetex/generic/xetexko/xetexko.sty
diff options
context:
space:
mode:
Diffstat (limited to 'macros/xetex/generic/xetexko/xetexko.sty')
-rw-r--r--macros/xetex/generic/xetexko/xetexko.sty103
1 files changed, 47 insertions, 56 deletions
diff --git a/macros/xetex/generic/xetexko/xetexko.sty b/macros/xetex/generic/xetexko/xetexko.sty
index d2fc815549..ce95a1488b 100644
--- a/macros/xetex/generic/xetexko/xetexko.sty
+++ b/macros/xetex/generic/xetexko/xetexko.sty
@@ -16,10 +16,9 @@
\ifdefined\ProvidesPackage
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
- \ProvidesPackage{xetexko}[2021/05/15 v3.4 typesetting Korean with XeTeX]
+ \ProvidesPackage{xetexko}[2021/05/20 v3.5 typesetting Korean with XeTeX]
\else
\ifdefined\@tempcnta\else \newcount\@tempcnta \fi
- \ifdefined\@gobble\else \def\@gobble#1{} \fi
\ifdefined\@sptoken \else
\begingroup\def\:{\global\let\@sptoken= } \: \endgroup
\fi
@@ -294,11 +293,13 @@
% 고아글자 억제. verbatim 에서는 이 명령을 꺼야 한다
\def\XeKo@suppress@linebreak{%
- \XeKo@skip@=\lastskip \unskip
- \XeKo@count@=\lastpenalty \unpenalty
- \ifnum\XeKo@count@<5000 \XeKo@count@=5000 \fi
- \penalty\XeKo@count@
- \hskip\XeKo@skip@
+ \ifnum\lastnodetype=11 % glue node
+ \XeKo@skip@=\lastskip \unskip
+ \XeKo@count@=\lastpenalty \unpenalty
+ \ifnum\XeKo@count@<5000 \XeKo@count@=5000 \fi
+ \penalty\XeKo@count@
+ \hskip\XeKo@skip@
+ \fi
}
\protected\def\inhibitglue{\hskip\z@\XeKo@stretchshrink}
@@ -325,16 +326,23 @@
}
\typesetmodern
-\let\japanese\typesetclassic
+\chardef\XeKo@typesetvertical\z@
+\chardef\XeKo@STchineseJapanese\z@ % 0=KOR, 1=SC, 2=TC, 3=JPN
+
+\protected\def\japanese{%
+ \typesetclassic
+ \chardef\XeKo@STchineseJapanese\thr@@
+ \XeTeXcharclass "FF1A = \XeTeXcharclassMD % : both horizontal and vertical glyphs
+ }
\protected\def\Tchinese{%
\typesetclassic
- \chardef\XeKo@typesetSTchinese\tw@
+ \chardef\XeKo@STchineseJapanese\tw@
\XeKo@Tchinese@classes
\parindent=2em
}
\protected\def\Schinese{%
\typesetclassic
- \chardef\XeKo@typesetSTchinese\@ne
+ \chardef\XeKo@STchineseJapanese\@ne
\ifnum\XeKo@typesetvertical=\@ne
\XeKo@Schinese@vertical
\else
@@ -362,24 +370,22 @@
\XeTeXcharclass "FF0E = \XeTeXcharclassLD % .
}
-\chardef\XeKo@typesetvertical\z@
-\chardef\XeKo@typesetSTchinese\z@
-
\protected\def\typesetvertical{%
\chardef\XeKo@typesetvertical\@ne
\XeTeXcharclass "FF1A = \XeTeXcharclassVC % :
\XeTeXcharclass "FF1B = \XeTeXcharclassVC % ;
- \ifcase\XeKo@typesetSTchinese
+ \ifcase\XeKo@STchineseJapanese
\parindent=1em
\or \XeKo@Schinese@vertical
\or \XeKo@Tchinese@classes
+ \or \XeTeXcharclass "FF1A = \XeTeXcharclassMD % :
\fi
}
\protected\def\typesethorizontal{%
\chardef\XeKo@typesetvertical\z@
\XeTeXcharclass "FF1A = \XeTeXcharclassMD % :
\XeTeXcharclass "FF1B = \XeTeXcharclassMD % ;
- \ifcase\XeKo@typesetSTchinese
+ \ifcase\XeKo@STchineseJapanese
\or \XeKo@Schinese@horizontal
\or \XeKo@Tchinese@classes
\fi
@@ -496,8 +502,6 @@
\XeKo@latin@font
\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
@@ -634,12 +638,8 @@
\def\XeKo@check@next@tok@{%
\XeKo@get@charslot
\ifnum\XeKo@charslot="FFFF
- % 다음 한 줄이 없으면 한글과 한글 사이에 폰트가 변경되는 경우 글자 누락.
- % 폰트 변경은 kern 에 아무 영향을 주지 않기 때문.
- \let\XeKo@maybe@gobble\relax
\expandafter\XeKo@flush@toks
\else
- \let\XeKo@maybe@gobble\XeKo@do@maybe@gobble
\ifnum 0\ifnum\XeKo@currclass>4 \ifnum\XeKo@currclass<11 % AA..AH
1\fi\fi >\z@
\expandafter\expandafter\expandafter\XeKo@check@next@tok@latin
@@ -1003,15 +1003,10 @@
\XeKo@check@next@tok
}
-\def\XeKo@maybe@gobble{%
- \expandafter\expandafter\expandafter\@gobble
- }
-\let\XeKo@do@maybe@gobble\XeKo@maybe@gobble
-
\XeTeXinterchartoks\XeTeXcharclassBoundary\XeTeXcharclassHG{%
\ifnum\lastnodetype=12 %
\ifcase\lastkern
- \or \unkern\unkern \XKinterhangulbreak \XeKo@maybe@gobble % HG HG
+ \or \unkern\unkern \XKinterhangulbreak % HG HG
\or \unkern\unkern \XKinterhanjabreak % ID HG
\or
\or \unkern\unkern % SY HG
@@ -1038,7 +1033,7 @@
\ifnum\lastnodetype=12 %
\ifcase\lastkern
\or \unkern\unkern \XKinterhanjabreak % HG ID
- \or \unkern\unkern \XKinterhanjabreak \XeKo@maybe@gobble % ID ID
+ \or \unkern\unkern \XKinterhanjabreak % ID ID
\or
\or \unkern\unkern % SY ID
\or \unkern\unkern \XeKo@latincjk % AA ID
@@ -1064,7 +1059,7 @@
\ifnum\lastnodetype=12 %
\ifcase\lastkern
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % HG CJ
- \or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak \XeKo@maybe@gobble % ID CJ
+ \or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % ID CJ
\or
\or \unkern\unkern % SY CJ
\or \unkern\unkern \XeKo@latincjk % AA CJ
@@ -1092,7 +1087,7 @@
\or \unkern\unkern % HG SY
\or \unkern\unkern % ID SY
\or
- \or \unkern\unkern \XeKo@maybe@gobble % SY SY
+ \or \unkern\unkern % SY SY
\or \unkern\unkern % AA SY
\or \unkern\unkern % AO SY
\or \unkern\unkern \XeKo@latincjk % AC SY
@@ -1119,7 +1114,7 @@
\or \unkern\unkern \XeKo@latincjk % ID AA
\or
\or \unkern\unkern % SY AA
- \or \unkern\unkern \XeKo@maybe@gobble % AA AA
+ \or \unkern\unkern % AA AA
\or \unkern\unkern % AO AA
\or \unkern\unkern % AC AA
\or \unkern\unkern % AP AA
@@ -1144,7 +1139,7 @@
\or
\or \unkern\unkern \XeKo@latincjk % SY AO
\or \unkern\unkern % AA AO
- \or \unkern\unkern \XeKo@maybe@gobble % AO AO
+ \or \unkern\unkern % AO AO
\or \unkern\unkern % AC AO
\or \unkern\unkern % AP AO
\or \unkern\unkern % AM AO
@@ -1169,7 +1164,7 @@
\or \unkern\unkern % SY AC
\or \unkern\unkern % AA AC
\or \unkern\unkern % AO AC
- \or \unkern\unkern \XeKo@maybe@gobble % AC AC
+ \or \unkern\unkern % AC AC
\or \unkern\unkern % AP AC
\or \unkern\unkern % AM AC
\or \unkern\unkern % AH AC
@@ -1194,7 +1189,7 @@
\or \unkern\unkern % AA AP
\or \unkern\unkern % AO AP
\or \unkern\unkern % AC AP
- \or \unkern\unkern \XeKo@maybe@gobble % AP AP
+ \or \unkern\unkern % AP AP
\or \unkern\unkern % AM AP
\or \unkern\unkern % AH AP
\or \unkern\unkern % OP AP
@@ -1219,7 +1214,7 @@
\or \unkern\unkern % AO AM
\or \unkern\unkern % AC AM
\or \unkern\unkern % AP AM
- \or \unkern\unkern \XeKo@maybe@gobble % AM AM
+ \or \unkern\unkern % AM AM
\or \unkern\unkern % AH AM
\or \unkern\unkern % OP AM
\or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % CL AM
@@ -1244,7 +1239,7 @@
\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 % AH AH
\or \unkern\unkern % OP AH
\or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % CL AH
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD AH
@@ -1269,7 +1264,7 @@
\or \unkern\unkern \XeKo@halfhalf % AP OP
\or \unkern\unkern \XeKo@halfhalf % AM OP
\or \unkern\unkern \XeKo@halfhalf % AH OP
- \or \unkern\unkern \XeKo@maybe@gobble % OP OP
+ \or \unkern\unkern % OP OP
\or \unkern\unkern \XeKo@halfhalf % CL OP
\or \unkern\unkern \XeKo@quarterquarter % MD OP
\or \unkern\unkern \XeKo@halfzero % FS OP
@@ -1296,7 +1291,7 @@
\or \unkern\unkern % AM CL
\or \unkern\unkern % AH CL
\or \unkern\unkern % OP CL
- \or \unkern\unkern \XeKo@maybe@gobble % CL CL
+ \or \unkern\unkern % CL CL
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD CL
\or \unkern\unkern % FS CL
\or \unkern\unkern % EX CL
@@ -1321,7 +1316,7 @@
\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
+ \or \unkern\unkern \XeKo@nobreak\XeKo@halfquarter % MD MD
\or \unkern\unkern \XeKo@nobreak\XeKo@iiiquarterquarter % FS MD
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % EX MD
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % LD MD
@@ -1348,7 +1343,7 @@
\or \unkern\unkern % OP FS
\or \unkern\unkern % CL FS
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD FS
- \or \unkern\unkern \XeKo@maybe@gobble % FS FS
+ \or \unkern\unkern % FS FS
\or \unkern\unkern % EX FS
\or \unkern\unkern % LD FS
\or \unkern\unkern % VC FS
@@ -1373,7 +1368,7 @@
\or \unkern\unkern \XeKo@nobreak\XeKo@halfhalf % CL EX
\or \unkern\unkern \XeKo@nobreak\XeKo@quarterquarter % MD EX
\or \unkern\unkern \XeKo@nobreak\XeKo@halfzero % FS EX
- \or \unkern\unkern \XeKo@maybe@gobble % EX EX
+ \or \unkern\unkern % EX EX
\or \unkern\unkern % LD EX
\or \unkern\unkern % VC EX
\fi
@@ -1398,7 +1393,7 @@
\or \unkern\unkern \XeKo@quarterquarter \XeKo@suppress@linebreak % MD LD
\or \unkern\unkern \XeKo@halfzero \XeKo@suppress@linebreak % FS LD
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % EX LD
- \or \unkern\unkern \XeKo@maybe@gobble % LD LD
+ \or \unkern\unkern % LD LD
\or \unkern\unkern \XKinterhanjabreak \XeKo@suppress@linebreak % VC LD
\fi
\fi
@@ -1423,7 +1418,7 @@
\or \unkern\unkern % FS VC
\or \unkern\unkern % EX VC
\or \unkern\unkern % LD VC
- \or \unkern\unkern \XeKo@maybe@gobble % VC VC
+ \or \unkern\unkern % VC VC
\fi
\fi
\XeKo@fontVC\XeKo@startVC
@@ -1776,14 +1771,12 @@
\def\xetexkoulemsupport{%
\ifdefined\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
\ifdefined\XeKo@in@selectfont\else
- \global\let\XeKo@temp@hangul@font\XeKo@hangul@font
- \gdef\XeKo@UL@hangul@font{\let\XeKo@hangul@font\XeKo@temp@hangul@font}%
+ \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
@@ -1792,8 +1785,8 @@
\expandafter\def\expandafter\XeKo@hanja@selectfont\expandafter{%
\XeKo@hanja@selectfont
\ifdefined\XeKo@in@selectfont\else
- \global\let\XeKo@temp@hanja@font\XeKo@hanja@font
- \gdef\XeKo@UL@hanja@font{\let\XeKo@hanja@font\XeKo@temp@hanja@font}%
+ \xdef\XeKo@UL@hanja@font{%
+ \def\noexpand\XeKo@hanja@font{\unexpanded\expandafter{\XeKo@hanja@font}}}%
\aftergroup\aftergroup\aftergroup\XeKo@UL@hanja@font
\fi }%
}%
@@ -1805,18 +1798,16 @@
\def\xetexkoulemsupport{%
\ifdefined\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
- \gdef\XeKo@UL@hangul@font{\let\XeKo@hangul@font\XeKo@temp@hangul@font}%
+ \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{%
- \global\let\XeKo@temp@hanja@font\XeKo@hanja@font
- \gdef\XeKo@UL@hanja@font{\let\XeKo@hanja@font\XeKo@temp@hanja@font}%
+ \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
}%
@@ -2514,7 +2505,7 @@
\RequirePackage{kolabels-utf}
-\protected\def\hellipsis{\char"2026\char"2026 }
+\protected\def\hellipsis{^^^^2026^^^^2026}
\if@hangul
\linespread{1.3888}