Html({
title => 'unicode glyph cheat sheet',
- version => 'v1.0',
+ version => '1.1',
description => [
"Common Unicode characters with digraph or code point, layed out for quick location.",
"Includes general symbols, arrows, drawing characters, and IPA letters.",
unicode glyph char character reference common ipa symbol sign mark table digraph
'],
stylesheet => [qw'light dark mono circus red'],
- data => [qw'digraphs.inc.pl unicode.inc.pl'],
+ data => [qw'unicode-table.inc.pl unicode-char.inc.pl'],
});
:>
<div class="diinfo">
<:
-use 5.010;
use Shiar_Sheet::FormatChar;
my $glyphs = Shiar_Sheet::FormatChar->new;
if (exists $get{di}) {
- $glyphs->{digraph} = defined $get{di} ? ! !$get{di} : 1;
- $glyphs->{unicode} = 1;
+ $glyphs->{anno} = [ (!defined $get{di} || $get{di}) && 'di', 'hex' ];
}
if (exists $get{q}) {
- $glyphs->{unicode} = -1;
- $glyphs->{digraph}--;
+ $glyphs->{anno} = [];
+}
+if (exists $get{html}) {
+ $glyphs->{anno} = ['html', 'xml'];
+ $glyphs->{style} = 'html';
}
our $verbose = exists $get{v};
-my $tables = do 'unicode.inc.pl' or die $@ || $!;
-
-$glyphs->print(map {
- my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
- if (/[A-Z]/) {
- $_;
- }
- else {
- state $group;
- $group = $1 if s{^([^/]+)/}{};
- if (s/=(.*)//) {
- my @select = split /=/, $1;
- my $table = $tables->{$group}->{$_};
- my $rowlen;
- for ($rowlen = 1; $rowlen++; $rowlen <= $#$table) {
- last if $table->[$rowlen] =~ /\./;
- }
- my @cells = map { $_*$rowlen .. ($_+1)*$rowlen - 1 } @select;
- [ @$table[@cells] ];
- }
- else {
- $tables->{$group}->{$_};
- }
- }
-} qw{
+my @config = qw(
Popular
punctuation/quoting
- common
- symbols/binary?symbols/binary=0
- latin/sample=0=1
- sample=2=3
+ common=-5?common
+ symbols/binary?symbols/binary=-5
+ latin/sample=-1
+ ?sample=2-
?uncommon
punctuation/version
punctuation/marks
+ spacing
Symbols
symbols/currency
- cards
+ cards=-3?cards
+ ?chess
+ harvey
signs1
communic=0?communic
trinity=0?trinity
signs2
Signs
solar
- zodiac=0?zodiac
- Key commands
+ zodiac=0-1=3?zodiac
+ Key_commands
keys/spacing
editing
modifier
control
command
+ android=0
+ ps
?player
+ Mathematics
+ math/size
+ equal
+ set
+ logic
Arrows
arrows/single
double
whitetri
?-large
?-heavy
- Line drawing
+ Line_drawing
lines/double
doubleh
doublev
?hiraderiv
?kata
?kataderiv
-});
+);
+
+splice @config, 4, 2, qw(
+ latin/vowels=-5?latin/vowels
+ westeuro
+ ?easteuro
+) if exists $get{html};
+
+$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $Request, $get{q};
+
+my $tables = do 'unicode-table.inc.pl' or die $@ || $!;
+
+$glyphs->print(map {
+ my $_ = /(.*)\?(.*)/ ? ($verbose ? $2 : $1) : $_;
+ if (!$_) {
+ ();
+ }
+ elsif (/[A-Z]/) {
+ tr/_/ /;
+ $_;
+ }
+ else {
+ state $group;
+ $group = $1 if s{^([^/]+)/}{};
+ my @select = s/=(.*)// ? split(/=/, $1) : ();
+ my $table = $tables->{$group}->{$_}
+ or die "Unknown table specified: $group/$_";
+
+ if (@select) {
+ my $rowlen;
+ for ($rowlen = 1; $rowlen++; $rowlen <= $#$table) {
+ last if $table->[$rowlen] =~ /\./;
+ }
+ my @cells = map {
+ my $end = (s/-(.+)?// ? ($1 // @$table / $rowlen - 1) : $_) + 1;
+ $_ * $rowlen .. $end * $rowlen - 1;
+ } @select;
+ $table = [ @$table[@cells] ];
+ }
+ $table;
+ }
+} @config);
:></div>
<div class="legend">
<table class="glyphs"><tr>
- <td class="X l4">ascii
- <td class="X l3"><:= $glyphs->{digraph} ? 'digraph' : 'latin1' :>
- <td class="X l2"><:= $glyphs->{digraph} ? 'proposed' : 'BMP' :>
+ <td class="X l5">ascii
+ <td class="X l4"><:= $glyphs->{style} eq 'di' ? 'digraph' : 'latin1' :>
+ <td class="X l3"><:= $glyphs->{style} eq 'di' ? 'proposed' : 'HTML4' :>
+ <td class="X l2">unicode ≤6.0
<td class="X l1">other unicode
<td class="X ex">discouraged
</table>