unicode: more digestible page showing common digraphs
authorMischa POSLAWSKY <perl@shiar.org>
Mon, 15 Sep 2008 08:19:21 +0000 (08:19 +0000)
committerMischa POSLAWSKY <perl@shiar.org>
Tue, 16 Sep 2008 03:31:31 +0000 (03:31 +0000)
Instead of the full thousands of digraph combinations, also supply this
summarized page of oftenly used characters, grouped by usage.

unicode.plp [new file with mode: 0644]

diff --git a/unicode.plp b/unicode.plp
new file mode 100644 (file)
index 0000000..afd74d1
--- /dev/null
@@ -0,0 +1,130 @@
+<:
+use utf8;
+use strict;
+use warnings;
+use open IO => ':utf8';
+
+our $VERSION = '1.0';
+
+$header{content_type} = 'text/html; charset=utf-8';
+
+:><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+<head>
+<title>digraph cheat sheet</title>
+<meta http-equiv="content-type" content="utf-8">
+<!-- link rel="stylesheet" type="text/css" media="all" href="unicode.css" -->
+<style>
+table {
+       border-collapse: collapse;
+       margin: 1ex;
+}
+td {
+       border: 1px solid #888;
+       text-align: center;
+       vertical-align: top;
+       margin: 0;
+       padding: 0;
+}
+small {
+       font-size: 50%;
+       display: block;
+       width: 3em;
+       background: #888;
+       color: #FFF;
+}
+</style>
+</head>
+
+<body>
+<h1>Common Digraphs</h1>
+
+<:
+my $diinfo = do 'digraphs.inc.pl';
+my %di = map { $diinfo->{$_}->[0] => $_ } grep { ref $diinfo->{$_} }
+       keys %$diinfo;
+
+sub quote {
+       local $_ = shift;
+       s/"/&quot;/g;
+       s/</&lt;/g;
+       s/>/&gt;/g;
+       return $_;
+}
+
+sub table {
+       my ($width, $digraphs) = @_;
+
+       my @cells;
+       push @cells, sprintf '<td title="%s">%s%s',
+               $di{ord $_} && $diinfo->{$di{ord $_}}->[1],
+               $_ eq '-' ? '&nbsp;' : quote($_),
+               $di{ord $_} && sprintf(' <small>%s</small>', $di{ord $_})
+                       for @$digraphs;
+
+       my @rows;
+       push @rows, sprintf '<tr>%s', join '', splice @cells, 0, $width, ()
+               while @cells;
+
+       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 - ɭ ʎ ʟ - - - -
+               ʘ - ǀ ǁ ǃ - ǂ - - - - -
+               ɓ - ɗ - - - ʄ ɠ ʛ - - -
+       }]],
+       [6 => [qw{
+               i y  ɨ ʉ  ɯ u
+               - ɪ  ʏ -  ʊ -
+               e ø  ɘ ɵ  ɤ o
+               - -  ə -  - -
+               ɛ œ  ɜ ɞ  ʌ ɔ
+               æ -  ɐ -  - -
+               a ɶ  - -  ɑ ɒ
+       }]],
+);
+