# -*-coding: mule-utf-8;-*-

# Tags (U+E0001..U+E007F)

PROVIDE MULTILINE
\global\let\uc@combining@prechar\@ne
\ifx\uc@tagtoks\undefined\newtoks\uc@tagtoks\fi
\gdef\uc@langtag{%
  \expandafter\uppercase\expandafter{\expandafter\uc@tagtoks\expandafter{\the\uc@tagtoks}}%
  \expandafter\ifx\expandafter\@nil\the\uc@tagtoks\@nil\uc@tagtoks{@empty}\fi
  \expandafter\ifx\csname language\the\uc@tagtoks\endcsname\relax
    \PackageError{ucs}{Unknown language tag '\the\uc@tagtoks' (\@backslashchar language\the\uc@tagtoks)}{%
      Define it via \@backslashchar newcommand\@backslashchar language\the\uc@tagtoks{...}.}%
  \else
    \csname language\the\uc@tagtoks\endcsname
  \fi}%
\gdef\uc@endtag{%
  \uc@tagtype%
  \uc@tagtoks{}\let\uc@tagtype\undefined%
  \let\uc@prechar\undefined}%
\gdef\uc@tag#1{%
  \uc@tagtoks\expandafter{\the\uc@tagtoks#1}}%
\gdef\uc@starttag#1{%
  \ifx\uc@prechar\undefined
    \def\uc@prechar##1{\ifnum##1<"E0020 \uc@endtag\fi\ifnum##1>"E007E \uc@endtag\fi}%
    \let\uc@tagtype#1%
  \else
    \PackageError{ucs}{\protect\uc@prechar\space already
      defined.}{Something is already using the \protect\uc@prechar
      mechanism. Tags can't be collected properly.}%
  \fi}%
{\lccode`\A`\{\relax\lccode`\B`\}\relax\lccode`\C`\~\lowercase{%
  \gdef\@leftbracechar{A}%
  \gdef\@rightbracechar{B}%
  \gdef\@tildechar{C}}}%
END

CTRLGLYPH

U+E0001 \uc@starttag\uc@langtag	# [Á³À À€Â]	# [󠀁]

# If other possible tag types occur, 
# add them after \undefined in the next command.
U+E007F \uc@tagtoks{CANCEL}\ifx\uc@tagtype\undefined\uc@langtag\else\uc@tagtype\fi\uc@tagtoks{}\let\uc@tagtype\undefined\let\uc@prechar\undefined	# [󠁿]

ENVELOPE \uc@tag @@@

U+E0020 { }		# [ó € ]
U+E0021 !		# [󠀡]
U+E0022 "		# [ó €¢]
U+E0023 {##}		# [ó €£]
U+E0024 $		# [󠀤]
U+E0025 \@percentchar	# [ó €¥]
U+E0026 &		# [󠀦]
U+E0027 '		# [ó €§]
U+E0028 (		# [󠀨]
U+E0029 )		# [󠀩]
U+E002A *		# [󠀪]
U+E002B +		# [󠀫]
U+E002C ,		# [󠀬]
U+E002D -		# [ó €­]
U+E002E .		# [ó €®]
U+E002F /		# [󠀯]
U+E0030 0		# [ó €°]
U+E0031 1		# [ó €±]
U+E0032 2		# [ó €²]
U+E0033 3		# [ó €³]
U+E0034 4		# [ó €´]
U+E0035 5		# [ó €µ]
U+E0036 6		# [ó €¶]
U+E0037 7		# [ó €·]
U+E0038 8		# [󠀸]
U+E0039 9		# [ó €¹]
U+E003A :		# [󠀺]
U+E003B ;		# [ó €»]
U+E003C <		# [ó €¼]
U+E003D =		# [ó €½]
U+E003E >		# [ó €¾]
U+E003F ?		# [󠀿]
U+E0040 @		# [󠁀]
U+E0041 A		# [󠁁]
U+E0042 B		# [󠁂]
U+E0043 C		# [󠁃]
U+E0044 D		# [󠁄]
U+E0045 E		# [󠁅]
U+E0046 F		# [󠁆]
U+E0047 G		# [󠁇]
U+E0048 H		# [󠁈]
U+E0049 I		# [󠁉]
U+E004A J		# [󠁊]
U+E004B K		# [󠁋]
U+E004C L		# [󠁌]
U+E004D M		# [󠁍]
U+E004E N		# [󠁎]
U+E004F O		# [󠁏]
U+E0050 P		# [󠁐]
U+E0051 Q		# [󠁑]
U+E0052 R		# [󠁒]
U+E0053 S		# [󠁓]
U+E0054 T		# [󠁔]
U+E0055 U		# [󠁕]
U+E0056 V		# [󠁖]
U+E0057 W		# [󠁗]
U+E0058 X		# [󠁘]
U+E0059 Y		# [󠁙]
U+E005A Z		# [󠁚]
U+E005B [		# [󠁛]
U+E005C \@backslashchar	# [󠁜]
U+E005D ]		# [󠁝]
U+E005E ^		# [󠁞]
U+E005F _		# [󠁟]
U+E0060 `		# [󠁠]
U+E0061 a		# [󠁡]
U+E0062 b		# [󠁢]
U+E0063 c		# [󠁣]
U+E0064 d		# [󠁤]
U+E0065 e		# [󠁥]
U+E0066 f		# [󠁦]
U+E0067 g		# [󠁧]
U+E0068 h		# [󠁨]
U+E0069 i		# [󠁩]
U+E006A j		# [󠁪]
U+E006B k		# [󠁫]
U+E006C l		# [󠁬]
U+E006D m		# [󠁭]
U+E006E n		# [󠁮]
U+E006F o		# [󠁯]
U+E0070 p		# [󠁰]
U+E0071 q		# [󠁱]
U+E0072 r		# [󠁲]
U+E0073 s		# [󠁳]
U+E0074 t		# [󠁴]
U+E0075 u		# [󠁵]
U+E0076 v		# [󠁶]
U+E0077 w		# [󠁷]
U+E0078 x		# [󠁸]
U+E0079 y		# [󠁹]
U+E007A z		# [󠁺]
U+E007B \@leftbracechar	# [󠁻]
U+E007C |		# [󠁼]
U+E007D \@rightbracechar # [󠁽]
U+E007E \@tildechar	# [󠁾]