X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/d5bb14b29d37e8fdd1e4f7b44f7b548d4d0ad74d..cb8c2607408b7b81397c28aedf2b5fcbfde338fe:/unicode.plp
diff --git a/unicode.plp b/unicode.plp
index cc45d66..1aadd03 100644
--- a/unicode.plp
+++ b/unicode.plp
@@ -15,26 +15,60 @@ $header{content_type} = 'text/html; charset=utf-8';
digraph cheat sheet
-
+
@@ -58,76 +92,207 @@ sub quote {
}
sub table {
- my ($width, $digraphs) = @_;
-
- my @cells;
- push @cells, sprintf '%s%s',
- $di{ord $_} && $diinfo->{$di{ord $_}}->[1],
- $_ eq '-' ? ' ' : quote($_),
- $di{ord $_} && sprintf(' %s', $di{ord $_})
- for @$digraphs;
+ my ($width, $digraphs, $rowheads, $colheads) = @_;
my @rows;
- push @rows, sprintf ' | %s', join '', splice @cells, 0, $width, ()
- while @cells;
- return sprintf "\n", join '', @rows;
+ my $colspan = 1;
+ for my $cell (@$digraphs) {
+ my $class;
+ if ($cell eq '.') {
+ push @rows, '';
+ $rows[-1] .= ''.(shift @$rowheads || ' ') if $rowheads;
+ next;
+ }
+ elsif ($cell eq '>') {
+ $colspan++;
+ next;
+ }
+ elsif ($cell =~ s/^-//) {
+ $class = 'empty';
+ }
+ elsif ($cell eq '=') {
+ $class = 'reserved';
+ $cell = '';
+ }
+
+ my $code = join '', map { $di{ord $_} || '' } split //, $cell;
+ my $name = $diinfo->{$code}->[1];
+
+ $rows[-1] .= sprintf(' | %s%s',
+ defined $name ? qq{ title="$name"} : '',
+ defined $class ? qq{ class="$class"} : '',
+ $colspan > 1 && qq{ colspan="$colspan"},
+ $cell eq '' ? ' ' : quote($cell),
+ $code ne '' ? sprintf(' %s', quote($code))
+ : length($cell) == 1 && $cell !~ /[a-z]/
+ ? sprintf(' %04X', 'value', ord $cell)
+ : '',
+ );
+
+ $colspan = 1;
+ }
+
+ if ($colheads) {
+ unshift @rows, sprintf '%s | |
', join '',
+ map { sprintf '%s', split(/:/, $_, 2) }
+ @$colheads
+ }
+
+ return sprintf "\n", join '', map {" | $_\n"} @rows;
}
+print "Common
\n\n";
+print table(@$_) for (
+ [ 3 => [qw{. « » . ⹠⺠. â â . â â . â â}]],
+ [ 3 => [qw{. â ⡠⢠. § ¶ # . © ® ⢠. â à ÷ . ± ² â}]],
+ [ 3 => [qw{. Ã¥ ä ö ü à . Ã
æ ø ű ſ}]],
+ [ 3 => [qw{. ¿ ç ñ é ê è}]],
+);
+
print "Arrows
\n\n";
print table(@$_) for (
- [ 4 => [qw{â â â â â - â â â â â -}]],
- [ 4 => [qw{â â â â â - â â â â â -}]],
- [ 3 => [qw{⤠Ⲡ⥠â â ⶠ⣠⼠â¢}]],
- [ 3 => [qw{⸠Ⳡ⹠â â ⷠ⺠⽠â¿}]],
+ [ 4 => [qw{. â â â â . â - â â . â â â -}]],
+ [ 4 => [qw{. â â â â . â - â â . â â â -}]],
+ [ 3 => [qw{. ⤠Ⲡ⥠. â â ⶠ. ⣠⼠â¢}]],
+ [ 3 => [qw{. ⸠Ⳡ⹠. â â â· . ⺠⽠â¿}]],
);
print "Line drawing
\n\n";
print table(@$_) for (
- [ 4 => [qw{â ⬠â â â ⼠⤠â â â´ â -}]],
- [ 4 => [qw{â â³ â â ⣠â â« â â â» â -}]],
- [ 3 => [qw{â ⯠â â ⿠⥠â â· â}]],
- [ 3 => [qw{â â° â â â ⨠â ⸠â}]],
-# [ 4 => [qw{â ⦠â â â ⬠⣠â â â© â -}]],
-# [ 3 => [qw{â ⤠â â ⪠⡠â ⧠â}]],
-# [ 3 => [qw{â ⥠â â ⫠⢠â ⨠â}]],
+ [ 4 => [qw{. â ⬠â . â ⼠⤠. â â´ â}]],
+ [ 4 => [qw{. â â³ â . ⣠â â« . â â» â}]],
+ [ 3 => [qw{. â ⯠â . â ⿠⥠. â â· â}]],
+ [ 3 => [qw{. â â° â . â â ⨠. â ⸠â}]],
+ [ 4 => [qw{
+ . â´ â â â â ⶠâ¾
+ . ⸠â â â
â ⺠â¼
+ . âµ â â â â â· â¿
+ . â¹ â â â â â» â½
+ }]],
+ [ 1 => [qw{. â± â³ â² }]],
+ [ 4 => [qw{. â ⦠â â . â ⬠⣠â . â â© â - }]],
+ [ 3 => [qw{. â ⤠â . â ⪠⡠. â ⧠â }]],
+ [ 3 => [qw{. â ⥠â . â ⫠⢠. â ⨠â }]],
);
print "Signs
\n\n";
print table(@$_) for (
- [ 3 => [qw{â â â â â â â â â}]],
- [ 3 => [qw{â â â ⡠⣠â ⤠⦠⥠⧠⩠â¨}]],
- [ 4 => [qw{â ⡠⢠⣠⤠⥠⦠â§}]],
- [10 => [qw{â¼ â¿ â â â â â â
â â}]], # solar
-# [12 => [qw{â â â â â â â â â â â â}]], # zodiac
- [ 8 => [qw{¤ ¢ ⥠⬠£ ⨠$ Â¥ â« â ⦠Ⱡ⧠⮠⩠âª}]],
+ [ 3 => [qw{. â â â . â â â . â â â . â â â}]],
+ [ 3 => [qw{. ⡠⣠â . ⤠⦠⥠. ⧠⩠â¨}]],
+ [ 4 => [qw{. â ⡠⢠⣠. ⤠⥠⦠â§}]],
+ [ 5 => [qw{. â¼ â¿ â â â â â â
â â}]], # solar
+# [12 => [qw{. â â â â â â â â â â â â}]], # zodiac
+ [ 8 => [qw{. ¤ ¢ ⥠⬠£ ⨠$ Â¥ . â« â ⦠Ⱡ⧠⮠⩠âª}]],
);
print "IPA
\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 p̪ > > t Ê c k q = Ê¡ Ê
+ . b 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}]
+ ],
);
+print "Japanese
\n\n";
+print table(@$_) for (
+ [
+ 1 => [qw{
+ . ã ã ã ã ã =
+ . ã ã ã ã ã =
+ . ã ã ã ã ã =
+ . ã 㡠㤠㦠㨠=
+ . 㪠㫠㬠ã ã® ã
+ . 㯠㲠㵠㸠㻠=
+ . ã¾ ã¿ ã ã ã =
+ . ã = ã = ã =
+ . ã ã ã ã ã =
+ . ã ã = ã ã =
+ }],
+ ['', qw{K S T N H M Y R W}],
+ [qw{A I U E O}, ''],
+ ],
+ [
+ 1 => [qw{
+ . ã ã ã ã ã
+ . ã ã ã ã ã
+ . ã 㢠㥠㧠ã©
+ . 㰠㳠㶠㹠ã¼
+ . 㱠㴠㷠㺠ã½
+ }],
+ [qw{G Z D B P}],
+ [qw{A I U E O}],
+ ],
+ [
+ 1 => [qw{
+ . 㢠㤠㦠㨠㪠ã¼
+ . ã« ã 㯠㱠㳠=
+ . ãµ ã· ã¹ ã» ã½ =
+ . ã¿ ã ã ã ã =
+ . ã ã ã ã ã ã³
+ . ã ã ã ã ã =
+ . ã ã ã 㡠㢠=
+ . 㤠- 㦠- 㨠=
+ . 㩠㪠㫠㬠ã =
+ . 㯠㰠- 㱠㲠=
+ }],
+ ['', qw{K S T N H M Y R W}],
+ [qw{A I U E O}, ''],
+ ],
+ [
+ 1 => [qw{
+ . 㬠㮠㰠㲠ã´
+ . 㶠㸠㺠㼠ã¾
+ . ã ã ã
ã ã
+ . ã ã ã ã ã
+ . ã ã ã ã ã
+ . 㷠㸠㴠㹠ãº
+ }],
+ [qw{G Z D B P V}],
+ [qw{A I U E O}],
+ ],
+);