You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
364 lines
11 KiB
364 lines
11 KiB
%%
|
|
%% 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'.
|
|
|