Html({
title => 'unicode glyph cheat sheet',
- version => 'v1.0',
+ version => '1.4',
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 data/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
+ ?minorplanets
+ zodiac=0-1=3?zodiac
+ Key_commands
keys/spacing
editing
modifier
control
command
+ android=0
+ ps=0
?player
+ Mathematics
+ math/size
+ equal
+ set
+ logic
Arrows
arrows/single
double
white
black
+ triangle
+ barb
block
blacktri
whitetri
- ?-large
- ?-heavy
- Line drawing
+ Line_drawing
lines/double
doubleh
doublev
fill4
fill4i
fill8
+ colour
IPA
ipa/cons
consco
vowels
+ tones
+ contours
?Japanese
?japanese/hira
?hiraderiv
?kata
?kataderiv
-});
+);
-:></div>
+splice @config, 4, 2, qw(
+ latin/vowels=-5?latin/vowels
+ westeuro
+ ?easteuro
+) if exists $get{html};
-<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 l1">other unicode
- <td class="X ex">discouraged
- </table>
-</div>
+$_ and m{/*+(.+)} and @config = split /[ ]/, $1 for $Request, $get{q};
+my $tables = Data('unicode-table');
+
+$glyphs->print(map {
+ $_ = /(.*)\?(.*)/ ? ($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 Abort("Unknown table specified: $group/$_", 404);
+
+ 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);
+
+say "</div>\n";
+
+say for $glyphs->legend;
+
+:>
<script type="text/javascript" src="/clipboard.js"></script>