<:
-my $diinfo = do 'digraphs.inc.pl';
-my %di = map { $diinfo->{$_}->[0] => $_ } grep { ref $diinfo->{$_} }
- keys %$diinfo;
-
-sub quote {
- local $_ = shift;
- s/"/"/g;
- s/</g;
- s/>/>/g;
- return $_;
-}
-
-sub table {
- my ($width, $digraphs, $rowheads, $colheads) = @_;
-
- my @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;
- }
-
- my $code = join '', map { $di{ord $_} || '' } split //, $cell;
- my $name = $diinfo->{$code}->[1];
-
- 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';
- }
-
- $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{. ⸠Ⳡ⹠. â â â· . ⺠⽠â¿}]],
-);
-
-print "Line drawing
\n\n";
-print table(@$_) for (
- [ 4 => [qw{. â ⬠â . â ⼠⤠. â â´ â}]],
- [ 4 => [qw{. â â³ â . ⣠â â« . â â» â}]],
- [ 3 => [qw{. â ⯠â . â ⿠⥠. â â· â}]],
- [ 3 => [qw{. â â° â . â â ⨠. â ⸠â}]],
- [ 4 => [qw{
+use Shiar_Sheet::FormatChar;
+my $glyphs = Shiar_Sheet::FormatChar->new;
+
+if (exists $get{di}) {
+ $glyphs->{digraph} = defined $get{di} ? ! !$get{di} : 1;
+ $glyphs->{unicode} = 1;
+}
+if (exists $get{q}) {
+ $glyphs->{unicode} = -1;
+ $glyphs->{digraph}--;
+}
+
+our $verbose = exists $get{v};
+
+$glyphs->print(
+ 'Popular',
+ [qw{. « » . ⹠⺠. â â . â â . â â . â â}],
+ [qw{. â ⡠⢠. § ¶ # . © ® ⢠. ° â² â³ . â à ÷ . ± ² â}],
+ [qw{. â â . â â . ⺠⹠. â â . â â }, $verbose ? () : qw{. â âº}],
+ [qw{. Ã¥ ä ö ü à . Ä Ã¦ ø ű Å¿}],
+ [qw{
+ . á è õ û ç . Ä
ı ơ ů þ
+ }],
+ $verbose ? [qw{
+ .>Englisc æ ð Ä È Å Ã¾ Æ¿
+ .>Sámi á Ä Ä Å Å¡ ŧ ž
+ .>Slavic Ä
Ä Å Å¯ ź ż ž
+ .>Türkçe ç Ä Ä± Ä° ö Šü
+ .>Esperanto Ä Ä Ä¥ ĵ Å Å
+ }] : (),
+ [qw{. α β}],
+ [qw{. ¿ ⦠ã â â . ⽠· â» â â }],
+
+ 'Symbols',
+ [qw{. ¤ ¢ ⥠⬠£ ⨠$ Â¥ . ฿ â« â ⦠Ⱡ⮠⩠âª}],
+ [qw{. â ⡠⢠⣠. ⤠⥠⦠â§}],
+ [qw{. ⮠⯠⻠⪠Ⲡ⿠}],
+ [qw{. â â â» â â}, $verbose ? qw{. ð ð¾ ð° ð® ð } : ()], # communication
+ [qw{. â â â }, $verbose ? qw{. ð¹ ð ð¼ } : ()], # 3-way (RockPaperScissors, TerranProtossZerg)
+ [qw{. â â¡ â }],
+ 'Signs',
+ [qw{. â â¿ â â â â â â
â â}], # solar
+ [qw{
+ . â â â â â â â â â â â â
+ }, !$verbose ? () : qw{
+ . å¯
å¯ è¾° å·³ å æª ç³ é
æ 亥 å ä¸
+ . è å
é¾ è 馬 ç¾ ç´ é ç 豬 é¼ ç
+ . ð
ð ð ð ð ð ð ð ð ð ð ð
+ }], # zodiac
+
+ 'Key commands',
+ [qw{. ⥠⤠. ⣠⫠}], # common spacing
+ [qw{. â â± â . ⦠Ⲡâ }], # edit block
+ [qw{. ⪠⯠â . ⧠⮠â }], # modifier
+ [qw{. â ⥠â â }], [qw{. âµ â â â }], # command
+$verbose ? (
+ [qw{. ⺠⩠â â¼ â« . â ⪠⮠â -ââ }], # player ui
+) : (),
+
+ 'Arrows',
+ [qw{. â â â â . â - â â . â â â -}],
+ [qw{. â â â â . â - â â . â â â -}],
+ [qw{. ⬠⧠⬠⬠. ⦠- ⨠Ⳡ. ⬠⩠⬠-}],
+ [qw{. ⬠⬠⬠⬠. â¬
- ⡠⬠. ⬠⬠⬠-}],
+ [qw{. ⩠⬠⬠. ⧠⡠⨠. ⬠⬠⪠}],
+ [qw{. ⤠Ⲡ⥠. â â ⶠ. ⣠⼠⢠}],
+ [qw{. ⸠Ⳡ⹠. â â â· . ⺠⽠⿠}],
+$verbose ? (
+ [qw{. î© î§ îª . î¥ - î¦ . î« î¨ î¬ }],
+ [qw{. î± î¯ î² . î - î® . î³ î° î´ }],
+) : (),
+
+ 'Line drawing',
+ [qw{. â ⦠â â . â ⬠⣠â . â â© â - }],
+ [qw{. â ⤠â . â ⪠⡠. â ⧠â }],
+ [qw{. â ⥠â . â ⫠⢠. â ⨠â }],
+ [qw{. â ⬠â . â ⼠⤠. â â´ â}],
+ [qw{. â â³ â . ⣠â â« . â â» â}],
+ [qw{. â ⯠â . â ⿠⥠. â â· â}],
+ [qw{. â â° â . â â ⨠. â ⸠â}],
+ [qw{
. â´ â â â â ⶠâ¾
. ⸠â â â
â ⺠â¼
. âµ â â â â â· â¿
. â¹ â â â â â» â½
- }]],
- [ 1 => [qw{. â± â³ â² }]],
- [ 4 => [qw{. â ⦠â â . â ⬠⣠â . â â© â - }]],
- [ 3 => [qw{. â ⤠â . â ⪠⡠. â ⧠â }]],
- [ 3 => [qw{. â ⥠â . â ⫠⢠. â ⨠â }]],
-);
-
-print "Blocks
\n\n";
-print table(@$_) for (
- [ 3 => [qw{. â â â . â â â . â â â }]],
- [ 3 => [qw{. â . â . â }]],
- [ 2 => [qw{. â â â . â â â }]],
- [ 2 => [qw{. â â â â â
â â â . â â â â â â â â }]],
- [ 3 => [qw{. ⡠⣠â . ⤠⦠⥠. ⧠⩠â¨}]],
-);
-
-print "Signs
\n\n";
-print table(@$_) for (
- [ 8 => [qw{. ¤ ¢ ⥠⬠£ ⨠$ Â¥ . â« â ⦠Ⱡ⧠⮠⩠âª}]],
- [ 4 => [qw{. â ⡠⢠⣠. ⤠⥠⦠â§}]],
- [ 5 => [qw{. â â¿ â â â â â â
â â}]], # solar
- [12 => [qw{. â â â â â â â â â â â â}]], # zodiac
-);
-
-print "IPA
\n\n";
-print table(@$_) for (
- [
- 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 "Alphabetics
\n\n";
-print table(1,
- [ map { ('.', split //, $_->[1]) } @$_ ],
- [ map { $_->[0] } @$_ ],
-) for [
- [Latin => 'aīıÄôɳÅṡšÄðƷ'],
- [Cyrillic => 'аÑйÑÑнÑÑÑÑÑЯ'],
- [Greek => 'αίÏηÏÏÏÏÏθξΩ'],
- [Hebrew => '×ײ××¢×× ×סש×צץ'],
-];
-
-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}],
- ],
+ }],
+ [qw{. â â® . Ⱐ⯠}],
+ [qw{. â± â³ â² }],
+ # âââ¡â¢â¦â§â©âªââ®â±â²âµâ¶â¹âºâ½â¾âââââ
âââââ
+
+ 'Blocks',
+ [qw{. ⡠⣠â . ⤠⦠⥠. ⧠⩠â¨}],
+ [qw{. â . â . â }],
+ [qw{. â â â . â â â . â â â }],
+ [qw{. â â â . â â â }],
+ [qw{. â â â â â
â â â . â â â â â â â â }],
+
+ '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 -ȹ > > t Ê c k q = Ê¡ Ê
+ .>Voiced_Plosive 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 É É̪ > > É -á¶ Ê É Ê = = =
+ }],
+ [qw{
+ - co:coarticulated .>sç É .>zÊ Ê .>Êx ɧ .>jÊ· É¥ .>hwÌ¥ Ê .>É°Ê· w
+ }],
+ [(
+ '-',
+ 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 ɶ - - É É
+ }],
+
+$verbose ? (
+ '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 㷠㸠㴠㹠ãº
+ }],
+) : (),
);
:>
-
+
+
+ ascii
+ | <:= $glyphs->{digraph} ? 'digraph' : 'latin1' :>
+ | <:= $glyphs->{digraph} ? 'proposed' : 'BMP' :>
+ | other unicode
+ | discouraged
+ |
+
+
+
-