chiark / gitweb /
numbered-alias-sheet: numbers can be different size
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 Nov 2013 23:15:29 +0000 (23:15 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 3 Nov 2013 23:15:29 +0000 (23:15 +0000)
numbered-alias-sheet

index d27c9f0bb93b90535394779043dd5e00bc52edc0..2305a136ca2a0955d6ee702687a79c596fc4dca1 100755 (executable)
@@ -6,9 +6,10 @@ use POSIX;
 use Data::Dumper;
 
 our $papersize =  'creditcard';
+our $fontname_num = 'Helvetica';
+our $fontscale_num = 0.8;
 our $fontname = 'Courier';
-our $fontname_num = 'Courier';
-our $gapratio = 1;
+our $gapratio = 1.5;
 our $lineratio = 1;
 our $blankratio = 1;
 our @borders = (4,4);
@@ -21,8 +22,9 @@ our @lp_fixed;
 our $usage = <<END;
 usage: $us [<options>] <foo-mail-pregen> <foo-mail-pregen-opts>...
 options:
-  -p<papersize>           for libpaper, or "creditcard"  default is $papersize
-  -f[<numberfont>,]<font> font name                      default is $fontname
+  -p<papersize>           for libpaper, or "creditcard", default is $papersize
+  -f<bothfont>            set both to same font name
+  -f[<numfont>[*<scale>]],[<addrfont>]  default is $fontname_num*$fontscale_num,$fontname
   -b<border>|-b<bx>x<by>  all in mm
   -g<gapratio>            number-to-addr gap adjustment
   -l<lineratio>           inter-line space ("leading") adjustment factor
@@ -76,8 +78,14 @@ for (;;) {
            @paperpts = mm2pt($1,$2);
        } elsif (s/^-f($fontname_re)$//o) {
            $fontname = $fontname_num = $1;
-       } elsif (s/^-f($fontname_re),($fontname_re)$//o) {
-           ($fontname_num, $fontname) = ($1, $2);
+       } elsif (s/^-f(?:($fontname_re)(?:\*($dbl_re))?)?,($fontname_re)?$//o) {
+           if (defined $1) {
+               $fontname_num = $1;
+               $fontscale_num = defined($2) ? $2 : 1.0;
+           }
+           if (defined $3) {
+               $fontname = $3;
+           }
        } elsif (s/^-b($dbl_re)$//o) {
            @borders = ($1,$1);
        } elsif (s/^-b($dbl_re)x($dbl_re)$//o) {
@@ -304,7 +312,7 @@ sub do_layout ($) {
 
     print DEBUG "layout $fontsize\n";
 
-    @numbers_metr = map { $_ * $fontsize } @numbers_1_metr;
+    @numbers_metr = map { $_ * $fontsize * $fontscale_num } @numbers_1_metr;
     $gap_width = $gapratio * $fontsize * $nom_gap_1_metr[4];
     $colgap_width = $gap_width * 2;
     @texts_metr = map { $_ * $fontsize } @texts_1_metr;
@@ -338,7 +346,7 @@ sub determine_size_layout () {
 
        defined $minsz or die "cannot fit at even at ${trysz}pt\n";
 
-       if (defined $maxsz && ($maxsz / $minsz) < 1.01) {
+       if (defined $maxsz && ($maxsz / $minsz) < 1.001) {
            $usesz = $minsz;
            last;
        }
@@ -392,7 +400,7 @@ sub write_output () {
     foreach my $nums (qw(1 0)) {
        prf("%s findfont %s scalefont setfont\n",
            psstring($nums ? $fontname_num : $fontname),
-           $lp_y->{f});
+           ($nums ? $fontscale_num : 1.0) * $lp_y->{f});
        prf "%s setlinewidth\n", $gap_width * 0.1;
        print DEBUG "nums? $nums rows=$rows\n";
        foreach my $col (0..$lp_y->{0}-1) {