X-Git-Url: http://git.shiar.nl/sheet.git/blobdiff_plain/fa47b427173cfffa0080d4612e4e7819d5071a79..4b41b47d87dc5cd2533cb06f6791537176641503:/writing-latn.inc.pl?ds=inline
diff --git a/writing-latn.inc.pl b/writing-latn.inc.pl
index f313a31..c026c0f 100644
--- a/writing-latn.inc.pl
+++ b/writing-latn.inc.pl
@@ -1,5 +1,9 @@
+use 5.014;
use utf8;
-use List::Util qw( pairs );
+use List::Util qw( pairs pairmap sum );
+
+my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20);
+my $U = 0; # optional unicode alternatives
sub disptap {
return map {
@@ -10,8 +14,27 @@ sub disptap {
} @_;
}
-my %C = qw(red #EC1C24 blue #3953A3 yellow #F9EC31 black #231F20);
-my $U = 0; # optional unicode alternatives
+sub dispbar {
+ my $code = shift;
+
+ return join '', pairmap {
+ ($a =~ tr/123/âââ/r) . ($b =~ tr/321/ââ/dr)
+ } split //, $code if $U;
+
+ my @cols = split //, $code; # bar and space widths
+ my $width = sum(@cols);
+ return sprintf(
+ '',
+ $width * 2, 14, $width, 7, join(' ',
+ 'M0,0',
+ map {
+ join('m1,-7', ('v7') x $_->[0]), # line per bar width
+ (map { sprintf 'm%d,-7', $_ + 1 } $_->[1] || ()), # space forward
+ }
+ pairs @cols
+ )
+ );
+}
(
'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 }],
@@ -264,24 +287,11 @@ my $U = 0; # optional unicode alternatives
201112 102112 202111 101212 201211 102211 102121 0 101221
)
],
-'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 31121
- )
-],
+'Code 93' => [map { dispbar($_) } qw(
+ 211113 211212 211311 221112 221211 231111 112113 112212 112311 122112
+ 132111 111123 111222 111321 121122 131121 212112 212211 211122 211221
+ 221121 222111 112122 112221 122121 123111 311211
+)],
'Code 128' => [
map { $U ? tr/1-3-/ââââ/r : sprintf
'',
@@ -325,6 +335,29 @@ my $U = 0; # optional unicode alternatives
), # 0 for space
'', 1, 3 # start/end
],
+"D'ni" => [
+ map {
+ state $window = 'M-.5,-.5H8.5V8.5H-.5Z';
+ state $v = [
+ '',
+ 'M0,4 8,4',
+ 'M0,8 Q4,4 8,8',
+ 'M0,4 4,8 8,4',
+ 'M2,0 2,4 8,4',
+ 'M0,0 8,8 M0,8 8,0', # cross
+ 'M3.5,4 h1', # dot
+ ];
+ state $h = [
+ '',
+ 'M4,0 4,8',
+ 'M0,0 Q4,4 0,8',
+ 'M4,-.5 0,4 4,8.5',
+ 'M4,8 4,2 8,2',
+ ];
+ sprintf '',
+ $window . ($h->[$_ % 5] . $v->[$_ / 5] || $v->[6]);
+ } 0 .. 5*5
+],
'Pigpen' => [
map {
qq()