--- /dev/null
+<(common.inc.plp)><:
+
+Html({
+ title => 'character support sheet',
+ version => 'v1.0',
+ keywords => [qw'
+ unicode glyph char character reference common ipa symbol sign mark table digraph
+ '],
+ stylesheet => [qw'light dark mono circus red'],
+ data => [qw'unicode-table.inc.pl unicode-char.inc.pl'],
+});
+
+:>
+<h1>Character support</h1>
+
+<p>
+Selected characters from Unicode <a href="/unicode">preset</a>
+or <a href="/charset">range</a>.
+</p>
+
+<div>
+
+<:
+use 5.010;
+use Shiar_Sheet::FormatChar;
+my $glyphs = Shiar_Sheet::FormatChar->new;
+
+my $tables = do 'unicode-table.inc.pl' or die $@ || $!;
+my (%font, @fontlist);
+for my $fontid (qw(d tnr a dv dvs c2k u)) {
+ my ($fontmeta, @fontrange) = do "ttfsupport/$fontid.inc.pl";
+ push @fontlist, $fontid;
+ $font{$fontid} = {
+ -name => $fontmeta->{name},
+ map { (chr $_ => 1) } @fontrange
+ };
+}
+
+my @config = qw(
+ punctuation/common punctuation/marks
+ latin/sample
+ symbols/signs1
+);
+$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $ENV{PATH_INFO}, $get{q};
+@config = qw(ipa/cons ipa/vowels) if 0;
+
+for (@config) {
+ my ($tablegroup, $tablename) = split m{/}, $_, 2;
+
+ print '<table>';
+ printf '<caption>%s</caption>', "$tablegroup: $tablename";
+ say '';
+ my $table = $tables->{$tablegroup}->{$tablename};
+
+ for my $chr (@$table) {
+ $chr =~ m/^\./ .. 1 or next;
+ given ($chr) {
+ when (/^[.]/) {
+ print "<tbody style=\"border-bottom:3px double #AAA\">\n";
+ next;
+ }
+ when ([qw(> - =)]) {
+ next;
+ }
+ }
+
+ my $ex = s/^-//;
+ my $codepoint = ord $chr;
+ my $ascii = $codepoint <= 127;
+
+ print "<tr><th>$chr\n";
+ my $info = $glyphs->glyph_info($codepoint);
+ my ($class, $name, $mnem, $html, $string) = @$info;
+ print "<td>$_" for $codepoint, EscapeHTML($name);
+ printf '<td class="%s">%s', @$_ for (
+ [$ascii ? 'l0' : defined $mnem ? 'l4' : 'l1', $mnem // ''],
+ [$ascii ? 'l0' : defined $html ? 'l4' : 'l1', $html // ''],
+ (map { $font{$_}->{$chr} ? [l4 => $font{$_}->{-name}] : [l1 => ''] }
+ @fontlist),
+ );
+ }
+ say "</table>\n";
+}
+:></div>
+
+<script type="text/javascript" src="/clipboard.js"></script>
+