summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex')
-rw-r--r--Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex645
1 files changed, 645 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex b/Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex
new file mode 100644
index 00000000000..8ca04827d1a
--- /dev/null
+++ b/Master/texmf-dist/doc/plain/impatient-cn/xeCJK-base.tex
@@ -0,0 +1,645 @@
+\input miniltx
+\def\settowidth#1#2{%
+ \setbox\@tempboxa\hbox{{#2}}#1\wd\@tempboxa
+ \setbox\@tempboxa\box\voidb@x}
+
+\endlinechar \m@ne
+
+\newif\ifxeCJK@checksingle
+\newif\ifxeCJK@space@
+
+\def\xeCJK@patch#1#2#3{
+ \edef#1{\unexpanded{#2}\unexpanded\expandafter{#1}\unexpanded{#3}}}
+\def\makexeCJKactive{\XeTeXinterchartokenstate=1\relax}
+\def\makexeCJKinactive{\XeTeXinterchartokenstate=0\relax}
+\makexeCJKactive
+\def\xeCJKsetcharclass#1#2#3{
+ \@tempcnta=#1
+ \loop
+ \XeTeXcharclass \@tempcnta #3\relax
+ \advance\@tempcnta 1\relax
+ \unless\ifnum\the\@tempcnta>#2 \repeat
+ \xeCJK@setpunctcharclass}
+\def\xeCJK@prePunct#1#2{\xeCJK@setPunct{2}{#1}{#2}}
+\def\xeCJK@postPunct#1#2{\xeCJK@setPunct{3}{#1}{#2}}
+\def\xeCJK@setPunct#1#2#3{
+ \def\xeCJK@class{#1}
+ \@tempcnta "#2\relax
+ \multiply\@tempcnta 256\relax
+ \xeCJK@setPunct@#3,,}
+\def\xeCJK@setPunct@#1,{
+ \edef\xeCJK@temp{#1}%
+ \unless\ifx\xeCJK@temp\@empty
+ \@tempcntb "#1\relax
+ \advance\@tempcntb\@tempcnta\relax
+ \XeTeXcharclass \@tempcntb=\xeCJK@class\relax
+ \def\xeCJK@temp{\xeCJK@setPunct@}
+ \fi
+ \xeCJK@temp}
+\def\xeCJK@setpunctcharclass{
+ \xeCJK@prePunct{20}{18,1C}
+ \xeCJK@postPunct{20}{19,1D,14,26}
+ \xeCJK@postPunct{25}{00}
+ \xeCJK@prePunct{30}{08,0A,0C,0E,10,12,14,16,18,1A,1D,1F,36}
+ \xeCJK@postPunct{30}{01,02,05,06,09,0B,0D,0F,11,15,17,19,1B,1E,
+ 41,43,45,47,49,63,83,85,87,8E,
+ 9B,9C,9D,9E,A1,A3,A5,A7,A9,C3,E3,E5,E7,EE,F5,F6,FB,FC,FD,FE}
+ \xeCJK@prePunct {FE}{59,5B,5D,5F,60,69,6B}
+ \xeCJK@postPunct{FE}{50,51,52,54,55,56,57,5A,5C,5E,6A}
+ \xeCJK@prePunct {FF}{03,04,08,20,3B,5B,E0,E1,E5,E6}
+ \xeCJK@postPunct{FF}{01,05,09,0C,0E,1A,1B,1F,3D,5D,
+ 61,63,64,65,67,68,69,6A,6B,6C,6D,6E,6F,70,9E,9F}
+ \xeCJK@setPunct{1}{0}{B7}
+ \xeCJK@setPunct{4}{0}{28,2D,5B,60,7B}
+ \xeCJK@setPunct{5}{0}{21,22,25,27,29,2C,2E,3A,3B,3F,5D,7D}}
+\xeCJKsetcharclass{"1100}{"11FF}{1}
+\xeCJKsetcharclass{"2E80}{"2EFF}{1}
+\xeCJKsetcharclass{"2F00}{"2FDF}{1}
+\xeCJKsetcharclass{"2FF0}{"2FFF}{1}
+\xeCJKsetcharclass{"3000}{"303F}{1}
+\xeCJKsetcharclass{"3040}{"309F}{1}
+\xeCJKsetcharclass{"30A0}{"30FF}{1}
+\xeCJKsetcharclass{"3100}{"312F}{1}
+\xeCJKsetcharclass{"3130}{"318F}{1}
+\xeCJKsetcharclass{"3190}{"319F}{1}
+\xeCJKsetcharclass{"31A0}{"31BF}{1}
+\xeCJKsetcharclass{"31C0}{"31EF}{1}
+\xeCJKsetcharclass{"31F0}{"31FF}{1}
+\xeCJKsetcharclass{"3200}{"32FF}{1}
+\xeCJKsetcharclass{"3300}{"33FF}{1}
+\xeCJKsetcharclass{"3400}{"4DBF}{1}
+\xeCJKsetcharclass{"4E00}{"9FFF}{1}
+\xeCJKsetcharclass{"A000}{"A4CF}{1}
+\xeCJKsetcharclass{"AC00}{"D7AF}{1}
+\xeCJKsetcharclass{"F900}{"FAFF}{1}
+\xeCJKsetcharclass{"FE30}{"FE4F}{1}
+\xeCJKsetcharclass{"FF00}{"FFEF}{1}
+\xeCJKsetcharclass{"20000}{"2A6DF}{1}
+\xeCJKsetcharclass{"2A700}{"2B73F}{1}
+\xeCJKsetcharclass{"2B740}{"2B81F}{1}
+\xeCJKsetcharclass{"2F800}{"2FA1F}{1}
+\def\CJK@stop{\CJK@stop}
+\def\normalspacedchars#1{
+ \xeCJK@setnormalspacedchar#1\CJK@stop}
+\def\xeCJK@setnormalspacedchar#1{
+ \unless\ifx#1\CJK@stop
+ \XeTeXcharclass`#1=6
+ \expandafter\xeCJK@setnormalspacedchar
+ \fi}
+\normalspacedchars{/}
+\XeTeXinterchartoks 1 0{\egroup\CJKecglue}
+\XeTeXinterchartoks 1 1{\xeCJK@i@i}
+\XeTeXinterchartoks 1 2{\xeCJK@i@ii}
+\XeTeXinterchartoks 1 3{\xeCJK@i@iii}
+\XeTeXinterchartoks 1 4{\egroup\CJKecglue}
+\XeTeXinterchartoks 1 5{\egroup}
+\XeTeXinterchartoks 1 255{\xeCJK@i@cclv}
+\XeTeXinterchartoks 2 0{\xeCJK@ii@}
+\XeTeXinterchartoks 2 1{\xeCJK@ii@i}
+\XeTeXinterchartoks 2 2{\xeCJK@ii@ii}
+\XeTeXinterchartoks 2 3{\xeCJK@ii@iii}
+\XeTeXinterchartoks 2 4{\xeCJK@ii@iv}
+\XeTeXinterchartoks 2 5{\xeCJK@ii@v}
+\XeTeXinterchartoks 2 255{\xeCJK@ii@cclv}
+\XeTeXinterchartoks 3 0{\xeCJK@iii@}
+\XeTeXinterchartoks 3 1{\xeCJK@iii@i}
+\XeTeXinterchartoks 3 2{\xeCJK@iii@ii}
+\XeTeXinterchartoks 3 3{\xeCJK@iii@iii}
+\XeTeXinterchartoks 3 4{\xeCJK@iii@iv}
+\XeTeXinterchartoks 3 5{\xeCJK@iii@v}
+\XeTeXinterchartoks 3 255{\xeCJK@iii@cclv}
+\XeTeXinterchartoks 0 1{\xeCJK@@i}
+\XeTeXinterchartoks 0 2{\xeCJK@@ii}
+\XeTeXinterchartoks 0 3{\xeCJK@@iii}
+\XeTeXinterchartoks 0 255{\xeCJK@@cclv}
+\XeTeXinterchartoks 4 1{\xeCJK@iv@i}
+\XeTeXinterchartoks 4 2{\xeCJK@iv@ii}
+\XeTeXinterchartoks 4 3{\xeCJK@iv@iii}
+\XeTeXinterchartoks 5 1{\xeCJK@v@i}
+\XeTeXinterchartoks 5 2{\xeCJK@v@ii}
+\XeTeXinterchartoks 5 3{\xeCJK@v@iii}
+\XeTeXinterchartoks 5 255{\xeCJK@v@cclv}
+\XeTeXinterchartoks 255 0{\xeCJK@cclv@}
+\XeTeXinterchartoks 255 1{\xeCJK@cclv@i}
+\XeTeXinterchartoks 255 2{\xeCJK@cclv@ii}
+\XeTeXinterchartoks 255 3{\xeCJK@cclv@iii}
+\XeTeXinterchartoks 255 4{\xeCJK@cclv@iv}
+\XeTeXinterchartoks 255 6{\xeCJK@cclv@vi}
+\XeTeXinterchartoks 1 6{\xeCJK@i@vi}
+\XeTeXinterchartoks 2 6{\xeCJK@ii@vi}
+\XeTeXinterchartoks 3 6{\xeCJK@iii@vi}
+\XeTeXinterchartoks 6 1{\xeCJK@vi@i}
+\XeTeXinterchartoks 6 2{\xeCJK@vi@ii}
+\XeTeXinterchartoks 6 3{\xeCJK@vi@iii}
+\XeTeXinterchartoks 6 255{\xeCJK@vi@cclv}
+\def\xeCJK@vi@i{
+ \bgroup
+ \xeCJK@emptyCJKtoks
+ \xeCJK@setfont
+ \CJKsymbol}
+\def\xeCJK@i@vi{
+ \egroup}
+\let\xeCJK@ii@vi \xeCJK@i@vi
+\let\xeCJK@iii@vi\xeCJK@i@vi
+\let\xeCJK@vi@ii \xeCJK@vi@i
+\let\xeCJK@vi@iii\xeCJK@vi@i
+\def\xeCJK@i@i{
+ \CJKglue
+ \CJKsymbol}
+\let\xeCJK@i@i@save\xeCJK@i@i
+\def\xeCJK@i@ii#1{
+ \xeCJK@punctrule{#1}{l}
+ \hskip \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @lglue@#1\endcsname
+ plus 0.1em minus 0.1 em
+ \xeCJK@setprepunct{#1}}
+\def\xeCJK@i@iii#1{
+ \xeCJK@punctrule{#1}{r}
+ \ifcsname xeCJK@specialpunct#1\endcsname
+ \CJKglue % breakable
+ \else
+ \nobreak
+ \fi
+ \xdef\xeCJK@lastpunct{#1}
+ \CJKpunctsymbol{#1}}
+\def\xeCJK@setprepunct#1{
+ \edef\xeCJK@lastpunct{#1}
+ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @lrule@#1\endcsname depth \z@ height \z@
+ \CJKpunctsymbol{#1}}
+\def\xeCJK@i@cclv{
+ \egroup
+ {\xeCJK@CJKkern}
+ \xeCJK@ignorespaces}
+\def\xeCJK@ii@i{
+ \nobreak
+ \CJKsymbol}
+\def\xeCJK@ii@ii#1{
+ \nobreak
+ \xeCJK@punctrule{#1}{l}
+ \xeCJK@setkern{\xeCJK@lastpunct}{#1}
+ \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname
+ \xeCJK@setprepunct{#1}}
+\def\xeCJK@ii@iii#1{
+ \nobreak
+ \xeCJK@punctrule{#1}{r}
+ \xeCJK@setkern{\xeCJK@lastpunct}{#1}
+ \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname
+ \nobreak
+ \edef\xeCJK@lastpunct{#1}
+ \CJKpunctsymbol{#1}}
+\def\xeCJK@ii@{
+ \nobreak
+ \egroup}
+\let\xeCJK@ii@iv\xeCJK@ii@
+\let\xeCJK@ii@v\xeCJK@ii@
+\def\xeCJK@ii@cclv{
+ \nobreak
+ \egroup
+ \ignorespaces}
+\def\xeCJK@iii@{
+ \xeCJK@afterpostpunct
+ \egroup}
+\def\xeCJK@iii@i{
+ \xeCJK@afterpostpunct
+ \CJKsymbol}
+\def\xeCJK@iii@ii#1{
+ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@
+ \xeCJK@punctrule{#1}{l}
+ \xeCJK@setkern{\xeCJK@lastpunct}{#1}
+ \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname
+ \xeCJKpunctnobreak
+ \xeCJK@setprepunct{#1}}
+\def\xeCJK@iii@iii#1{
+ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@
+ \xeCJK@punctrule{#1}{r}
+ \xeCJK@setkern{\xeCJK@lastpunct}{#1}
+ \kern \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern\xeCJK@lastpunct#1\endcsname
+ \nobreak
+ \edef\xeCJK@lastpunct{#1}
+ \CJKpunctsymbol{#1}}
+\def\xeCJK@iii@iv{
+ \xeCJK@afterpostpunct
+ \egroup}
+\def\xeCJK@afterpostpunct{
+ \vrule width \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @rrule@\xeCJK@lastpunct\endcsname depth \z@ height \z@
+ \hskip \csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @rglue@\xeCJK@lastpunct\endcsname
+ plus 0.1em minus 0.1 em}
+\let\xeCJK@iii@v\xeCJK@iii@iv
+\def\xeCJK@iii@cclv{
+ \xeCJK@afterpostpunct
+ \egroup
+ \ignorespaces}
+\def\xeCJK@@i{
+ \CJKecglue
+ \bgroup
+ \xeCJK@setfont
+ \xeCJK@emptyCJKtoks
+ \CJKsymbol}
+\def\xeCJK@@ii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 0 2{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@ii}
+\def\xeCJK@@iii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 0 3{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@iii}
+\def\xeCJK@iv@i{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 4 1{\relax}
+ \xeCJK@emptyCJKtoks
+ \CJKsymbol}
+\def\xeCJK@iv@ii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 4 2{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@ii}
+\def\xeCJK@iv@iii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 4 3{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@iii}
+\def\xeCJK@v@i{
+ \CJKecglue
+ \bgroup
+ \xeCJK@setfont
+ \xeCJK@emptyCJKtoks
+ \CJKsymbol}
+\def\xeCJK@v@ii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 5 2{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@ii}
+\def\xeCJK@v@iii{
+ \bgroup
+ \xeCJK@setfont
+ \XeTeXinterchartoks 5 3{\relax}
+ \xeCJK@emptyCJKtoks
+ \xeCJK@i@iii}
+\def\xeCJK@emptyCJKtoks{
+ \XeTeXinterchartoks 255 1{\relax}
+ \XeTeXinterchartoks 255 2{\relax}
+ \XeTeXinterchartoks 255 3{\relax}}
+\def\xeCJK@@cclv{
+ \futurelet\xeCJK@nexttoken\xeCJK@zz@cclv}
+\def\xeCJK@zz@cclv{
+ \ifx\xeCJK@nexttoken\@sptoken
+ {\xeCJK@spkern}
+ \else
+ {\xeCJK@zerokern}
+ \fi}
+\let\xeCJK@v@cclv\xeCJK@@cclv
+\let\xeCJK@vi@cclv\xeCJK@@cclv
+\def\xeCJK@cclv@{
+ \ifnum\lastkern=\@ne
+ \CJKecglue
+ \fi}
+\let\xeCJK@cclv@iv\xeCJK@cclv@
+\let\xeCJK@cclv@vi\xeCJK@cclv@
+\def\xeCJK@cclv@i{{
+ \ifnum\lastkern=\@ne
+ \CJKglue
+ \else
+ \ifnum\lastkern=\xeCJK@four
+ \CJKecglue
+ \else
+ \ifnum\lastnodetype=\xeCJK@ten
+ \CJKecglue
+ \else
+ \ifnum\lastnodetype=\xeCJK@eleven
+ \settowidth\@tempdima\@sptoken
+ \ifdim\lastskip=\@tempdima
+ \@tempskipa=\lastskip
+ \unskip
+ \ifnum\lastkern=\tw@
+ \CJKecglue
+ \else
+ \ifnum\lastnodetype=\xeCJK@ten
+ \CJKecglue
+ \else
+ \ifnum\lastkern=\xeCJK@four
+ \CJKecglue
+ \else
+ \hskip\@tempskipa
+ \fi\fi\fi\fi\fi\fi\fi\fi}
+ \bgroup
+ \xeCJK@emptyCJKtoks
+ \xeCJK@setfont
+ \CJKsymbol}
+\def\xeCJK@cclv@ii{
+ \bgroup
+ \xeCJK@emptyCJKtoks
+ \xeCJK@setfont
+ \xeCJK@i@ii}
+\def\xeCJK@cclv@iii{
+ \bgroup
+ \xeCJK@emptyCJKtoks
+ \xeCJK@setfont
+ \xeCJK@i@iii}
+\def\CJKglue{\hskip \z@ \@plus .08\baselineskip}
+\def\CJK@nobreakglue{\nobreak\CJKglue\nobreak}
+\edef\xeCJK@CJKkern{\kern -1sp\kern 1sp}
+\edef\xeCJK@spkern{\kern -2sp\kern 2sp}
+\edef\xeCJK@zerokern{\kern -4sp\kern 4sp}
+\chardef\xeCJK@four=4
+\chardef\xeCJK@ten=10
+\chardef\xeCJK@eleven=11
+\def\CJKspace{\let\xeCJK@ignorespaces\@empty}
+\def\CJKnospace{\def\xeCJK@ignorespaces{\xeCJK@@ignorespaces}}
+\ifxeCJK@space@
+ \CJKspace
+\else
+ \CJKnospace
+\fi
+\def\xeCJK@@ignorespaces{
+ \futurelet\xeCJK@nexttoken\xeCJK@checknext}
+\def\xeCJK@checknext{
+ \ifx\xeCJK@nexttoken\@sptoken
+ \expandafter\xeCJK@@checknext
+ \else
+ \ifx $\xeCJK@nexttoken
+ \CJKecglue
+ \fi
+ \fi}
+{
+ \def\:{\xeCJK@@checknext}
+ \global\expandafter\def\: {\futurelet\@let@token\xeCJK@@@checknext}
+}
+\def\xeCJK@@@checknext{
+ \ifx $\@let@token
+ \CJKecglue
+ \else
+ \if\relax\noexpand\@let@token
+ \unless\ifx\@let@token\xeCJK@par
+ \CJKecglue
+ \fi
+ \fi
+ \fi
+ \let\xeCJK@nexttoken\relax}
+\def\xeCJKenablechecksingle{\def\xeCJK@i@i{\xeCJK@checksingle}}
+\def\xeCJKdisablechecksingle{\let\xeCJK@i@i\xeCJK@i@i@save}
+\ifxeCJK@checksingle
+ \AtEndOfPackage{\xeCJKenablechecksingle}
+\fi
+\def\xeCJK@checksingle#1{
+ \def\xeCJK@setcurrentchar@i{
+ \CJKglue
+ \CJKsymbol{#1}}
+ \def\xeCJK@setcurrentnobreakchar@i{
+ \CJKsymbol{#1}}
+ \futurelet\@let@token\xeCJK@@checksingle}
+\def\xeCJK@@checksingle{
+ \ifcat 。\noexpand\@let@token
+ \expandafter\xeCJK@@@checksingle
+ \else
+ \expandafter\xeCJK@setcurrentchar@i
+ \fi}
+\def\xeCJK@@@checksingle#1{
+ \def\xeCJK@setcurrentchar@ii{
+ \xeCJK@setcurrentchar@i #1}
+ \def\xeCJK@setcurrentchar@ii@s{
+ \xeCJK@setcurrentchar@i #1 }
+ \def\xeCJK@setcurrentnobreakchar@ii{
+ \xeCJK@setcurrentnobreakchar@i #1}
+ \futurelet\@let@token\xeCJK@@@@checksingle}
+\def\xeCJK@@@@checksingle{
+ \ifx\@let@token\@sptoken
+ \expandafter\xeCJK@checkpar
+ \else
+ \expandafter\xeCJK@setcurrentchar@ii
+ \fi}
+\let\xeCJK@par\par
+\def\xeCJK@checkpar{
+ \@ifnextchar\xeCJK@par{\xeCJK@setcurrentnobreakchar@ii}{\xeCJK@setcurrentchar@ii@s}}
+\def\xeCJKsetecglue#1{
+ \def\CJK@ecglue{#1}
+ \let\CJKecglue\CJK@ecglue}
+\let\CJKsetecglue\xeCJKsetecglue
+\CJKsetecglue{ }
+\def\xeCJKallowbreakbetweenpuncts{
+ \def\xeCJKpunctnobreak{
+ \hskip \z@\relax}}
+\def\xeCJKnobreakbetweenpuncts{
+ \let\xeCJKpunctnobreak\nobreak}
+\xeCJKnobreakbetweenpuncts
+\let\xeCJK@itcorr\/
+\def\/{%
+ \relax
+ \ifnum\lastkern=4 %
+ \unkern\unkern
+ \fi
+ \xeCJK@itcorr}
+\let\@@italiccorr=\/
+\newcount\xeCJK@cnta
+\newcount\xeCJK@cntb
+\newcount\xeCJK@cntc
+\newcount\xeCJK@cntd
+\newcount\xeCJK@cnte
+\newdimen\xeCJK@dima
+\newif\ifxeCJK@dokerning
+\def\xeCJK@punctrule#1#2{
+ \xdef\xeCJK@bboxname{\xeCJK@fontname}
+ \unless\ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2rule@#1\endcsname
+ \unless\ifcsname xeCJK@\xeCJK@bboxname @lspace@#1\endcsname
+ {\xeCJK@setfont\xeCJK@setpunctbounds{#1}}
+ \fi
+ \xeCJK@dokerningtrue
+ \ifnum\xeCJK@punctstyle=\xeCJK@ps@plain\relax
+ \xeCJK@dokerningfalse
+ \else
+ \ifcsname xeCJK@specialpunct#1\endcsname
+ \xeCJK@dokerningfalse
+ \fi
+ \fi
+ \ifxeCJK@dokerning
+ \xeCJK@cnta=\csname xeCJK@\xeCJK@bboxname @#2space@#1\endcsname\relax
+ \xeCJK@cntc=\xeCJK@cnta
+ \ifcase\xeCJK@punctstyle
+ % hangmobanjiao
+ \or % quanjiao
+ \or % banjiao
+ \advance\xeCJK@cntc -50\relax
+ \or % kaiming
+ \ifcsname xeCJK@kaiming#1\endcsname
+ \advance\xeCJK@cntc -20\relax
+ \else
+ \advance\xeCJK@cntc -50\relax
+ \fi
+ \or % CCT
+ \ifcsname xeCJK@kaiming#1\endcsname
+ \advance\xeCJK@cntc -20\relax
+ \else
+ \advance\xeCJK@cntc -30\relax
+ \fi
+ \fi
+ \xeCJK@cntd=\xeCJK@cntc
+ \ifnum\xeCJK@cntc<0\relax
+ \xeCJK@cntc=0\relax
+ \fi
+ \else
+ \xeCJK@cnta=0\relax
+ \xeCJK@cntc=0\relax
+ \xeCJK@cntd=0\relax
+ \fi
+ \xeCJK@numtodim{\xeCJK@cnta}
+ \expandafter\xdef\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2rule@#1\endcsname{
+ -\xeCJK@temp em}
+ \xeCJK@numtodim{\xeCJK@cntc}
+ \expandafter\xdef\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2glue@#1\endcsname{
+ \xeCJK@temp em}
+ \expandafter\xdef\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @#2oglue@#1\endcsname{
+ \the\xeCJK@cntd}
+ \fi}
+\def\xeCJK@numtodim#1{
+ \xeCJK@cnte=#1\relax
+ \ifnum\the\xeCJK@cnte<100\relax
+ \def\xeCJK@temp{0}
+ \else
+ \advance\xeCJK@cnte -100\relax
+ \def\xeCJK@temp{1}
+ \fi
+ \ifnum\the\xeCJK@cnte<10
+ \edef\xeCJK@temp{\xeCJK@temp.0\the\xeCJK@cnte}
+ \else
+ \edef\xeCJK@temp{\xeCJK@temp.\the\xeCJK@cnte}
+ \fi}
+\expandafter\def\csname xeCJK@kaiming.\endcsname{}
+\expandafter\def\csname xeCJK@kaiming。\endcsname{}
+\expandafter\def\csname xeCJK@kaiming?\endcsname{}
+\expandafter\def\csname xeCJK@kaiming!\endcsname{}
+\expandafter\def\csname xeCJK@specialpunct—\endcsname{}% U+2014
+\expandafter\def\csname xeCJK@specialpunct─\endcsname{}% U+2500
+\expandafter\def\csname xeCJK@specialpunct…\endcsname{}
+\def\xeCJK@setkern#1#2{
+ \unless\ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname
+ \xeCJK@cnta=0\relax
+ \ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @roglue@#1\endcsname
+ \advance\xeCJK@cnta\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @roglue@#1\endcsname
+ \fi
+ \ifcsname xeCJK\xeCJK@punctstyle\xeCJK@bboxname @loglue@#2\endcsname
+ \advance\xeCJK@cnta\csname xeCJK\xeCJK@punctstyle\xeCJK@bboxname
+ @loglue@#2\endcsname
+ \fi
+ \relax
+ \ifcase\xeCJK@punctstyle
+ % hangmobanjiao
+ \or % quanjiao
+ \advance\xeCJK@cnta -50\relax
+ \or % banjiao
+ \advance\xeCJK@cnta -50\relax
+ \or % kaiming
+ \advance\xeCJK@cnta -50\relax
+ \or % CCT
+ \advance\xeCJK@cnta -50\relax
+ \fi
+ \ifnum\xeCJK@cnta<0\relax
+ \xeCJK@cnta=0\relax
+ \fi
+ \xeCJK@numtodim{\xeCJK@cnta}
+ \expandafter\xdef\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname{
+ \xeCJK@temp em}
+ \fi}
+\def\xeCJKsetkern#1#2#3{
+ \xdef\xeCJK@bboxname{\xeCJK@fontname}
+ \expandafter\xdef\csname
+ xeCJK\xeCJK@punctstyle\xeCJK@bboxname @kern#1#2\endcsname{#3}}
+\def\punctstyle#1{
+ \ifcsname xeCJK@ps@#1\endcsname
+ \edef\xeCJK@punctstyle{\csname xeCJK@ps@#1\endcsname}
+ \ifnum\xeCJK@punctstyle=\xeCJK@ps@plain\relax
+ \xeCJKallowbreakbetweenpuncts
+ \fi
+ \else
+ \PackageWarning{xeCJK}{Punctstyle #1\space is not defined.}
+ \fi}
+\def\xeCJK@ps@hangmobanjiao{0}
+\def\xeCJK@ps@marginkerning{0}
+\def\xeCJK@ps@quanjiao{1}
+\def\xeCJK@ps@fullwidth{1}
+\def\xeCJK@ps@banjiao{2}
+\def\xeCJK@ps@halfwidth{2}
+\def\xeCJK@ps@kaiming{3}
+\def\xeCJK@ps@mixedwidth{3}
+\def\xeCJK@ps@CCT{4}
+\def\xeCJK@ps@plain{5}
+\punctstyle{quanjiao}
+\def\xeCJKplainchr{\punctstyle{plain}}
+\def\xeCJK@sidespace{10}
+\def\xeCJK@getglyphbounds#1{
+ \xeCJK@cnta=\number\XeTeXglyphbounds #1 \xeCJK@gid
+ \xeCJK@dima 1em\relax
+ \xeCJK@cntb=\number\xeCJK@dima
+ \multiply\xeCJK@cnta 100\relax
+ \divide\xeCJK@cnta\xeCJK@cntb
+ \advance\xeCJK@cnta -15\relax
+ \edef\xeCJK@temp{\the\xeCJK@cnta}
+ \ifnum\xeCJK@temp<0\relax
+ \def\xeCJK@temp{0}
+ \fi}
+\def\xeCJK@setpunctbounds#1{
+ \edef\xeCJK@gid{\the\XeTeXcharglyph`#1}
+ \xeCJK@getglyphbounds{1}
+ \expandafter\xdef\csname xeCJK@\xeCJK@bboxname @lspace@#1\endcsname{
+ \xeCJK@temp}
+ \xeCJK@getglyphbounds{3}
+ \expandafter\xdef\csname xeCJK@\xeCJK@bboxname @rspace@#1\endcsname{
+ \xeCJK@temp}
+ \ifcsname xeCJK@specialpunct#1\endcsname
+ \unless\ifx#1…
+ \xeCJK@cnta=\number\XeTeXglyphbounds 1 \xeCJK@gid
+ \advance\xeCJK@cnta\number\XeTeXglyphbounds 3 \xeCJK@gid
+ \xeCJK@dima 1em\relax
+ \xeCJK@cntb=\number\xeCJK@dima
+ \multiply\xeCJK@cnta 100\relax
+ \divide\xeCJK@cnta\xeCJK@cntb
+ \advance\xeCJK@cnta 1\relax
+ \ifnum\xeCJK@cnta>9
+ \edef\xeCJK@temp{-0.\the\xeCJK@cnta em}
+ \else
+ \ifnum\xeCJK@cnta>1
+ \edef\xeCJK@temp{-0.0\the\xeCJK@cnta em}
+ \else
+ \edef\xeCJK@temp{-0.01 em}
+ \fi
+ \fi
+ \xeCJK@cnta=0
+ \loop
+ \global\expandafter\edef\csname xeCJK\the\xeCJK@cnta\xeCJK@bboxname
+ @kern#1#1\endcsname{\xeCJK@temp}
+ \advance \xeCJK@cnta 1\relax
+ \ifnum\xeCJK@cnta<6\repeat
+ \fi
+ \fi}
+\unless\ifcsname XeTeXglyphbounds\endcsname
+ \PackageError{xeCJK}{\string\XeTeXglyphbounds \space not defined.^^J
+ You have to update XeTeX to the version 0.9995.0 or later}{}
+\fi
+
+\def\CJKsymbol#1{#1}
+\def\CJKpunctsymbol#1{#1}
+
+% For pure plain TeX
+\def\xeCJK@setfont{\CJKfont}
+\def\xeCJK@fontname{\fontname\CJKfont}
+
+\def\CJKfont{\errmessage{xeCJK Error: You must define \noexpand\CJKfont first}}
+
+\endlinechar=`\^^M
+\resetatcatcode
+\endinput
+% vim:ft=plaintex