X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/6e999e79e078ca87e22b3474d532b3d570453661..20944668da222b8510754fb4819b2b21e768840c:/writing-latn.inc.pl diff --git a/writing-latn.inc.pl b/writing-latn.inc.pl index c7bc11c..1ba3525 100644 --- a/writing-latn.inc.pl +++ b/writing-latn.inc.pl @@ -15,10 +15,10 @@ my @wrapstyle = ( 'td { white-space: normal; word-spacing: 10em }', # force line break between words '.sample { word-spacing: 0 }', - '.sample span { margin-right: 1ex; white-space: nowrap; display: inline-block }', + '.sample svg { margin-right: 1ex; white-space: nowrap; display: inline-block }', # larger space between letters ); -my $spacestyle = '.sample span { margin-right: 0.5ex }'; # separate letters +my $spacestyle = '.sample svg { margin-right: 0.5ex }'; # separate letters my @tapstyle = ( @wrapstyle, '{ line-height: 1ex }', @@ -53,6 +53,50 @@ sub disptap { return $prefix . join(' ', map { '·' x $_ } @dots); } +sub dispdomino { + my $code = shift; + my ($prefix, @dots) = $code =~ m/\A(-?)(\d)(\d)/ or return $code; + # unicode glyph alternative as DOMINO TILE HORIZONTAL-0a-0b + return $prefix . chr(0x1F031 + ($dots[0] * 7) + $dots[1]); +} + +sub dispblock { + my $code = shift; + my ($prefix, $shape, $rotate) = $code =~ m/\A(-?)(\w)(\d?)/ + or return $code; + my %path = ( + S => 'm0,1h1v-1h1', + Z => 'm0,0h1v1h1', + L => 'm0,0v2h1', + v => 'm0,0v1h1', + J => 'm1,0v2h-1', + T => 'm0,0h2.5h-1.5v1', + O => 'm0,0h1v1h-1', + I => 'm0,1h3', + i => 'm0,1h2', + o => 'm0,1h1', + ); + my %col = qw( + S 120 Z 0 J 240 L 30 T 300 O 60 I 180 + v 45,50% i 165,50% o 165,0% + ); + s/\z(?' + . '', + $code eq 'I' ? 4 : $code =~ /T3|[LJO]$|[Iio]1/ ? 2 : 3, + @gaps ? qq( class="@gaps") : '', + $path{$shape}, "hsl($col{$shape},50%)", join('', + $rotate && sprintf(' transform="rotate(%s 1 1)"', $rotate * 90), + $prefix && ' style="opacity:.5"', + ), + ); +} + sub dispbar { my $code = shift or return ''; @@ -100,7 +144,7 @@ lowercase => { list => [qw{ a b c d e f g h i j k l m n o p q r s t u v w x y z }], }, suetterlin => { - title => 'Sütterlin', + name => 'Sütterlin', style => [ '@font-face { font-family: Suetterlin; /* R. G. Arens */ @@ -111,10 +155,10 @@ suetterlin => { list => [qw{ a b c d e f g h i j k l m n o p q r ſ s t u v w x y z }], }, roman => { - title => 'Old Roman Cursive', + name => 'Old Roman Cursive', style => [ 'svg path { stroke-linecap: round; stroke-linejoin: round }', - '.sample span { margin-right: -10px }', + '.sample svg { margin-right: -10px }', ], list => [ map { @@ -150,7 +194,7 @@ roman => { ], }, sutton => { - title => 'Sutton ASL', + name => 'Sutton ASL', style => $spacestyle, list => [ # American manual alphabet in Sutton (U+1D800+) notation @@ -164,8 +208,19 @@ sutton => { 0 965aa6 }], }, +graffiti => { + name => 'Palm Graffiti', + style => [ + '@font-face { + font-family: Graffiti; + src: url("/graffiti.ttf"); + }', + 'td { font-family: Graffiti }', + ], + list => [qw{ a b c d e f g h i j k l m n o p q r s t u v w * y z }], +}, unistrokes => { - title => 'Unistrokes', + name => 'Unistrokes', url => 'https://www.google.com/patents/US5596656', # by Xerox style => 'svg path { stroke-linecap: round; stroke-linejoin: round }', list => [ @@ -204,7 +259,7 @@ unistrokes => { ], }, edgewrite => { - title => 'EdgeWrite', + name => 'EdgeWrite', url => 'http://depts.washington.edu/ewrite/', # patented US7729542 style => 'svg path { stroke-linecap: round; stroke-linejoin: round }', list => [ @@ -228,11 +283,8 @@ edgewrite => { ) ], }, -#graffiti => { -# title => 'Palm Graffiti', -#}, ita2 => { - title => 'ITA2', + name => 'ITA2', style => [@wrapstyle, 'td { font-size: 50% }'], list => [map { tr/01/○●/r =~ s/..\K/ /r } qw( 11000 10011 01110 10010 10000 10110 01011 00101 01100 11010 11110 01001 00111 @@ -240,11 +292,43 @@ ita2 => { 00100 )], }, +moon => { + list => [ + map { qq() } + 'M0,6 3,0 6,6', + 'M1,0 V4 A2,2 0,0,0 5,4', + 'M5,0 A4.5,3 0,0,0 5,6', + 'M1,0 A4.5,3 0,0,1 1,6', + 'M0,6 V0 H6', + 'M1,6 V2 A2,2 0,0,1 5,2', + 'M5,6 V2 A2,2 0,1,0 1,2', + 'M1.5,3 A1.5,1.5 0,0,0 4.5,3 1.5,1.5 0,0,0 1.5,3 M3,1.5 A1,1.5 0,0,0 3,4.5', + 'M3,0 V6', + 'M5,0 V4 A2,2 0,0,1 1,4', + 'M6,0 0,3 6,6', + 'M0,0 V6 H6', + 'M0,0 H6 V6', + 'M0,6 V2 L6,6 V0', + 'M0,3 A3,3 0,0,0 6,3 3,3 0,0,0 0,3', + 'M6,4 H2 A2,1 0,0,1 2,2', + 'M0,4 H4 A2,1 0,0,0 4,2', + 'M0,0 6,6', + 'M0,6 6,0', + 'M0,3 H6', + 'M0,0 V3 A3,3 0,0,0 6,3 V0', + 'M0,0 3,6 6,0', + 'M0,6 V3 A3,3 0,0,1 6,3 V6', + 'M0,0 6,3 0,6', + 'M6,0 V6 H0', + 'M0,0 H6 L2,6 H6', + ], + style => 'svg path { stroke-linecap: round; stroke-linejoin: round }', +}, braille => { list => [qw{ ⠁ ⠃ ⠉ ⠙ ⠑ ⠋ ⠛ ⠓ ⠊ ⠚ ⠅ ⠇ ⠍ ⠝ ⠕ ⠏ ⠟ ⠗ ⠎ ⠞ ⠥ ⠧ ⠺ ⠭ ⠽ ⠵ }], }, tactile => { - title => '5-point Tactile', + name => '5-point Tactile', list => [ map { ''.$_.'' } map { @@ -269,7 +353,7 @@ morse => { }], }, tap => { - title => 'Tap code', + name => 'Tap code', style => \@tapstyle, list => [map { disptap($_) } qw{ 11 12 13 14 15 21 22 23 > 24 25 31 32 @@ -277,12 +361,37 @@ tap => { }], }, shorttap => { - title => 'Short Tap', + name => 'Short Tap', style => \@tapstyle, list => [map { disptap($_) } qw{ 11 12 13 14 21 22 23 20 > 31 -13 32 33 30 41 42 -13 43 40 10 51 52 53 50 -31 -40 }], + altlist => [map { disptap($_) } qw{ + 10 14 -13 12 20 23 22 21 30 -34 13 33 32 + 31 40 43 -13 42 41 11 50 -23 -50 -1341 -31 -41 + }], +}, +domino => { + name => 'Domino tiles', + list => [map { dispdomino($_) } qw{ + 10 11 20 21 22 30 31 32 33 40 41 42 43 + 44 50 51 52 53 54 55 60 61 62 63 64 65 + }], +}, +tetromino => { + style => [ + 'svg path { stroke-linecap: square }', + '.sample .gapl1 + .gapr1 { margin-left: -6.3px }', + ], + name => 'Tetrominos', + list => [map { dispblock($_) } qw{ + T2 T1 I T3 + i L1 J L3 + o1 I1 L2 L -S1 Z1 + O J2 v2 -J3 S T + J1 v1 v v3 i1 Z + }], }, cards => { style => 'td { font-family: Symbola, "DejaVu Sans", serif, sans }', @@ -292,7 +401,7 @@ cards => { ), '', chr(0x1F0CF), chr(0x1F0DF) ], }, maritime => { - title => 'Maritime flags', + name => 'Maritime flags', style => $spacestyle, list => [ # International Code of Signals, SVG fills @@ -402,7 +511,7 @@ maritime => { ], }, flag => { - title => 'Flag semaphore', + name => 'Flag semaphore', list => [ map { local $_ = $_; @@ -418,7 +527,7 @@ flag => { ], }, chappe => { - title => 'Chappe semaphore', + name => 'Chappe semaphore', list => [ map { my ($r, $pr, $pl) = split //, $_; @@ -443,7 +552,7 @@ chappe => { ], }, prussian => { - title => 'Prussian semaphore', + name => 'Prussian semaphore', list => [ map { /^\D+$/ ? $_ : sprintf join('', @@ -466,7 +575,7 @@ prussian => { ], }, code39 => { - title => 'Code 39', + name => 'Code 39', list => [map { dispbar($_) } qw( 2111121121 1121121121 2121121111 1111221121 2111221111 1121221111 1111122121 2111122111 1121122111 1111222111 2111111221 1121111221 @@ -476,7 +585,7 @@ code39 => { )], # ISO/IEC 16388 }, code93 => { - title => 'Code 93', + name => 'Code 93', list => [map { dispbar($_) } qw( 211113 211212 211311 221112 221211 231111 112113 112212 112311 122112 132111 111123 111222 111321 121122 131121 212112 212211 211122 211221 @@ -484,7 +593,7 @@ code93 => { )], }, code128 => { - title => 'Code 128', + name => 'Code 128', list => [map { dispbar($_) } qw( 111323 131123 131321 112313 132113 132311 211313 231113 231311 112133 112331 132131 113123 113321 133121 313121 211331 231131 213113 213311 @@ -492,7 +601,7 @@ code128 => { )], }, rm4scc => { - title => 'RM4SCC', + name => 'RM4SCC', list => [ map { my $len = length $_; @@ -520,7 +629,7 @@ rm4scc => { ], }, rgbmap => { - title => 'RGBmap', + name => 'RGBmap', style => [ 'svg { isolation: isolate }', 'svg circle { mix-blend-mode: screen }', @@ -532,7 +641,7 @@ rgbmap => { ], }, cmymap => { - title => 'CMYmap', + name => 'CMYmap', style => [ 'svg { isolation: isolate }', # mix on white 'svg circle { mix-blend-mode: multiply }', @@ -545,10 +654,10 @@ cmymap => { ], }, dni => { - title => "D'ni", + name => "D'ni", style => [ 'svg { border: 1px solid currentColor }', - '.sample span + span svg { border-left: 0 }', + '.sample svg + svg { border-left: 0 }', ], list => [ map { @@ -630,9 +739,12 @@ nyctographs => { ], }, chromacons => { -# style => '.sample { word-break: break-all }', + title => 'Colour Alphabet by Paul Green-Armytage (2010)', + style => [ + #'.sample { word-break: break-all }', + '.sample { background: white }', + ], list => [ - # Colour Alphabet by Paul Green-Armytage (2010) map { sprintf('%s', !!$_ && sprintf(' style="background:#%s" title="%s"', split /:/),