% Thomas B. Ridgeway and the Humanities and Arts Computing Center
% declare that this software is public domain   . . .  12/3/1990
% declare pmC fonts     stand by . . . this may take a while
\font\cfaB=wccta1
\font\cfaC=wccta2
\font\cfaD=wccta3
\font\cfaE=wccta4
\font\cfaF=wccta5
\font\cfaG=wccta6
\font\cfaH=wccta7
\font\cfaI=wccta8
\font\cfaJ=wccta9
\font\cfaa=wcctaa
\font\cfab=wcctab
\font\cfac=wcctac
\font\cfad=wcctad
\font\cfae=wcctae
\font\cfaf=wcctaf
\font\cfbA=wcctb0
\font\cfbB=wcctb1
\font\cfbC=wcctb2
\font\cfbD=wcctb3
\font\cfbE=wcctb4
\font\cfbF=wcctb5
\font\cfbG=wcctb6
\font\cfbH=wcctb7
\font\cfbI=wcctb8
\font\cfbJ=wcctb9
\font\cfba=wcctba
\font\cfbb=wcctbb
\font\cfbc=wcctbc
\font\cfbd=wcctbd
\font\cfbe=wcctbe
\font\cfbf=wcctbf
\font\cfcA=wcctc0
\font\cfcB=wcctc1
\font\cfcC=wcctc2
\font\cfcD=wcctc3
\font\cfcE=wcctc4
\font\cfcF=wcctc5
\font\cfcG=wcctc6
\font\cfcH=wcctc7
\font\cfcI=wcctc8
\font\cfcJ=wcctc9
\font\cfca=wcctca
\font\cfcb=wcctcb
\font\cfcc=wcctcc
\font\cfcd=wcctcd
\font\cfce=wcctce
\font\cfcf=wcctcf
\font\cfdA=wcctd0
\font\cfdB=wcctd1
\font\cfdC=wcctd2
\font\cfdD=wcctd3
\font\cfdE=wcctd4
\font\cfdF=wcctd5
\font\cfdG=wcctd6
\font\cfdH=wcctd7
\font\cfdI=wcctd8
\font\cfdJ=wcctd9
\font\cfda=wcctda
\font\cfdb=wcctdb
\font\cfdc=wcctdc
\font\cfdd=wcctdd
\font\cfde=wcctde
\font\cfdf=wcctdf
\font\cfeA=wccte0
\font\cfeB=wccte1
\font\cfeC=wccte2
\font\cfeD=wccte3
\font\cfeE=wccte4
\font\cfeF=wccte5
\font\cfeG=wccte6
\font\cfeH=wccte7
\font\cfeI=wccte8
\font\cfeJ=wccte9
\font\cfea=wcctea
\font\cfeb=wccteb
\font\cfec=wcctec
\font\cfed=wccted
\font\cfee=wcctee
\font\cfef=wcctef
\font\cffA=wcctf0
\font\cffB=wcctf1
\font\cffC=wcctf2
\font\cffD=wcctf3
\font\cffE=wcctf4
\font\cffF=wcctf5
\font\cffG=wcctf6
\font\cffH=wcctf7
\font\cffI=wcctf8
%
% a flag to show whether 1st byte of 2-byte pair has been read
\newif\ifchifontset
\chifontsetfalse % no, it hasn't yet been read
%
% our fonts are portmanteaus containing two different sizes,
%     set up machinery for picking one or another size
\newif\ifbigC
\bigCfalse % no, we are not printing big Chinese now
\def\cglue{\hskip0pt plus.5pt}
\newcount\Cchar
%
\def\cchar#1{\Cchar=#1\ifbigC\advance\Cchar by -128\fi\char\the\Cchar}
% define a general macro for handling Chinese characters
\def\chichar#1#2{\ifchifontset\cchar{#1}\restorefont\discretionary{}{}{}\cglue\chifontsetfalse\else\chifontsettrue\edef\restorefont{\the\font}#2\fi}
% define a special macro for those characters which can only be 2nd of 2 bytes
\def\chichr#1{\ifchifontset\cchar{#1}\restorefont\chifontsetfalse\else\message{!pmC! character #1 out of context!}\fi}
% define macros for the individual characters
%   each character sets a) a current font, or b) its character in the current font
%   depending on ifchifontset
% do chinese within a local group so that other schemes for
%    using chars in range 128+ might be used elsewhere, e.g. Sanskrit, you-name-it
%
\def\chiactive{
\catcode`\^^a0=\active
\catcode`\^^a1=\active
\catcode`\^^a2=\active
\catcode`\^^a3=\active
\catcode`\^^a4=\active
\catcode`\^^a5=\active
\catcode`\^^a6=\active
\catcode`\^^a7=\active
\catcode`\^^a8=\active
\catcode`\^^a9=\active
\catcode`\^^aa=\active
\catcode`\^^ab=\active
\catcode`\^^ac=\active
\catcode`\^^ad=\active
\catcode`\^^ae=\active
\catcode`\^^af=\active
\catcode`\^^b0=\active
\catcode`\^^b1=\active
\catcode`\^^b2=\active
\catcode`\^^b3=\active
\catcode`\^^b4=\active
\catcode`\^^b5=\active
\catcode`\^^b6=\active
\catcode`\^^b7=\active
\catcode`\^^b8=\active
\catcode`\^^b9=\active
\catcode`\^^ba=\active
\catcode`\^^bb=\active
\catcode`\^^bc=\active
\catcode`\^^bd=\active
\catcode`\^^be=\active
\catcode`\^^bf=\active
\catcode`\^^c0=\active
\catcode`\^^c1=\active
\catcode`\^^c2=\active
\catcode`\^^c3=\active
\catcode`\^^c4=\active
\catcode`\^^c5=\active
\catcode`\^^c6=\active
\catcode`\^^c7=\active
\catcode`\^^c8=\active
\catcode`\^^c9=\active
\catcode`\^^ca=\active
\catcode`\^^cb=\active
\catcode`\^^cc=\active
\catcode`\^^cd=\active
\catcode`\^^ce=\active
\catcode`\^^cf=\active
\catcode`\^^d0=\active
\catcode`\^^d1=\active
\catcode`\^^d2=\active
\catcode`\^^d3=\active
\catcode`\^^d4=\active
\catcode`\^^d5=\active
\catcode`\^^d6=\active
\catcode`\^^d7=\active
\catcode`\^^d8=\active
\catcode`\^^d9=\active
\catcode`\^^da=\active
\catcode`\^^db=\active
\catcode`\^^dc=\active
\catcode`\^^dd=\active
\catcode`\^^de=\active
\catcode`\^^df=\active
\catcode`\^^e0=\active
\catcode`\^^e1=\active
\catcode`\^^e2=\active
\catcode`\^^e3=\active
\catcode`\^^e4=\active
\catcode`\^^e5=\active
\catcode`\^^e6=\active
\catcode`\^^e7=\active
\catcode`\^^e8=\active
\catcode`\^^e9=\active
\catcode`\^^ea=\active
\catcode`\^^eb=\active
\catcode`\^^ec=\active
\catcode`\^^ed=\active
\catcode`\^^ee=\active
\catcode`\^^ef=\active
\catcode`\^^f0=\active
\catcode`\^^f1=\active
\catcode`\^^f2=\active
\catcode`\^^f3=\active
\catcode`\^^f4=\active
\catcode`\^^f5=\active
\catcode`\^^f6=\active
\catcode`\^^f7=\active
\catcode`\^^f8=\active
\catcode`\^^f9=\active
\catcode`\^^fa=\active
\catcode`\^^fb=\active
\catcode`\^^fc=\active
\catcode`\^^fd=\active
\catcode`\^^fe=\active
\catcode`\^^ff=\active
}
\def\inactive{
\catcode`\^^a0=12
\catcode`\^^a1=12
\catcode`\^^a2=12
\catcode`\^^a3=12
\catcode`\^^a4=12
\catcode`\^^a5=12
\catcode`\^^a6=12
\catcode`\^^a7=12
\catcode`\^^a8=12
\catcode`\^^a9=12
\catcode`\^^aa=12
\catcode`\^^ab=12
\catcode`\^^ac=12
\catcode`\^^ad=12
\catcode`\^^ae=12
\catcode`\^^af=12
\catcode`\^^b0=12
\catcode`\^^b1=12
\catcode`\^^b2=12
\catcode`\^^b3=12
\catcode`\^^b4=12
\catcode`\^^b5=12
\catcode`\^^b6=12
\catcode`\^^b7=12
\catcode`\^^b8=12
\catcode`\^^b9=12
\catcode`\^^ba=12
\catcode`\^^bb=12
\catcode`\^^bc=12
\catcode`\^^bd=12
\catcode`\^^be=12
\catcode`\^^bf=12
\catcode`\^^c0=12
\catcode`\^^c1=12
\catcode`\^^c2=12
\catcode`\^^c3=12
\catcode`\^^c4=12
\catcode`\^^c5=12
\catcode`\^^c6=12
\catcode`\^^c7=12
\catcode`\^^c8=12
\catcode`\^^c9=12
\catcode`\^^ca=12
\catcode`\^^cb=12
\catcode`\^^cc=12
\catcode`\^^cd=12
\catcode`\^^ce=12
\catcode`\^^cf=12
\catcode`\^^d0=12
\catcode`\^^d1=12
\catcode`\^^d2=12
\catcode`\^^d3=12
\catcode`\^^d4=12
\catcode`\^^d5=12
\catcode`\^^d6=12
\catcode`\^^d7=12
\catcode`\^^d8=12
\catcode`\^^d9=12
\catcode`\^^da=12
\catcode`\^^db=12
\catcode`\^^dc=12
\catcode`\^^dd=12
\catcode`\^^de=12
\catcode`\^^df=12
\catcode`\^^e0=12
\catcode`\^^e1=12
\catcode`\^^e2=12
\catcode`\^^e3=12
\catcode`\^^e4=12
\catcode`\^^e5=12
\catcode`\^^e6=12
\catcode`\^^e7=12
\catcode`\^^e8=12
\catcode`\^^e9=12
\catcode`\^^ea=12
\catcode`\^^eb=12
\catcode`\^^ec=12
\catcode`\^^ed=12
\catcode`\^^ee=12
\catcode`\^^ef=12
\catcode`\^^f0=12
\catcode`\^^f1=12
\catcode`\^^f2=12
\catcode`\^^f3=12
\catcode`\^^f4=12
\catcode`\^^f5=12
\catcode`\^^f6=12
\catcode`\^^f7=12
\catcode`\^^f8=12
\catcode`\^^f9=12
\catcode`\^^fa=12
\catcode`\^^fb=12
\catcode`\^^fc=12
\catcode`\^^fd=12
\catcode`\^^fe=12
\catcode`\^^ff=12
}
%
\def\endchinese{\endgroup}
%
\chiactive %switch on characters so we can define the macros with them active
\def\beginchinese{\begingroup\chiactive
% make characters used in GB/JIS encoding active so they can become macros
% always end the line after saying \beginchinese
%    any characters on the same line will have already been read with
%    their non-chinese meanings
\def^^a0{\chichar{160}{\cfaA}}%
\def^^a1{\chichar{161}{\cfaB}}%
\def^^a2{\chichar{162}{\cfaC}}%
\def^^a3{\chichar{163}{\cfaD}}%
\def^^a4{\chichar{164}{\cfaE}}%
\def^^a5{\chichar{165}{\cfaF}}%
\def^^a6{\chichar{166}{\cfaG}}%
\def^^a7{\chichar{167}{\cfaH}}%
\def^^a8{\chichar{168}{\cfaI}}%
\def^^a9{\chichar{169}{\cfaJ}}%
\def^^aa{\chichar{170}{\cfaa}}%
\def^^ab{\chichar{171}{\cfab}}%
\def^^ac{\chichar{172}{\cfac}}%
\def^^ad{\chichar{173}{\cfad}}%
\def^^ae{\chichar{174}{\cfae}}%
\def^^af{\chichar{175}{\cfaf}}%
\def^^b0{\chichar{176}{\cfbA}}%
\def^^b1{\chichar{177}{\cfbB}}%
\def^^b2{\chichar{178}{\cfbC}}%
\def^^b3{\chichar{179}{\cfbD}}%
\def^^b4{\chichar{180}{\cfbE}}%
\def^^b5{\chichar{181}{\cfbF}}%
\def^^b6{\chichar{182}{\cfbG}}%
\def^^b7{\chichar{183}{\cfbH}}%
\def^^b8{\chichar{184}{\cfbI}}%
\def^^b9{\chichar{185}{\cfbJ}}%
\def^^ba{\chichar{186}{\cfba}}%
\def^^bb{\chichar{187}{\cfbb}}%
\def^^bc{\chichar{188}{\cfbc}}%
\def^^bd{\chichar{189}{\cfbd}}%
\def^^be{\chichar{190}{\cfbe}}%
\def^^bf{\chichar{191}{\cfbf}}%
\def^^c0{\chichar{192}{\cfcA}}%
\def^^c1{\chichar{193}{\cfcB}}%
\def^^c2{\chichar{194}{\cfcC}}%
\def^^c3{\chichar{195}{\cfcD}}%
\def^^c4{\chichar{196}{\cfcE}}%
\def^^c5{\chichar{197}{\cfcF}}%
\def^^c6{\chichar{198}{\cfcG}}%
\def^^c7{\chichar{199}{\cfcH}}%
\def^^c8{\chichar{200}{\cfcI}}%
\def^^c9{\chichar{201}{\cfcJ}}%
\def^^ca{\chichar{202}{\cfca}}%
\def^^cb{\chichar{203}{\cfcb}}%
\def^^cc{\chichar{204}{\cfcc}}%
\def^^cd{\chichar{205}{\cfcd}}%
\def^^ce{\chichar{206}{\cfce}}%
\def^^cf{\chichar{207}{\cfcf}}%
\def^^d0{\chichar{208}{\cfdA}}%
\def^^d1{\chichar{209}{\cfdB}}%
\def^^d2{\chichar{210}{\cfdC}}%
\def^^d3{\chichar{211}{\cfdD}}%
\def^^d4{\chichar{212}{\cfdE}}%
\def^^d5{\chichar{213}{\cfdF}}%
\def^^d6{\chichar{214}{\cfdG}}%
\def^^d7{\chichar{215}{\cfdH}}%
\def^^d8{\chichar{216}{\cfdI}}%
\def^^d9{\chichar{217}{\cfdJ}}%
\def^^da{\chichar{218}{\cfda}}%
\def^^db{\chichar{219}{\cfdb}}%
\def^^dc{\chichar{220}{\cfdc}}%
\def^^dd{\chichar{221}{\cfdd}}%
\def^^de{\chichar{222}{\cfde}}%
\def^^df{\chichar{223}{\cfdf}}%
\def^^e0{\chichar{224}{\cfeA}}%
\def^^e1{\chichar{225}{\cfeB}}%
\def^^e2{\chichar{226}{\cfeC}}%
\def^^e3{\chichar{227}{\cfeD}}%
\def^^e4{\chichar{228}{\cfeE}}%
\def^^e5{\chichar{229}{\cfeF}}%
\def^^e6{\chichar{230}{\cfeG}}%
\def^^e7{\chichar{231}{\cfeH}}%
\def^^e8{\chichar{232}{\cfeI}}%
\def^^e9{\chichar{233}{\cfeJ}}%
\def^^ea{\chichar{234}{\cfea}}%
\def^^eb{\chichar{235}{\cfeb}}%
\def^^ec{\chichar{236}{\cfec}}%
\def^^ed{\chichar{237}{\cfed}}%
\def^^ee{\chichar{238}{\cfee}}%
\def^^ef{\chichar{239}{\cfef}}%
\def^^f0{\chichar{240}{\cffA}}%
\def^^f1{\chichar{241}{\cffB}}%
\def^^f2{\chichar{242}{\cffC}}%
\def^^f3{\chichar{243}{\cffD}}%
\def^^f4{\chichar{244}{\cffE}}%
\def^^f5{\chichar{245}{\cffF}}%
\def^^f6{\chichar{246}{\cffG}}%
\def^^f7{\chichar{247}{\cffH}}%
\def^^f8{\chichr{248}}%
\def^^f9{\chichr{249}}%
\def^^fa{\chichr{250}}%
\def^^fb{\chichr{251}}%
\def^^fc{\chichr{252}}%
\def^^fd{\chichr{253}}%
\def^^fe{\chichr{254}}%
\def^^ff{\chichr{255}}}% that was the end of the \def for \beginchinese
% these below might be convenient to use for user-defined characters
%\def^^f9{\chichar{249}{\cffJ}}
%\def^^fa{\chichar{250}{\cffa}}
%\def^^fb{\chichar{251}{\cffb}}
%\def^^fc{\chichar{252}{\cffc}}
%\def^^fd{\chichar{253}{\cffd}}
%\def^^fe{\chichar{254}{\cffe}}
%\def^^ff{\chichar{255}{\cfff}}
\inactive % switch the active characters back off until they are needed
