%D \module
%D   [       file=char-ini,
%D        version=2006.08.20,
%D          title=\CONTEXT\ Character Support,
%D       subtitle=Initialization,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

\writestatus{loading}{ConTeXt Character Support / Initialization}

\registerctxluafile{char-fio}{1.001}
\registerctxluafile{char-map}{1.001} % maybe we will load this someplace else
\registerctxluafile{char-tex}{1.001}
\registerctxluafile{char-ent}{1.001}

\unprotect

% ¨äëïöüÿ
% ´áćéíĺńóŕśúýź
% ˙ċėġiż
% ¯āēīōū
% ˝őű
% ˆâĉêĝĥîĵôŝûŵŷ
% `àèìòùỳ
% ¸çķļņŗşţ
% ˛ąęįų
% ˚åů
% ˘ăĕğĭŏŭ
% ˇčďěľňřšťž
% ˜ãĩñõũ

% \def\checkedchar#1% #2%
%   {\relax\iffontchar\font#1 \expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi{\char#1}}
%
% impossible in math mode so there always fallback (till we have gyre):
%
% use \normalUchar when possible .. the next one is nice for documents and it also accepts
% 0x prefixed numbers

\def\utfchar #1{\clf_utfchar \numexpr#1\relax}
\def\safechar#1{\clf_safechar\numexpr#1\relax}

\def\checkedchar        {\relax\ifmmode\expandafter\checkedmathchar\else\expandafter\checkedtextchar\fi} % #1#2
\def\checkedmathchar#1#2{#2}
%def\checkedtextchar  #1{\iffontchar\font#1 \expandafter\firstoftwoarguments\else\expandafter\secondoftwoarguments\fi{\char#1}}

\unexpanded\def\checkedtextchar#1% #2%
  {\clf_doifelsecharinfont\numexpr#1\relax{\char#1}} % {#2}

\unexpanded\def\textormathchar#1%
  {\relax\ifmmode
     \char#1\relax
   \else\iffontchar\font#1\relax
     \char#1\relax
   \else
     $\char#1$%
   \fi\fi}

%D The codes are stored in the format, so we don't need to reinitialize
%D them (unless of course we have adapted the table). It is on the agenda
%D to do this with \type {tex.lccode} cum suis once they're available.

% \def\setcclcuc#1#2#3{\global\catcode#1=\lettercatcode\global\lccode#1=#2\global\uccode#1=#3\relax}
% \def\setcclcucself#1{\global\catcode#1=\lettercatcode\global\lccode#1=#1\global\uccode#1=#1\relax }

% Is setting up vrb tpa and tpb needed?

% move to lua side

%clf_setcharactercodes

\clf_setlettercatcodes\texcatcodes
\clf_setlettercatcodes\ctxcatcodes
\clf_setlettercatcodes\notcatcodes
%clf_setlettercatcodes\mthcatcodes
\clf_setlettercatcodes\vrbcatcodes
\clf_setlettercatcodes\prtcatcodes
\clf_setlettercatcodes\tpacatcodes
\clf_setlettercatcodes\tpbcatcodes
\clf_setlettercatcodes\txtcatcodes

\clf_setactivecatcodes\ctxcatcodes
\clf_setactivecatcodes\notcatcodes
\clf_setactivecatcodes\prtcatcodes

\def\chardescription#1{\clf_chardescription#1\relax}

\protect \endinput
