-
- return sprintf "<table>%s</table>\n", join '', @rows;
-}
-
-print "<h2>Arrows</h2>\n\n";
-print table(@$_) for (
- [ 4 => [qw{↖ ↑ ↗ ↔ ← - → ↕ ↙ ↓ ↘ -}]],
- [ 4 => [qw{⇖ ⇑ ⇗ ⇔ ⇐ - ⇒ ⇕ ⇘ ⇓ ⇙ -}]],
- [ 3 => [qw{◤ ▲ ◥ ◀ ◆ ▶ ◣ ▼ ◢}]],
- [ 3 => [qw{◸ △ ◹ ◁ ◇ ▷ ◺ ▽ ◿}]],
-);
-
-print "<h2>Line drawing</h2>\n\n";
-print table(@$_) for (
- [ 4 => [qw{┌ ┬ ┐ ─ ├ ┼ ┤ │ └ ┴ ┘ -}]],
- [ 4 => [qw{┏ ┳ ┓ ━ ┣ ╋ ┫ ┃ ┗ ┻ ┛ -}]],
- [ 3 => [qw{┍ ┯ ┑ ┝ ┿ ┥ ┕ ┷ ┙}]],
- [ 3 => [qw{┎ ┰ ┒ ┠ ╂ ┨ ┖ ┸ ┚}]],
-# [ 4 => [qw{╔ ╦ ╗ ═ ╠ ╬ ╣ ║ ╚ ╩ ╝ -}]],
-# [ 3 => [qw{╒ ╤ ╕ ╞ ╪ ╡ ╘ ╧ ╛}]],
-# [ 3 => [qw{╓ ╥ ╖ ╟ ╫ ╢ ╙ ╨ ╜}]],
-);
-
-print "<h2>Signs</h2>\n\n";
-print table(@$_) for (
- [ 3 => [qw{▘ ▀ ▝ ▌ █ ▐ ▖ ▄ ▗ ░ ▒ ▓}]],
- [ 3 => [qw{□ ▣ ■ ▤ ▦ ▥ ▧ ▩ ▨}]],
- [ 4 => [qw{♠ ♡ ♢ ♣ ♤ ♥ ♦ ♧}]],
- [10 => [qw{☼ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇}]], # solar
-# [12 => [qw{♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓}]], # zodiac
- [ 8 => [qw{¤ ¢ ₥ € £ ₨ $ ¥ ₫ ₭ ₦ ₱ ₧ ₮ ₩ ₪}]],
-);
-
-print "<h2>IPA</h2>\n\n";
-print table(@$_) for (
- [
- 12 => [qw{
- p t - ʈ - c k q - = ʡ ʔ
- b d - ɖ - ɟ ɡ ɢ - = - =
- m ɱ - n - ɳ ɲ ŋ ɴ = = =
- ʙ - - r - - - = ʀ = я =
- - ⱱ - ɾ - ɽ - = ɢ̆ = - =
- ɸ f θ s ʃ ʂ ç x χ ħ ʜ h
- β v ð z ʒ ʐ ʝ ɣ ʁ ʕ ʢ ɦ
- = = - ɬ - - - - - = = =
- = = - ɮ - - - - - = = =
- - ʋ - ɹ - ɻ j ɰ - - - =
- = = - l - ɭ ʎ ʟ - = = =
- ʘ - ǀ ǁ ǃ - ǂ - - = = =
- ɓ - ɗ - - - ʄ ɠ ʛ - - -
- }],
- [
- 'Plosive',
- 'Voiced plosive',
- 'Nasal',
- 'Trill',
- 'Tap/flap',
- 'Fricative',
- 'Voiced fricative',
- 'Lateral fricative',
- 'Voiced lateral fricative',
- 'Approximant',
- 'Lateral approximant',
- 'Click',
- 'Implosive',
- ],
- [
- qw'BiL:Bilabial LD:Labiodental D:Dental Alv:Alveolar PA:Postalveolar Rf:Retroflex Pal:Palatal Vel:Velar Uv:Uvular Ph:Pharyngeal EG:Epiglottal Gl:Glottal',
- ],
- ],
- [
- 6 => [qw{
- i y ɨ ʉ ɯ u
- - ɪ ʏ - ʊ -
- e ø ɘ ɵ ɤ o
- - - ə - - -
- ɛ œ ɜ ɞ ʌ ɔ
- æ - ɐ - - -
- a ɶ - - ɑ ɒ
- }],
- [qw{Close Near-close Close-mid Mid Open-mid Near-open Open}],
- [map {substr($_, 0, 1).':'.$_, substr($_, 0, 1)." r:$_ rounded"} qw{Front Central Back}]
- ],
-);
+ 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;
+ }
+} qw{
+ Popular
+ punctuation/quoting
+ common
+ symbols/binary?symbols/binary=-5
+ latin/sample=-1
+ sample=2-3
+ ?uncommon
+ punctuation/version
+ punctuation/marks
+ Symbols
+ symbols/currency
+ cards
+ ?chess
+ signs1
+ communic=0?communic
+ trinity=0?trinity
+ signs2
+ Signs
+ solar
+ zodiac=0?zodiac
+ Key_commands
+ keys/spacing
+ editing
+ modifier
+ control
+ command
+ ?player
+ Mathematics
+ math/size
+ equal
+ set
+ logic
+ Arrows
+ arrows/single
+ double
+ white
+ black
+ block
+ blacktri
+ whitetri
+ ?-large
+ ?-heavy
+ Line_drawing
+ lines/double
+ doubleh
+ doublev
+ single
+ heavy
+ heavyh
+ heavyv
+ straight
+ curved
+ diagonal
+ Blocks
+ block/square
+ shades
+ fill4
+ fill4i
+ fill8
+ IPA
+ ipa/cons
+ consco
+ vowels
+ ?Japanese
+ ?japanese/hira
+ ?hiraderiv
+ ?kata
+ ?kataderiv
+});
+
+:></div>
+
+<div class="legend">
+ <table class="glyphs"><tr>
+ <td class="X l4">ascii
+ <td class="X l3"><:= $glyphs->{style} eq 'di' ? 'digraph' : 'latin1' :>
+ <td class="X l2"><:= $glyphs->{style} eq 'di' ? 'proposed' : 'BMP' :>
+ <td class="X l1">other unicode
+ <td class="X ex">discouraged
+ </table>
+</div>
+
+<script type="text/javascript" src="/clipboard.js"></script>