From 8bf282942427103523c1222c3f48eb70f5ff6b31 Mon Sep 17 00:00:00 2001 From: mirabilos <m@mirbsd.org> Date: Sun, 5 Aug 2018 18:23:39 +0200 Subject: [PATCH] range-wrap DeclareUnicodeCharacter --- unicodedomino.sty | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/unicodedomino.sty b/unicodedomino.sty index 00df29c..88dad59 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{% -- GitLab