X-Git-Url: http://git.shiar.net/sheet.git/blobdiff_plain/740405f2d6d7c60e27d2d168573b38a76d321156..c74ecf690c0c9047a11049d629a791de47857b53:/unicode.plp?ds=inline
diff --git a/unicode.plp b/unicode.plp
index 9405bfd..8dfe132 100644
--- a/unicode.plp
+++ b/unicode.plp
@@ -2,6 +2,7 @@
use utf8;
use strict;
use warnings;
+no warnings 'qw'; # that's not a comment, it's a NUMBER SIGN
use open IO => ':utf8';
our $VERSION = '1.0';
@@ -15,50 +16,17 @@ $header{content_type} = 'text/html; charset=utf-8';
digraph cheat sheet
-
-
+
-Common Digraphs
+Common uncommon Unicode
i^k in Vim .
Also see the complete digraphs table .
+
+
<:
my $diinfo = do 'digraphs.inc.pl';
my %di = map { $diinfo->{$_}->[0] => $_ } grep { ref $diinfo->{$_} }
@@ -72,113 +40,236 @@ sub quote {
return $_;
}
-sub table {
- my ($width, $digraphs, $rowheads, $colheads) = @_;
+sub glyph_table {
+ my ($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 @rows;
- if ($rowheads) {
- splice @cells, $_ * $width, 0, ' '.($rowheads->[$_] || ' ')
- for reverse 0 .. $#cells / $width;
- $width++;
+ my @colheads;
+ while ($digraphs->[0] !~ /^\./) {
+ my $cell = shift @$digraphs or last;
+ push @colheads, sprintf(
+ '<%s%s>%s',
+ $cell =~ s/^-// ? 'td' : 'th',
+ $cell =~ s/:(.*)// ? qq{ title="$1"} : '',
+ $cell eq '_' ? ' ' : $cell
+ );
}
+ push @rows, sprintf '%s ', join '', @colheads if @colheads;
- my @rows;
- push @rows, sprintf '%s', join '', splice @cells, 0, $width, ()
- while @cells;
+ my $colspan = 1;
+ for my $cell (@$digraphs) {
+ my $class;
+ if ($cell =~ s/^\.//) {
+ # dot indicates start of a new row
+ push @rows, '';
+ if ($cell =~ s/^>//) {
+ # header cell text follows
+ $cell =~ s/_/ /g; # underscores may be used instead of whitespace (for qw//ability)
+ $rows[-1] .= ''.($cell || ' ');
+ }
+ next;
+ }
+ elsif ($cell eq '>') {
+ # merge this cell to the next column
+ $colspan++;
+ next;
+ }
+
+ my $code = join '', map { $di{ord $_} || '' } split //, $cell;
+ my $name = $diinfo->{$code}->[1];
+
+ # determine display class
+ if ($cell =~ s/^-//) {
+# $class = 'Empty';
+ }
+ elsif ($cell eq '=') {
+ $class = 'Reserved';
+ $cell = '';
+ }
+ elsif ($cell =~ /[ -~]/) {
+ $class = 'Ascii';
+ }
+ elsif (not $code) {
+ $class = 'DiNone';
+ }
+ elsif ($diinfo->{$code}->[2] =~ /\bXz\b/) {
+ $class = 'DiProp';
+ }
+ else {
+ $class = 'Di';
+ }
+
+ # add cell html
+ $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)
+ : '',
+ );
- if ($colheads) {
- unshift @rows, sprintf '%s ', join '',
- map { sprintf '%s', split(/:/, $colheads->[$_], 2) }
- 0 .. $width-2;
+ $colspan = 1;
}
- return sprintf "\n", join '', @rows;
+ return sprintf qq{\n},
+ join '', map {" $_\n"} @rows;
}
-print "Arrows \n\n";
-print table(@$_) for (
- [ 4 => [qw{â â â â â - â â â â â -}]],
- [ 4 => [qw{â â â â â - â â â â â -}]],
- [ 3 => [qw{⤠Ⲡ⥠â â ⶠ⣠⼠â¢}]],
- [ 3 => [qw{⸠Ⳡ⹠â â ⷠ⺠⽠â¿}]],
-);
+sub print_glyph_tables {
+ while (@_) {
+ printf "
%s \n\n", shift;
+ while (ref $_[0] and $_ = shift) {
+ print glyph_table($_);
+ }
+ print '';
+ }
+}
-print "Line drawing \n\n";
-print table(@$_) for (
- [ 4 => [qw{â ⬠â â â ⼠⤠â â â´ â -}]],
- [ 4 => [qw{â â³ â â ⣠â â« â â â» â -}]],
- [ 3 => [qw{â ⯠â â ⿠⥠â â· â}]],
- [ 3 => [qw{â â° â â â ⨠â ⸠â}]],
-# [ 4 => [qw{â ⦠â â â ⬠⣠â â â© â -}]],
-# [ 3 => [qw{â ⤠â â ⪠⡠â ⧠â}]],
-# [ 3 => [qw{â ⥠â â ⫠⢠â ⨠â}]],
-);
+print_glyph_tables(
+ 'Popular',
+ [qw{. « » . ⹠⺠. â â . â â . â â}],
+ [qw{. â ⡠⢠. § ¶ # . © ® ⢠. â à ÷ . ± ² â}],
+ [qw{. Ã¥ ä ö ü à . Ã
æ ø ű ſ}],
+ [qw{. ¿ ç ñ é ê è}],
-print "Signs \n\n";
-print table(@$_) for (
- [ 3 => [qw{â â â â â â â â â â â â}]],
- [ 3 => [qw{⡠⣠â ⤠⦠⥠⧠⩠â¨}]],
- [ 4 => [qw{â ⡠⢠⣠⤠⥠⦠â§}]],
- [10 => [qw{â¼ â¿ â â â â â â
â â}]], # solar
-# [12 => [qw{â â â â â â â â â â â â}]], # zodiac
- [ 8 => [qw{¤ ¢ ⥠⬠£ ⨠$ Â¥ â« â ⦠Ⱡ⧠⮠⩠âª}]],
-);
+ 'Arrows',
+ [qw{. â â â â . â - â â . â â â -}],
+ [qw{. â â â â . â - â â . â â â -}],
+ [qw{. ⤠Ⲡ⥠. â â ⶠ. ⣠⼠â¢}],
+ [qw{. ⸠Ⳡ⹠. â â â· . ⺠⽠â¿}],
+
+ 'Line drawing',
+ [qw{. â ⬠â . â ⼠⤠. â â´ â}],
+ [qw{. â â³ â . ⣠â â« . â â» â}],
+ [qw{. â ⯠â . â ⿠⥠. â â· â}],
+ [qw{. â â° â . â â ⨠. â ⸠â}],
+ [qw{
+ . â´ â â â â ⶠâ¾
+ . ⸠â â â
â ⺠â¼
+ . âµ â â â â â· â¿
+ . â¹ â â â â â» â½
+ }],
+ [qw{. â± â³ â² }],
+ [qw{. â ⦠â â . â ⬠⣠â . â â© â - }],
+ [qw{. â ⤠â . â ⪠⡠. â ⧠â }],
+ [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 - É Ê Ê - - - -
- Ê - Ç Ç Ç - Ç - - - - -
- É - É - - - Ê É Ê - - -
- }],
- [
- '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}]
- ],
+ 'Blocks',
+ [qw{. â â â . â â â . â â â }],
+ [qw{. â . â . â }],
+ [qw{. â â â . â â â }],
+ [qw{. â â â â â
â â â . â â â â â â â â }],
+ [qw{. ⡠⣠â . ⤠⦠⥠. ⧠⩠â¨}],
+
+ 'Signs',
+ [qw{. ¤ ¢ ⥠⬠£ ⨠$ Â¥ . â« â ⦠Ⱡ⧠⮠⩠âª}],
+ [qw{. â ⡠⢠⣠. ⤠⥠⦠â§}],
+ [qw{. â â¿ â â â â â â
â â}], # solar
+ [qw{. â â â â â â â â â â â â}], # zodiac
+
+ 'IPA',
+ [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
+ .>Plosive p p̪ > > t Ê c k q = Ê¡ Ê
+ .>Voiced_Plosive b b̪ > > d É É É¡ É¢ = - =
+ .>Nasal m ɱ > > n ɳ ɲ Šɴ = = =
+ .>Trill Ê - > > r - - = Ê = -Ñ =
+ .>Tap/flap - â±± > > ɾ ɽ - = É¢Ì = - =
+ .>Fricative ɸ f θ s Ê Ê Ã§ x Ï Ä§ Ê h
+ .>Voiced_fricative β v ð z Ê Ê Ê É£ Ê Ê Ê¢ ɦ
+ .>Lateral_fricative = = > > ɬ - - - - = = =
+ .>Voiced_lateral_fricative = = > > É® - - - - = = =
+ .>Approximant - Ê > > ɹ É» j É° - - - =
+ .>Lateral_approximant = = > > l É Ê Ê - = = =
+ .>Click Ê - Ç Ç Ç -â¼ Ç - - = = =
+ .>Implosive É É̪ > > É -á¶ Ê É Ê = = =
+ }],
+ [(
+ '-',
+ map { substr($_, 0, 1).':'.$_, substr($_, 0, 1)." r:$_ rounded" }
+ qw{Front Central Back}
+ ), qw{
+ .>Close i y ɨ Ê É¯ u
+ .>Near-close - ɪ Ê - Ê -
+ .>Close-mid e ø É Éµ ɤ o
+ .>Mid - - É - - -
+ .>Open-mid É Å É É Ê É
+ .>Near-open æ - É - - -
+ .>Open a ɶ - - É É
+ }],
+
+ 'Alphabetics',
+ [qw{
+ .>Latin a Ä« ı Ä Ã´ ɳ Šṡ Å¡ Ä Ã° Æ·
+ .>Cyrillic а Ñ Ð¹ Ñ Ñ Ð½ Ñ Ñ Ñ Ñ Ñ Ð¯
+ .>Greek α ί Ï Î· Ï Ï Ï Ï Ï Î¸ ξ Ω
+ .>Hebrew × ×² × ×¢ × × × ×¡ ש × ×¦ ×¥
+ }],
+
+ 'Japanese',
+ [qw{
+ - A I U E O _
+ .> ã ã ã ã ã =
+ .>K ã ã ã ã ã =
+ .>S ã ã ã ã ã =
+ .>T ã 㡠㤠㦠㨠=
+ .>N 㪠㫠㬠ã ã® ã
+ .>H 㯠㲠㵠㸠㻠=
+ .>M ã¾ ã¿ ã ã ã =
+ .>Y ã = ã = ã =
+ .>R ã ã ã ã ã =
+ .>W ã ã = ã ã =
+ }],
+ [qw{
+ - A I U E O
+ .>G ã ã ã ã ã
+ .>Z ã ã ã ã ã
+ .>D ã 㢠㥠㧠ã©
+ .>B 㰠㳠㶠㹠ã¼
+ .>P 㱠㴠㷠㺠ã½
+ }],
+ [qw{
+ - A I U E O _
+ .> 㢠㤠㦠㨠㪠ã¼
+ .>K ã« ã 㯠㱠㳠=
+ .>S ãµ ã· ã¹ ã» ã½ =
+ .>T ã¿ ã ã ã ã =
+ .>N ã ã ã ã ã ã³
+ .>H ã ã ã ã ã =
+ .>M ã ã ã 㡠㢠=
+ .>Y 㤠- 㦠- 㨠=
+ .>R 㩠㪠㫠㬠ã =
+ .>W 㯠㰠- 㱠㲠=
+ }],
+ [qw{
+ - A I U E O
+ .>G 㬠㮠㰠㲠ã´
+ .>Z 㶠㸠㺠㼠ã¾
+ .>D ã ã ã
ã ã
+ .>B ã ã ã ã ã
+ .>P ã ã ã ã ã
+ .>V 㷠㸠㴠㹠ãº
+ }],
);
+:>
+
+
+
+