From 8b4c4dba6b23ddbfe20886ac64828e1a19fefa43 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 13 Jan 2013 23:06:54 +0000 Subject: bxbase (13jan13) git-svn-id: svn://tug.org/texlive/trunk@28825 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/bxbase/bxutf8.def | 168 ++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/bxbase/bxutf8.def (limited to 'Master/texmf-dist/tex/latex/bxbase/bxutf8.def') diff --git a/Master/texmf-dist/tex/latex/bxbase/bxutf8.def b/Master/texmf-dist/tex/latex/bxbase/bxutf8.def new file mode 100644 index 00000000000..1422552e095 --- /dev/null +++ b/Master/texmf-dist/tex/latex/bxbase/bxutf8.def @@ -0,0 +1,168 @@ +% +% bxutf8.def +% +%%%% package declarations +\ProvidesFile{bxutf8.def}[2010/05/05 v0.5 BX UTF-8 input encoding] +% +% Note: All definitions in this file should be local. +% +%%%% preparation +% Here spaces are set back to valid. So great care must be taken +% so spaces should not be spilt out (in horizontal mode). +\catcode32=10\relax +\expandafter\edef\csname bx@b@resetcatcodes\endcsname{% " . : @ + \catcode34=\the\catcode34\catcode46=\the\catcode46% + \catcode58=\the\catcode39\catcode64=\the\catcode64\relax}% +\catcode34=12 \catcode46=12 \catcode58=12 \catcode64=11 % +% abort when this is first loaded after \begin{document} +\def\bxus@i@error{\PackageError{inputenc}}% +\ifx\@nodocument\relax + \ifx\bxus@bxutf@loaded\@undefined + \bxus@i@error{cannot load `bxutf8' after \string\begin{document}}% + \@eha \bx@b@resetcatcodes\endinput\fi\fi +% +%%%% load 'utf8' encoding +\InputIfFileExists{utf8.def}{}% + {\bxus@i@error{input encoding `utf8' unavailable}% + \@eha \bx@b@resetcatcodes\endinput}% +\makeatletter +%\@inpenc@test % This is done in utf8.def +% +%%%% attach the hook +\def\UTFviii@two@octets#1#2{\expandafter\bxus@choice + \csname u8:#1\string#2\endcsname#1#2.@}% +\def\UTFviii@three@octets#1#2#3{\expandafter\bxus@choice + \csname u8:#1\string#2\string#3\endcsname#1#2#3@}% +\def\UTFviii@four@octets#1#2#3#4{\expandafter\bxus@choice@four + \csname u8:#1\string#2\string#3\string#4\endcsname#1#2#3#4@}% +% +%%%% attach the hook (old version) +% * This hook was found to fail in pTeX. +% Here #1 is a control word of form \u8:. If it is +% defined in standard way of utf8.def, then it is dispatched; +% otherwise it is passed to \bxus@preproc. +%\def\UTFviii@defined#1{% +% \ifx#1\relax \bxus@preproc#1% +% \else\expandafter#1\fi}% +%%%% \bxus@preproc\CS +%\def\bxus@preproc#1{% +% \expandafter\bxus@preproc@a\string#1..\@nil}% +%\def\bxus@preproc@a#1:#2#3#4#5#6\@nil{% +% \if.#5\bxus@proc#2#3#4\else\bxus@err@uknbc\fi}% +% +% When this file is reloaded, the 'static' part will be skipped. +\ifx\bxus@bxutf@loaded\@undefined\else + \bx@b@resetcatcodes\endinput \fi +\let\bxus@bxutf@loaded=t% +% +%%---------- Beginning of static part +% +%%%% error messages +\def\bxus@err@uknbc{\bxus@i@error{Unknown non-BMP character found}% + {bxutf8 cannot handle non-BMP characters.}}% +\def\bxus@err@nodrv{\bxus@i@error{Unicode driver not found}\@ehb}% +% +%%%% make tables +\def\bxus@fornbl{% + \bxus@fornbl@a00001102203310411512613720821922A23B30C31D32E33FXXX}% +\def\bxus@fornbl@a#1#2#3{% + \if X#1\else + \@namedef{bxus@*#1#2}{#3}% + \bxus@defchr{F#3}{0#1#2}\bxus@defchr{E#3}{#1#2}% + \bxus@defchr{C#3}{000#1#2}\bxus@defchr{D#3}{001#1#2}% + \bxus@defchr{8#3}{0#1#2}\bxus@defchr{9#3}{1#1#2}% + \bxus@defchr{A#3}{2#1#2}\bxus@defchr{B#3}{3#1#2}% + \expandafter\bxus@fornbl@a\fi}% +\def\bxus@defchr#1#2{% + {\lccode`\!="#1% + \lowercase{\expandafter\gdef\csname bxus@@!\endcsname{#2}}}}% +\bxus@fornbl \@namedef{bxus@@.}{}% +% +%%%% \bxcs@choice +%% Called in the form +%% \bxus@choice[\u8:??]??.@ (2-byte) or +%% \bxus@choice[\u8:???]???@ (3-byte) +%% where ?? is a (TF-8 byte string and [\u8:...] denotes a single +%% control word. This macro expands to the control word if it is +%% defined; otherwise expands to \bxus@proc. +\def\bxus@choice#1#2@{% + \ifx#1\relax \bxus@proc#2% + \else\expandafter#1\fi}% +% +%%%% \bxus@choice@four +\def\bxus@choice@four#1#2@{% + \ifx#1\relax \bxus@prociv#2% + \else\expandafter#1\fi}% +% +%%%% \bxus@proc +%% When ??? is the UTF-8 string of U+XXXX (padded to length 3 with +%% a dot), then \bxus@proc@a??? fully expands to \bxUHex{XXXX}. +%% (\bxUHex should be robust.) +\def\bxus@proc#1#2#3{% + \expandafter\bxus@proc@b\csname bxus@@\string#1\expandafter\endcsname + \csname bxus@@\string#2\expandafter\endcsname + \csname bxus@@\string#3\endcsname}% +\def\bxus@proc@b#1#2#3{% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter\bxus@proc@c + \expandafter\expandafter\expandafter#1% + \expandafter#2#3}% +\def\bxus@proc@c#1#2#3#4#5#6#7#8{% + \expandafter\bxus@proc@d\csname bxus@*#1#2\expandafter\endcsname + \csname bxus@*#3#4\expandafter\endcsname + \csname bxus@*#5#6\expandafter\endcsname + \csname bxus@*#7#8\endcsname}% +\def\bxus@proc@d#1#2{% + \expandafter\expandafter\expandafter\bxus@proc@e + \expandafter#1#2\@nil}% +\def\bxus@proc@e#1\@nil#2#3{% + \bxus@proc@f#2#3#1\@nil}% +\def\bxus@proc@f#1#2{% + \expandafter\expandafter\expandafter\bxus@proc@g + \expandafter#1#2\@nil}% +\def\bxus@proc@g#1\@nil#2\@nil{% + \bxUHex{#2#1}}% +% +\def\bxus@prociv#1#2#3#4{% + \expandafter\bxus@prociv@a\csname bxus@@\string#1\expandafter\endcsname + \csname bxus@@\string#2\expandafter\endcsname + \csname bxus@@\string#3\expandafter\endcsname + \csname bxus@@\string#4\endcsname}% +\def\bxus@prociv@a#1#2#3#4{% + \expandafter\expandafter\expandafter\bxus@prociv@b + \expandafter#3#4@#1#2} +\def\bxus@prociv@b#1@#2#3{% + \expandafter\expandafter\expandafter\bxus@prociv@c + \expandafter#2#3#1@@} +\def\bxus@prociv@c#1#2#3#4{% + \expandafter\bxus@prociv@d\csname bxus@*#1#2\expandafter\endcsname + \csname bxus@*#3#4\endcsname} +\def\bxus@prociv@d#1#2{% + \expandafter\expandafter\expandafter\bxus@prociv@e + \expandafter#1#2} +\def\bxus@prociv@e#1#2#3@#4@{\bxus@prociv@f#3@#4#1#2@} +\def\bxus@prociv@f#1#2#3#4{% + \expandafter\bxus@prociv@g\csname bxus@*#1#2\expandafter\endcsname + \csname bxus@*#3#4\endcsname} +\def\bxus@prociv@g#1#2{% + \expandafter\expandafter\expandafter\bxus@prociv@h + \expandafter#1#2} +\def\bxus@prociv@h#1#2#3@#4@{\bxus@prociv@i#3@#4#1#2@} +\def\bxus@prociv@i#1#2#3#4{% + \expandafter\bxus@prociv@j\csname bxus@*#1#2\expandafter\endcsname + \csname bxus@*#3#4\endcsname} +\def\bxus@prociv@j#1#2{% + \expandafter\expandafter\expandafter\bxus@prociv@k + \expandafter#1#2} +\def\bxus@prociv@k#1#2@#3@{\bxUHex{#3#1#2}} + + + + +%%%% default (useless) Unicode driver +\providecommand*\bxUHex[1]{?\protect\bxus@err@nodrv}% +% +%%%% all done +\bx@b@resetcatcodes +\endinput +%% EOF -- cgit v1.2.3