% This is the file Bg5.chr of the CJK package
%   for using asiatic logographs (Chinese/Japanese/Korean) with LaTeX2e
%
% created by Werner Lemberg <a7621gac@awiuni11.bitnet>
%
% Version 2.5 (10-Apr-1995)

\def\fileversion{2.5}
\def\filedate{1995/04/10}
\ProvidesFile{Bg5.chr}[\filedate\space\fileversion]


% define macros for handling Big 5 encoded CJK fonts and characters.

\chardef\CJK@gap "0A0

\def\CJK@@@char#1#2#3{
  {\ifnum `#3 < \CJK@min
     \CJK@err
   \else
     \ifnum `#3 > \CJK@max
       \CJK@err
     \else
       \CJK@testLastKern

       \@tempcnta `#3
       \ifnum `#3 > \CJK@gap
         \advance\@tempcnta -34
       \fi
       \advance\@tempcnta #2
       \edef\CJK@plane{#1}
       \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
       \symbol{\@tempcnta}
     \fi
   \fi}}

% the same, but the plane crosses the font file boundary.

\def\CJK@@@charx#1#2#3#4{
  {\ifnum `#4 < \CJK@min
     \CJK@err
   \else
     \ifnum `#4 > \CJK@max
       \CJK@err
     \else
       \CJK@testLastKern

       \@tempcnta `#4
       \@tempcntb 256
       \ifnum `#4 > \CJK@gap
         \advance\@tempcnta -34
         \advance\@tempcntb 34
       \fi
       \advance\@tempcnta #3
       \advance\@tempcntb -#3
       \chardef\@temp \@tempcntb
       \ifnum `#4 < \@temp
         \edef\CJK@plane{#1}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \else
         \advance\@tempcnta -256
         \edef\CJK@plane{#2}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \fi
     \fi
   \fi}}

% define macros for handling punctuation characters.

\def\CJK@@@punctchar#1#2#3#4{
  {\ifnum `#4 < \CJK@min
     \CJK@err
   \else
     \ifnum `#4 > \CJK@max
       \CJK@err
     \else
       \CJK@charToHex{\CJK@temp}{#4}
       \CJK@ifNotPostPunct{Bg5}{#1}{\CJK@temp}
         \CJKglue
       \fi

       \@tempcnta `#4
       \ifnum `#4 > \CJK@gap
         \advance\@tempcnta -34
       \fi
       \advance\@tempcnta #3
       \edef\CJK@plane{#2}
       \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
       \symbol{\@tempcnta}

       \CJK@ifNotPrePunct{Bg5}{#1}{\CJK@temp}
       \else
         \CJK@kern
       \fi
     \fi
   \fi}}

\def\CJK@@@punctcharx#1#2#3#4#5{
  {\ifnum `#5 < \CJK@min
     \CJK@err
   \else
     \ifnum `#5 > \CJK@max
       \CJK@err
     \else
       \CJK@charToHex{\CJK@temp}{#5}
       \CJK@ifNotPostPunct{Bg5}{#1}{\CJK@temp}
         \CJKglue
       \fi

       \@tempcnta `#5
       \@tempcntb 256
       \ifnum `#5 > \CJK@gap
         \advance\@tempcnta -34
         \advance\@tempcntb 34
       \fi
       \advance\@tempcnta #4
       \advance\@tempcntb -#4
       \chardef\@temp \@tempcntb
       \ifnum `#5 < \@temp
         \edef\CJK@plane{#2}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \else
         \advance\@tempcnta -256
         \edef\CJK@plane{#3}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \fi

       \CJK@ifNotPrePunct{Bg5}{#1}{\CJK@temp}
       \else
         \CJK@kern
       \fi
     \fi
   \fi}}


% here are the macros for \CJKchar.

\def\CJK@char@#1#2#3{
  {\ifnum #3 < \CJK@min
     \CJK@err
   \else
     \ifnum #3 > \CJK@max
       \CJK@err
     \else
       \CJK@testLastKern

       \@tempcnta #3
       \ifnum #3 > \CJK@gap
         \advance\@tempcnta -34
       \fi
       \advance\@tempcnta #2
       \edef\CJK@plane{#1}
       \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
       \symbol{\@tempcnta}
     \fi
   \fi}}

% the same, but the plane crosses the font file boundary.

\def\CJK@charx@#1#2#3#4{
  {\ifnum #4 < \CJK@min
     \CJK@err
   \else
     \ifnum #4 > \CJK@max
       \CJK@err
     \else
       \CJK@testLastKern

       \@tempcnta #4
       \@tempcntb 256
       \ifnum #4 > \CJK@gap
         \advance\@tempcnta -34
         \advance\@tempcntb 34
       \fi
       \advance\@tempcnta #3
       \advance\@tempcntb -#3
       \chardef\@temp \@tempcntb
       \ifnum #4 < \@temp
         \edef\CJK@plane{#1}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \else
         \advance\@tempcnta -256
         \edef\CJK@plane{#2}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \fi
     \fi
   \fi}}

% for punctuation.

\def\CJK@punctchar@#1#2#3#4{
  {\ifnum #4 < \CJK@min
     \CJK@err
   \else
     \ifnum #4 > \CJK@max
       \CJK@err
     \else
       \CJK@numbToHex{\CJK@temp}{#4}
       \CJK@ifNotPostPunct{Bg5}{#1}{\CJK@temp}
         \CJKglue
       \fi

       \@tempcnta #4
       \advance\@tempcnta #3
       \edef\CJK@plane{#2}
       \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
       \symbol{\@tempcnta}

       \CJK@ifNotPrePunct{Bg5}{#1}{\CJK@temp}
       \else
         \CJK@kern
       \fi
     \fi
   \fi}}

\def\CJK@punctcharx@#1#2#3#4#5{
  {\ifnum #5 < \CJK@min
     \CJK@err
   \else
     \ifnum #5 > \CJK@max
       \CJK@err
     \else
       \CJK@numbToHex{\CJK@temp}{#5}
       \CJK@ifNotPostPunct{Bg5}{#1}{\CJK@temp}
         \CJKglue
       \fi

       \@tempcnta #5
       \@tempcntb 256
       \advance\@tempcnta #4
       \advance\@tempcntb -#4
       \chardef\@temp \@tempcntb
       \ifnum #5 < \@temp
         \edef\CJK@plane{#2}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \else
         \advance\@tempcnta -256
         \edef\CJK@plane{#3}
         \usefont{U}{\CJK@enc}{\CJK@series}{\CJK@shape}
         \symbol{\@tempcnta}
       \fi

       \CJK@ifNotPrePunct{Bg5}{#1}{\CJK@temp}
       \else
         \CJK@kern
       \fi
     \fi
   \fi}}

\endinput
