digraphs: currency and missing double arrow proposals
[sheet.git] / unicode.plp
1 <:
2 use utf8;
3 use strict;
4 use warnings;
5 use open IO => ':utf8';
6
7 our $VERSION = '1.0';
8
9 $header{content_type} = 'text/html; charset=utf-8';
10
11 :><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
12  "http://www.w3.org/TR/html4/loose.dtd">
13 <html>
14
15 <head>
16 <title>digraph cheat sheet</title>
17 <meta http-equiv="content-type" content="utf-8">
18 <!-- link rel="stylesheet" type="text/css" media="all" href="unicode.css" -->
19 <style>
20 table {
21         border-collapse: collapse;
22         margin: 1ex;
23 }
24 td {
25         border: 1px solid #888;
26         text-align: center;
27         vertical-align: top;
28         margin: 0;
29         padding: 0;
30 }
31 small {
32         font-size: 50%;
33         display: block;
34         width: 3em;
35         background: #888;
36         color: #FFF;
37 }
38 </style>
39 </head>
40
41 <body>
42 <h1>Common Digraphs</h1>
43
44 <:
45 my $diinfo = do 'digraphs.inc.pl';
46 my %di = map { $diinfo->{$_}->[0] => $_ } grep { ref $diinfo->{$_} }
47         keys %$diinfo;
48
49 sub quote {
50         local $_ = shift;
51         s/"/&quot;/g;
52         s/</&lt;/g;
53         s/>/&gt;/g;
54         return $_;
55 }
56
57 sub table {
58         my ($width, $digraphs) = @_;
59
60         my @cells;
61         push @cells, sprintf '<td title="%s">%s%s',
62                 $di{ord $_} && $diinfo->{$di{ord $_}}->[1],
63                 $_ eq '-' ? '&nbsp;' : quote($_),
64                 $di{ord $_} && sprintf(' <small>%s</small>', $di{ord $_})
65                         for @$digraphs;
66
67         my @rows;
68         push @rows, sprintf '<tr>%s', join '', splice @cells, 0, $width, ()
69                 while @cells;
70
71         return sprintf "<table>%s</table>\n", join '', @rows;
72 }
73
74 print "<h2>Arrows</h2>\n\n";
75 print table(@$_) for (
76         [ 4 => [qw{↖ ↑ ↗ ↔  ← - → ↕  ↙ ↓ ↘ -}]],
77         [ 4 => [qw{⇖ ⇑ ⇗ ⇔  ⇐ - ⇒ ⇕  ⇘ ⇓ ⇙ -}]],
78         [ 3 => [qw{◤ ▲ ◥  ◀ ◆ ▶  ◣ ▼ ◢}]],
79         [ 3 => [qw{◸ △ ◹  ◁ ◇ ▷  ◺ ▽ ◿}]],
80 );
81
82 print "<h2>Line drawing</h2>\n\n";
83 print table(@$_) for (
84         [ 4 => [qw{┌ ┬ ┐ ─  ├ ┼ ┤ │  └ ┴ ┘ -}]],
85         [ 4 => [qw{┏ ┳ ┓ ━  ┣ ╋ ┫ ┃  ┗ ┻ ┛ -}]],
86         [ 3 => [qw{┍ ┯ ┑  ┝ ┿ ┥  ┕ ┷ ┙}]],
87         [ 3 => [qw{┎ ┰ ┒  ┠ ╂ ┨  ┖ ┸ ┚}]],
88 #       [ 4 => [qw{╔ ╦ ╗ ═  ╠ ╬ ╣ ║  ╚ ╩ ╝ -}]],
89 #       [ 3 => [qw{╒ ╤ ╕  ╞ ╪ ╡  ╘ ╧ ╛}]],
90 #       [ 3 => [qw{╓ ╥ ╖  ╟ ╫ ╢  ╙ ╨ ╜}]],
91 );
92
93 print "<h2>Signs</h2>\n\n";
94 print table(@$_) for (
95         [ 3 => [qw{▘ ▀ ▝  ▌ █ ▐  ▖ ▄ ▗}]],
96         [ 3 => [qw{░ ▒ ▓  □ ▣ ■  ▤ ▦ ▥  ▧ ▩ ▨}]],
97         [ 4 => [qw{♠ ♡ ♢ ♣  ♤ ♥ ♦ ♧}]],
98         [10 => [qw{☼ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇}]],  # solar
99 #       [12 => [qw{♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓}]],  # zodiac
100         [ 8 => [qw{¤ ¢ ₥ € £ ₨ $ ¥  ₫ ₭ ₦ ₱ ₧ ₮ ₩ ₪}]],
101 );
102
103 print "<h2>IPA</h2>\n\n";
104 print table(@$_) for (
105         [12 => [qw{
106                 p t - ʈ - c k q - ʔ - ʡ
107                 b d - ɖ - ɟ ɡ ɢ - - - -
108                 m ɱ - n - ɳ ɲ ŋ ɴ - - -
109                 ʙ - - r - - - - - - - -
110                 - ⱱ - ɾ - ɽ - - - - - -
111                 ɸ f θ s ʃ ʂ ç x χ ħ h ʜ
112                 β v ð z ʒ ʐ ʝ ɣ ʁ ʕ ɦ ʢ
113                 - - - ɬ - - - - - - - -
114                 - - - ɮ - - - - - - - -
115                 - ʋ - ɹ - ɻ j ɰ - - - -
116                 - - - l - ɭ ʎ ʟ - - - -
117                 ʘ - ǀ ǁ ǃ - ǂ - - - - -
118                 ɓ - ɗ - - - ʄ ɠ ʛ - - -
119         }]],
120         [6 => [qw{
121                 i y  ɨ ʉ  ɯ u
122                 - ɪ  ʏ -  ʊ -
123                 e ø  ɘ ɵ  ɤ o
124                 - -  ə -  - -
125                 ɛ œ  ɜ ɞ  ʌ ɔ
126                 æ -  ɐ -  - -
127                 a ɶ  - -  ɑ ɒ
128         }]],
129 );
130