X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/b5b83b378d3dccb7e6538945eaf5000102a2d658..0b57d5121c74fe18615499055e2f079c81c89001:/writing-latn.inc.pl diff --git a/writing-latn.inc.pl b/writing-latn.inc.pl index 0d6ecb4..aa0e444 100644 --- a/writing-latn.inc.pl +++ b/writing-latn.inc.pl @@ -1,14 +1,20 @@ use 5.014; use utf8; +use warnings; use List::Util qw( pairs pairmap sum ); -my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); +my %C = ( + red => '#EC1C24', + blue => '#3953A3', + yellow => '#F9EC31', + black => '#231F20', +); my $U = 0; # optional unicode alternatives my @wrapstyle = ( - 'td { white-space: normal; word-spacing: 5em }', # force line break between words + 'td { white-space: normal; word-spacing: 10em }', # force line break between words '.sample { word-spacing: 0 }', - '.sample span { margin-right: 1ex; white-space: nowrap }', # larger space between letters + '.sample span { margin-right: 1ex; white-space: nowrap; display: inline-block }', # larger space between letters ); my $spacestyle = '.sample span { margin-right: 0.5ex }'; # separate multiple letters my @tapstyle = ( @@ -49,15 +55,19 @@ sub dispbar { ); } -sub disprgb { - my ($index) = @_; - my $circle = ''; +sub disphues { + my ($index, $hues, $opaque) = @_; + my @lum = ($index % 3, $index / 3 % 3, $index / 9); # hue opacities (0..2)x3 + my @lumf = $opaque ? ('hsl(%s,100%%,50%%)', 'hsl(%s,100%%,25%%)') : + ('hsl(%s,100%%,50%%)', 'hsla(%s,100%%,50%%,.5)'); return sprintf( '%s', - join '', - sprintf($circle, 10, 10, [0, 8, 15]->[$index % 3], 0, 0), - sprintf($circle, 11, 12, 0, [0, 8, 15]->[$index / 3 % 3], 0), - sprintf($circle, 12, 10, 0, 0, [0, 8, 15]->[$index / 9]), + join '', map { + my $colf = $lumf[ $lum[$_] ]; + !$colf ? () : sprintf('', + 10 + $_, $_ == 1 ? 12 : 10, 10, sprintf($colf, $hues->[$_]) + ); + } 0 .. 2 ); } @@ -171,6 +181,28 @@ unistrokes => { 'M3,4', ], }, +edgewrite => { + title => 'EdgeWrite', + style => 'svg path { stroke-linecap: round; stroke-linejoin: round }', + list => [ + map { ''.$_.'' } + map { + my @route = split //; + my @coords = map { $_ % 2 << 3, $_ >> 1 << 3 } @route; # x,y, + sprintf('', @coords[0, 1]) . # start point + sprintf('', join ' ', map { + my $pos = join(',', @coords[$_*2, $_*2 + 1]); + $_ > 1 && $route[$_] == $route[$_ - 2] ? 'Q4,4 '.$pos.'L' : # curve back + $pos + } 0 .. $#route) + } + # corners (0..3) clockwise from top-left in order + qw( + 213 0232 1023 1323 103 102 10132 0213 02 132 02123 023 20313 2031 + 10231 0102 10131 201 1032 013 0231 021 02131 0312 0313 0123 01 + ) + ], +}, #graffiti => { # title => 'Palm Graffiti', #}, @@ -429,7 +461,7 @@ code128 => { list => [map { dispbar($_) } qw( 111323 131123 131321 112313 132113 132311 211313 231113 231311 112133 112331 132131 113123 113321 133121 313121 211331 231131 213113 213311 - 213131 311123 311321 331121 312113 312311 212222 0 211412 2331112 + 213131 311123 311321 331121 312113 312311 212222 0 211412 23311120 )], }, rm4scc => { @@ -465,8 +497,24 @@ rgbmap => { style => [ 'svg { isolation: isolate }', 'svg circle { mix-blend-mode: screen }', + '.sample { background: black }', + ], + list => [ + map { disphues($_, [0, 240, 120], 1) } # Red, Blue, Green + 0 .. 3*3*3 - 2 + ], +}, +cmymap => { + title => 'CMYmap', + style => [ + 'svg { isolation: isolate }', # mix on white + 'svg circle { mix-blend-mode: multiply }', + '.sample { background: white }', + ], + list => [ + map { disphues($_, [180, 60, 300]) } # Cyan, Yellow, Magenta + 0 .. 3*3*3 - 1 ], - list => [ map { disprgb($_) } 0 .. 3*3*3 ], }, dni => { title => "D'ni", @@ -543,17 +591,18 @@ nyctographs => { # draw style (0=empty, 1=dot, 2=line connect) to right, down, left, up qw( 0010 0112 2022 2220 2000 2012 0122 0202 0020 0220 0012 0022 2202 - 0222 2222 0102 0200 2201 2002 2200 0100 0110 0120 2001 2010 2020 0 + 0222 2222 0102 0200 2201 2002 2200 0100 0110 0120 2001 2010 2020 0000 ), ], }, chromacons => { +# style => '.sample { word-break: break-all }', list => [ # Colour Alphabet by Paul Green-Armytage (2010) map { sprintf('%s', !!$_ && sprintf(' style="background:#%s" title="%s"', split /:/), - chr(8195), # em space + chr(8195) . (!$_ && chr(8203)) # em space (plus zwsp for spaces) ); } qw{