%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Module:    Redefinitions for Common Encoding
%
% Copyright 1989--2020 by Paul C. Anagnostopoulos
% under The MIT License (opensource.org/licenses/MIT)
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


% Redefine accents.

\def \"#1{{\accent 8 #1}}               %~ Umlaut accent. %^accent

\def \.#1{{\accent 11 #1}}              %~ Dot accent. %^accent

\def \H #1{{\accent 12 #1}}             %~ Long Hungarian umlaut accent. %^accent

\def \^#1{{\accent 7 #1}}               %~ Circumflex accent. %^accent

\def \g #1{%                            %~ Ogonek accent. %^accent
  \setbox \zboxa = \hbox{#1}%
  \if \dimeqlp{\ht\zboxa}{1ex}%
    \accent 14 #1%
  \else
    {\ooalign{\hidewidth \char 14 \hidewidth \cr
              \unhbox \zboxa}}%
  \fi}

\def \~#1{{\accent 15 #1}}              %~ Tilde accent. %^accent


% Redefine standard ASCII characters.

\def \udquote {%                        %~ Undirected double quote. %^named_char
  \ensurepar
  \char "22\relax}

\def \dollar {%                         %~ Dollar sign. %^named_char
  \zprehyph{\dollarhyph}%
  \char "24\relax
  \zposthyph{\dollarhyph}}

\let \$ = \dollar

\def \less {%                           %~ Less-than sign. %^named_char
  \ensurepar
  \char "3C\relax}

\let \< = \relax

\def \greater {%                        %~ Greater-than sign. %^named_char
  \ensurepar
  \char "3E\relax}

\let \> = \relax

\def \backslash {%                      %~ Backslash. %^named_char
  \ensurepar
  \if \mathmodep
    \zmbackslash
  \else
    \char "5C\relax
  \fi}

\let \\ = \backslash

\def \underscore {%                     %~ Underscore. %^named_char
  \ensurepar
  \zprehyph{\underscorehyph}%
  \char "5F\relax
  \zposthyph{\underscorehyph}}

\let \_ = \underscore

\def \lbrace {%                         %~ Left brace. %^named_char
  \relax
  \if \mathmodep
    \zmlbrace
  \else
    \char "7B\relax
  \fi}

\let \{ = \lbrace

\def \verticalbar {%                    %~ Vertical bar. %^named_char
  \ensurepar
  \char "7C\relax}

\def \rbrace {%                         %~ Right brace. %^named_char
  \relax
  \if \mathmodep
    \zmrbrace
  \else
    \char "7D\relax
  \fi}

\let \} = \rbrace


% Define additional special characters.

\def \specialchar #1#2{%                                {text-char}{math-char}
  \ensurepar
  \if \mathmodep
    \if \emptyargp{#2}%
      \error{scinmath}{Cannot use that special character in math mode}%
    \else
      #2\relax
    \fi
  \else
    #1\relax
  \fi}

% Decided not to make these two characters pseudo-ligatures.

\def \exclamdown   {\specialchar{\char 142}{}}          %~ Upside-down exclamation.
\def \questiondown {\specialchar{\char 143}{}}          %~ Upside-down question mark.

\def \bullet       {\specialchar{\char 150}{\zmbullet}} %~ Bullet.
\def \cent         {\specialchar{\char 151}{}}          %~ Cent sign.
\let \cents = \cent
\def \copyright    {\specialchar{\char 152}{}}          %~ Copyright symbol.
\def \currency     {\specialchar{\char 153}{}}          %~ Currency symbol.
\def \dagger       {\specialchar{\char 154}{\zmdagger}} %~ Dagger.
\def \ddagger      {\specialchar{\char 155}{\zmddagger}}%~ Double dagger.
\def \degree       {\specialchar{\char 156}{^\circ}}    %~ Degree sign.
\let \degrees = \degree
\def \Edh          {\specialchar{\char 157}{}}          %~ Uppercase Edh.
\def \edh          {\specialchar{\char 158}{}}          %~ Lowercase edh.
\def \euro         {\specialchar{\char 159}{}}          %~ Euro symbol.
\def \florin       {\specialchar{\char 160}{}}          %~ Florin.
\def \lguill       {\specialchar{\char 161}{}}          %~ Left guillemot.
\def \rguill       {\specialchar{\char 162}{}}          %~ Right guillemot.
\def \L            {\specialchar{\char 163}{}}          %~ Uppercase Polish L.
\def \l            {\specialchar{\char 164}{}}          %~ Lowercase Polish l.
\def \minus        {\specialchar{\char 165}{}}          %~ Minus sign.
\def \P            {\specialchar{\char 166}{}}          %~ Paragraph symbol (pilcrow).
\def \perthousand  {\specialchar{\char 167}{}}          %~ Per thousand symbol.
\def \usquote      {\specialchar{\char 168}{}}          %~ Undirected single quote.
\def \registered   {\specialchar{$^\roman{\char 169}$}{}} %~ Registered symbol.
\def \S            {\specialchar{\char 170}{}}          %~ Section sign.
\def \SS           {\specialchar{\char 170\kern -.1em\char 170}{}} %~ Double section sign.
\def \sterling     {\specialchar{\char 171}{}}          %~ Pound sterling symbol.
\def \Thorn        {\specialchar{\char 172}{}}          %~ Uppercase Thorn.
\def \thorn        {\specialchar{\char 173}{}}          %~ Lowercase thorn.
\def \trademark    {\specialchar{$^\roman{\char 174}$}{}} %~ Trademark symbol.
\def \yen          {\specialchar{\char 175}{}}          %~ Yen symbol.

% Redefine a few math things.

\definemathchar{\zmdagger}{\classbinop}{\rmfam}{9A}
\definemathchar{\zmddagger}{\classbinop}{\rmfam}{9B}