Current File : //usr/share/texlive/texmf-dist/tex/generic/stringenc/se-utf8.def |
%%
%% This is file `se-utf8.def',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% stringenc.dtx (with options: `utf8')
%%
%% This is a generated file.
%%
%% Project: stringenc
%% Version: 2019/11/29 v1.12
%%
%% Copyright (C)
%% 2007-2011 Heiko Oberdiek
%% 2016-2019 Oberdiek Package Support Group
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3c of this license or (at your option) any later
%% version. This version of this license is in
%% https://www.latex-project.org/lppl/lppl-1-3c.txt
%% and the latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
%%
%% This work has the LPPL maintenance status "maintained".
%%
%% The Current Maintainers of this work are
%% Heiko Oberdiek and the Oberdiek Package Support Group
%% https://github.com/ho-tex/stringenc/issues
%%
%%
%% The Base Interpreter refers to any `TeX-Format',
%% because some files are installed in TDS:tex/generic//.
%%
%% This work consists of the main source file stringenc.dtx
%% and the derived files
%% stringenc.sty, stringenc.pdf, stringenc.ins, stringenc.drv,
%% se-utf32be.def, se-utf32le.def, se-utf8.def, se-utf16le.def,
%% se-pdfdoc.def, se-iso-8859-1.def, se-cp1252.def,
%% se-ascii.def, se-ascii-print.def, se-clean7bit.def,
%% se-iso-8859-2.def, se-iso-8859-3.def, se-iso-8859-4.def,
%% se-iso-8859-5.def, se-iso-8859-6.def, se-iso-8859-7.def,
%% se-iso-8859-8.def, se-iso-8859-9.def, se-iso-8859-10.def,
%% se-iso-8859-11.def, se-iso-8859-13.def, se-iso-8859-14.def,
%% se-iso-8859-15.def, se-iso-8859-16.def, se-koi8-r.def,
%% se-nextstep.def, se-mac-centeuro.def, se-mac-cyrillic.def,
%% se-mac-roman.def, se-dec-mcs.def, se-cp437.def,
%% se-cp850.def, se-cp852.def, se-cp855.def, se-cp858.def,
%% se-cp865.def, se-cp866.def, se-cp1250.def, se-cp1251.def,
%% se-cp1257.def, stringenc-test1.tex, stringenc-test2.tex.
%%
\ProvidesFile{se-utf8.def}[2019/11/29 v1.12 stringenc: UTF-8]
\expandafter\gdef\csname\SE@PrefixTo utf8\endcsname#1#2#3#4{%
\ifnum"#1#2#3#4<"80 %
\SE@ResultAdd{#3#4}%
\else
\ifnum"#1#2#3#4<"800 %
\edef\SE@temp{%
\SE@Nibble@NumToBin{"#3}%
}%
\edef\SE@temp{%
11%
\SE@Nibble@NumToBin{"#2}%
\expandafter\SE@CarTwo\SE@temp\@nil
10%
\expandafter\ltx@gobbletwo\SE@temp
}%
\SE@ResultAdd{%
\SE@Nibbles@BinToHex\SE@temp
#4%
}%
\else
\edef\SE@temp{%
\SE@Nibble@NumToBin{"#3}%
}%
\edef\SE@temp{%
10%
\SE@Nibble@NumToBin{"#2}%
\expandafter\SE@CarTwo\SE@temp\@nil
10%
\expandafter\ltx@gobbletwo\SE@temp
}%
\SE@ResultAdd{%
E#1%
\SE@Nibbles@BinToHex\SE@temp
#4%
}%
\fi
\fi
}
\expandafter\gdef\csname\SE@PrefixSurrogateTo utf8\endcsname
#1#2#3#4#5#6#7#8{%
\edef\SE@w{\SE@Nibble@NumToBin{"#2}}%
\edef\SE@a{\SE@Nibble@NumToBin{"#3}}%
\edef\SE@b{\SE@Nibble@NumToBin{"#4}}%
\edef\SE@c{\SE@Nibble@NumToBin{"#6}}%
\edef\SE@d{\SE@Nibble@NumToBin{"#7}}%
\edef\SE@w{%
\expandafter\ltx@gobbletwo\SE@w
\expandafter\SE@CarTwo\SE@a\@nil
}%
\edef\SE@w{%
\SE@Nibbles@BinToHex\SE@w
}%
\SE@Add\SE@w{\expandafter"\SE@w}\ltx@one
\ifnum\SE@w>15 %
\def\SE@char{1}%
\SE@Add\SE@w\SE@w{-16}%
\else
\def\SE@char{0}%
\fi
\edef\SE@w{\SE@Nibble@NumToBin\SE@w}%
\edef\SE@temp{%
0\SE@char
\expandafter\SE@CarTwo\SE@w\@nil
10%
\expandafter\ltx@gobbletwo\SE@w
\expandafter\ltx@gobbletwo\SE@a
\expandafter\SE@CarTwo\SE@b\@nil
10%
\expandafter\ltx@gobbletwo\SE@b
\expandafter\ltx@gobbletwo\SE@c
\expandafter\SE@CarTwo\SE@d\@nil
10%
\expandafter\ltx@gobbletwo\SE@d
}%
\SE@ResultAdd{%
F%
\SE@Nibbles@BinToHex\SE@temp
#8%
}%
}
\expandafter\gdef\csname\SE@PrefixFrom utf8\endcsname#1{%
\let\SE@temp\ltx@empty
\let\SE@next\SE@utfviii@filter
\expandafter\SE@utfviii@filter#1\relax\relax
\ifcase\ifSE@TestMode
\ifSE@invalid
\ltx@one
\else
\ltx@zero
\fi
\else
\ltx@zero
\fi
\expandafter\SE@utfviii@from\SE@temp\relax\relax\relax\relax
\relax\relax\relax\relax
\fi
}
\gdef\SE@utfviii@filter#1#2{%
\ifx#1\relax
\let\SE@next\relax
\else
\ifcase\ifnum"#1#2>"F4 %
\ltx@zero
\else
\ifnum"#1#2="C0 %
\ltx@zero
\else
\ifnum"#1#2="C1 %
\ltx@zero
\else
\ltx@one
\fi
\fi
\fi
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\fi
\else
\edef\SE@temp{\SE@temp#1#2}%
\fi
\fi
\SE@next
}
\gdef\SE@utfviii@from#1#2#3#4#5#6#7#8{%
\ifx#1\relax
\let\SE@next\relax
\else
\ifnum"#1<8 % 0xxx xxxx
\SE@ResultAdd{00#1#2}%
\def\SE@next{\SE@utfviii@from#3#4#5#6#7#8}%
\else
\ifnum"#1<12 % 10xx xxxx
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\else
\def\SE@next{\SE@utfviii@from#3#4#5#6#7#8}%
\fi
\else
\ifx#3\relax
\let\SE@next\relax
\SE@InvalidCharacter
\else
\ifcase\SE@utfviii@CheckCont#3%
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\else
\def\SE@next{\SE@utfviii@from#3#4#5#6#7#8}%
\fi
\else
\ifnum"#1<14 % 110y yyyy 10xx xxxx
% 0000 0yyy yyxx xxxx
\edef\SE@temp{%
\SE@Nibble@NumToBin{"#3}%
}%
\edef\SE@temp{%
0\ifodd"#1 1\else 0\fi
\SE@Nibble@NumToBin{"#2}%
\expandafter\ltx@gobbletwo\SE@temp
}%
\SE@ResultAdd{%
0%
\SE@Nibbles@BinToHex\SE@temp
#4%
}%
\def\SE@next{\SE@utfviii@from#5#6#7#8}%
\else
\ifx#5\relax
\let\SE@next\relax
\SE@InvalidCharacter
\else
\ifcase\SE@utfviii@CheckCont#5%
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\else
\def\SE@next{\SE@utfviii@from#5#6#7#8}%
\fi
\else
\ifnum"#1=14 % 1110 zzzz 10yy yyyy 10xx xxxx
% zzzz yyyy yyxx xxxx
\ifcase\ifnum"#2="D %
\ifnum"#3#4>"9F %
\ltx@zero
\else
\ltx@one
\fi
\else
\ifnum"#2=\ltx@zero
\ifnum"#3<"A %
\ltx@zero
\else
\ltx@one
\fi
\else
\ltx@one
\fi
\fi
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\else
\def\SE@next{\SE@utfviii@from#7#8}%
\fi
\else
\edef\SE@a{\SE@Nibble@NumToBin{"#3}}%
\edef\SE@b{\SE@Nibble@NumToBin{"#5}}%
\edef\SE@temp{%
\expandafter\ltx@gobbletwo\SE@a
\SE@Nibble@NumToBin{"#4}%
\expandafter\ltx@gobbletwo\SE@b
}%
\SE@ResultAdd{%
#2%
\SE@Nibbles@BinToHex\SE@temp
#6%
}%
\def\SE@next{\SE@utfviii@from#7#8}%
\fi
\else
\ifx#7\relax
\let\SE@next\relax
\SE@InvalidCharacter
\else
\ifcase\SE@utfviii@CheckCont#7%
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\else
\def\SE@next{\SE@utfviii@from#7#8}%
\fi
\else
\let\SE@next\SE@utfviii@from
\ifnum"#2<8 % 1111 0uuu 10uu zzzz 10yy yyyy 10xx xxxx
% 1101 10ww wwzz zzyy 1101 11yy yyxx xxxx
\edef\SE@w{\SE@Nibble@NumToBin{"#3}}%
\edef\SE@w{%
00%
\SE@Nibble@NumToBin{"#2}%
\expandafter\ltx@gobbletwo\SE@w
}%
\edef\SE@w{\SE@Nibbles@BinToHex\SE@w}%
\SE@Add\SE@w{\expandafter"\SE@w}{-1}%
\ifnum\SE@w>15 %
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\fi
\else
\ifnum\SE@w<\ltx@zero
\SE@InvalidCharacter
\ifSE@TestMode
\let\SE@next\SE@SkipRemaining
\fi
\else
\edef\SE@a{\SE@Nibble@NumToBin{"#5}}%
\edef\SE@b{\SE@Nibble@NumToBin{"#7}}%
\edef\SE@temp{%
10%
\SE@Nibble@NumToBin\SE@w
\SE@Nibble@NumToBin{"#4}%
\expandafter\ltx@gobbletwo\SE@a
1101%
11%
\SE@Nibble@NumToBin{"#6}%
\expandafter\ltx@gobbletwo\SE@b
}%
\SE@ResultAdd{%
D%
\SE@Nibbles@BinToHex\SE@temp
#8%
}%
\fi
\fi
\else
\SE@InvalidCharacter
\if\SE@TestMode
\let\SE@next\SE@SkipRemaining
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\fi
\SE@next
}
\gdef\SE@utfviii@CheckCont#1{%
\ifnum"#1<8 %
\ltx@zero
\else
\ifnum"#1<12 %
\ltx@one
\else
\ltx@zero
\fi
\fi
}
\endinput
%%
%% End of file `se-utf8.def'.