X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/9641797ec955d7b136a2287e012d093fa2bc1cb0..b16ebb61e918ea6b67674f515814f4fae6fcc37f:/writing-latn.inc.pl diff --git a/writing-latn.inc.pl b/writing-latn.inc.pl index 83bdfcb..da6fc3f 100644 --- a/writing-latn.inc.pl +++ b/writing-latn.inc.pl @@ -1,23 +1,24 @@ use utf8; +use List::Util qw( pairs ); sub disptap { return map { !m/\A(-?)(\d)(\d)/ ? $_ : - sprintf('%s
%s', - ' class=ex' x !!$1, + $1.join(' ', '·' x $2, '·' x $3, ); } @_; } my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); +my $U = 0; # optional unicode alternatives ( 'Uppercase' => [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 }], 'Lowercase' => [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 }], 'Sütterlin' => [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 }], 'Old Roman Cursive' => [ - map { /^\w/ ? '' : $_ } + map { m/^(-?)(\w.*)/ ? $1.'' : $_ } "m2,4 c1,2 8,9 8,9 M2,15 6,9", "m2,4 c0,0 3,-2 4,1 1,2 0,9 3,9 1,-0 2,-1 2,-1 m-6,-2 c-5,4 -0,6 1,3", "m4,7 4,-2 m-4,4 c0,0 -2,7 3,6", @@ -28,7 +29,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); "m7,9 4,-0 m-8,0 c4,0 6,-1 5,6 M1,3 c2,-0 2,12 2,12", '>', # i = j "m6,8 -0,7", - "m9,5 -5,4 4,4 m-4,-10 -1,13", + "-m9,5 -5,4 4,4 m-4,-10 -1,13", "m3,2 c0,0 -1,9 1,10 5,2 6,2 6,2", "m0,16 3,-10 4,6 2,-5 5,4", "m2,16 1,-9 5,8 2,-9", @@ -40,10 +41,10 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); "m2,7 8,0 m-4,1 c0,0 -1,8 3,5", '>', # u = v "m2,5 c0,0 3,5 6,3 3,-2 2,-3 2,-3", - '', + '-', "m3,19 c-1,-6 6,-17 6,-17 M1,8 c0,0 10,1 10,1", - "m0,7 c2,-3 5,-2 5,1 l0,11 c0,0 -0,-4 -0,-10 -0,-4 4,-4 6,-3", - "m3,6 c4,-1 3,3 3,3 -1,3 -2,5 -1,5 1,1 3,0 3,0", + "-m0,7 c2,-3 5,-2 5,1 l0,11 c0,0 -0,-4 -0,-10 -0,-4 4,-4 6,-3", + "-m3,6 c4,-1 3,3 3,3 -1,3 -2,5 -1,5 1,1 3,0 3,0", ], 'Sutton ASL' => [ # American manual alphabet in Sutton (U+1D800+) notation @@ -182,7 +183,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); 'Flag semaphore' => [ map { local $_ = $_; - s/[1-4]\K(?=[4-9])/ /; + s/[1-4]\K(?=[4-9])/ /; # prevent unwanted vertical crossing tr/1-9/↙←↖↑↗→↘↓/; s{(\S)(?=.)}{$1}; $_ @@ -197,7 +198,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); my ($r, $pr, $pl) = split //, $_; /^\D$/ ? $_ : sprintf( join('', - '', + '', '', '', '', @@ -217,7 +218,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); 'Prussian semaphore' => [ map { /^\D+$/ ? $_ : sprintf join('', - '', + '', '', (map {( qq(), @@ -242,8 +243,35 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); 201112 102112 202111 101212 201211 102211 ) ], +'Code 93' => [ + map { + sprintf + '', + join ' ', + map { + join('m1,-7', ('v7') x $_->[0]), # line per bar width + (map { sprintf 'm%d,-7', $_ + 1 } $_->[1] || ()), # space forward + } + pairs split // + } + # bar and space widths (1-3) + qw( + 21111 21121 21131 22111 22121 23111 11211 11221 11231 + 12211 13211 11112 11122 11132 12112 13112 21211 21221 + 21112 21122 22112 22211 11212 11222 12212 12311 + ) +], 'Code 128' => [ - map { tr/1-3-/❘❙❚ /r } + map { $U ? tr/1-3-/❘❙❚ /r : sprintf + '', + join ' ', + map { + $_ eq '' ? 'm2,-7' : + $_ eq '-' ? 'm4,-7' : + join 'm1,-7', ('v7') x $_ + } + split /(-)?/, $_ # each bar [123] and space [ -] + } # bar widths (1-3) followed by space of width 1 (implied) or 3 (-) qw( 11-2 1-12 1-1-2 12-1 1-21 1-2-1 21-1 2-11 2-1-1 123 12-3 1-23 132 @@ -282,7 +310,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); m/h/ or s/v/l3,/g; m/v/ or s/h([^h]*)/l$1,3/g; my $dot = s/\.// && qq(); - qq($dot) + qq($dot) } qw( Hvh vhv vh hvh vhvh Hhvh hv Vvhv Hhv @@ -295,8 +323,7 @@ my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20); map { s/M[\d,\hM]+(?=[M"])//gr } # clean up superfluous moves map { sprintf '' - . '', - ' stroke-linecap="round" stroke-linejoin="round"', + . '', 'h.5v.5h-.5v-.5', # start anchor map { ['M', 'h0M', 'L']->[$_] } split //, $_