X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/e428e6a5dee93205f841cde76d7df674f780ee11..0b57d5121c74fe18615499055e2f079c81c89001:/writing-latn.inc.pl diff --git a/writing-latn.inc.pl b/writing-latn.inc.pl index fd9faa2..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 = ( @@ -50,9 +56,10 @@ sub dispbar { } sub disphues { - my ($index, $hues) = @_; + my ($index, $hues, $opaque) = @_; my @lum = ($index % 3, $index / 3 % 3, $index / 9); # hue opacities (0..2)x3 - my @lumf = ('hsl(%s,100%%,50%%)', 'hsl(%s,100%%,25%%)'); + my @lumf = $opaque ? ('hsl(%s,100%%,50%%)', 'hsl(%s,100%%,25%%)') : + ('hsl(%s,100%%,50%%)', 'hsla(%s,100%%,50%%,.5)'); return sprintf( '%s', join '', map { @@ -174,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', #}, @@ -432,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 => { @@ -468,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 { disphues($_, [0, 240, 120]) } 0 .. 3*3*3 ], # Red, Blue, Green }, dni => { title => "D'ni", @@ -546,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{