diff --git a/unicodedomino.sty b/unicodedomino.sty index 00df29cae95e01a4e4e55ffc0d87763376e2dda2..88dad59698b068cbfb59978eceea304ea6303ebc 100644 --- a/unicodedomino.sty +++ b/unicodedomino.sty @@ -46,6 +46,18 @@ \uppercase\expandafter{\UTFviii@tmp}% \endgroup% +% now fixup to disallow too large definitions +\let\unicodedomino@parse@XML@charref\parse@XML@charref% +\gdef\parse@XML@charref{% + \ifnum\count@>"10FFFF\relax% + \PackageError{inputenc}{% + Cannot define Unicode char value\space% + \unicodedomino@shex\the\count@\relax\space (too large)% + }% + \fi% + \unicodedomino@parse@XML@charref% +}% + % nicer printing of codepoint hex numbers, not strictly necessary \def\unicodedomino@codepoint#1{% \ifnum#1>1048575% @@ -68,6 +80,14 @@ \UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}% }% +% and arbitrary numbers +\def\unicodedomino@shex#1\relax{% + \ifnum#1>15 % + \expandafter\unicodedomino@shex\expandafter\the\numexpr(#1-8)/16\relax% + \fi% + \UTFviii@hexdigit{\numexpr#1\ifnum#1>0-((#1-8)/16)*16\fi\relax}% +}% + % override to beautify the output, not strictly necessary but requested \gdef\UTFviii@splitcsname#1:#2\relax{% #2 (\expandafter\unicodedomino@codepoint\expandafter{%