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.sty343
1 files changed, 172 insertions, 171 deletions
diff --git a/macros/xetex/generic/xetexko/xetexko.sty b/macros/xetex/generic/xetexko/xetexko.sty
index 9b155d3c73..63108b667c 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/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 }