--- /dev/null
+my %utf8byte = (
+ 0x00, '<td rowspan="8" colspan="16" class="X di-a"'.
+ ' title="U+0000 – U+007F">single byte ASCII',
+ 0x80, '<td rowspan="4" colspan="16" class="X di-d"'.
+ '>multi-byte continuation',
+ 0xC0, '<td colspan="2" class="X di-b" style="border-right:none; border-bottom:none"'.
+ ' title="U+0000 – U+007F">(overl.)',
+ 0xC2, '<td rowspan="2" colspan="14" class="X di-prop" style="border-left:none"'.
+ ' title="U+0080 – U+03FF">2-byte sequence start',
+ 0xD0, '<td rowspan="1" colspan="16" class="X di-prop" style="border-top:none"'.
+ ' title="U+0400 – U+07FF">',
+ 0xE0, '<td colspan="16" class="X di-prop"'.
+ ' title="U+0800 – U+FFFF">3-byte sequence start',
+ 0xF0, '<td colspan="5" class="X di-prop" style="border-right:none"'.
+ ' title="U+1·0000 – U+10·FFFF">4-byte sequence',
+ 0xF5, '<td colspan="3" class="X di-b" style="border-left:none"'.
+ ' title="U+11·0000 – U+1FF·FFFF">(overflow)',
+ 0xF8, '<td colspan="4" class="X di-b"'.
+ ' title="U+200·0000 – U+3FFF·FFFF">5-byte',
+ 0xFC, '<td colspan="2" class="X di-b"'.
+ ' title="U+4000·0000 – 7FFFF·FFFF">6-byte',
+ 0xFE, '<td colspan="2" class="di-invalid">invalid',
+);
+
+sub {
+ return defined $utf8byte{$_[0]} ? $utf8byte{$_[0]} : ();
+}
+