<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" -->
+<link rel="stylesheet" type="text/css" media="all" href="/digraphs.css">
<style>
table {
- border-collapse: collapse;
- margin: 1ex;
+ margin: 1ex 1ex 2ex;
+ float: left;
+ table-layout: auto;
}
+thead td {
+ width: auto;
+}
+tbody {
+ border-width: 0;
+}
+h2, h3 {
+ clear: both;
+}
+
+th {
+ text-align: left;
+ font-size: 50%;
+ background: #888;
+ color: #FFF;
+ padding: 0 0.2em;
+}
+thead td {
+ border: 0;
+}
+
td {
- border: 1px solid #888;
- text-align: center;
+ background: transparent;
vertical-align: top;
margin: 0;
padding: 0;
small {
font-size: 50%;
display: block;
- width: 3em;
+ width: 3.2em;
background: #888;
color: #FFF;
}
+
+td.empty {
+ background: #DDD;
+}
+td.reserved {
+ background: #BBB;
+}
</style>
</head>
}
sub table {
- my ($width, $digraphs) = @_;
+ my ($width, $digraphs, $rowheads, $colheads) = @_;
my @cells;
- push @cells, sprintf '<td title="%s">%s%s',
+ push @cells, sprintf '<td title="%s"%s>%s%s',
$di{ord $_} && $diinfo->{$di{ord $_}}->[1],
- $_ eq '-' ? ' ' : quote($_),
+ $_ eq '-' ? ' class="empty"' : $_ eq '=' ? ' class="reserved"' : '',
+ $_ eq '-' || $_ eq '=' ? ' ' : quote($_),
$di{ord $_} && sprintf(' <small>%s</small>', $di{ord $_})
for @$digraphs;
+ if ($rowheads) {
+ splice @cells, $_ * $width, 0, '<th>'.($rowheads->[$_] || ' ')
+ for reverse 0 .. $#cells / $width;
+ $width++;
+ }
+
my @rows;
push @rows, sprintf '<tr>%s', join '', splice @cells, 0, $width, ()
while @cells;
+ if ($colheads) {
+ unshift @rows, sprintf '<thead><tr><td>%s<tbody>', join '',
+ map { sprintf '<th title="%2$s">%s', split(/:/, $colheads->[$_], 2) }
+ 0 .. $width-2;
+ }
+
return sprintf "<table>%s</table>\n", join '', @rows;
}
print "<h2>Signs</h2>\n\n";
print table(@$_) for (
- [ 3 => [qw{▘ ▀ ▝ ▌ █ ▐ ▖ ▄ ▗}]],
- [ 3 => [qw{�� ▒ ▓ �� ▣ ■ ▤ ▦ ▥ ▧ ▩ ▨}]],
+ [ 3 => [qw{▘ ▀ ▝ ▌ █ ▐ ▖ ▄ ▗ ░ ▒ ▓}]],
+ [ 3 => [qw{□ ▣ ■ ▤ ▦ ▥ ▧ ▩ ▨}]],
[ 4 => [qw{♠ ♡ ♢ ♣ ♤ ♥ ♦ ♧}]],
[10 => [qw{☼ ☿ ♀ ♁ ♂ ♃ ♄ ♅ ♆ ♇}]], # solar
# [12 => [qw{♈ ♉ ♊ ♋ ♌ ♍ ♎ ♏ ♐ ♑ ♒ ♓}]], # zodiac
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 ɶ - - ɑ ɒ
- }]],
+ [
+ 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}]
+ ],
);