diff ascii2bdf.pl @ 0:a6ddaa18e3c1

k14 unicode font kit
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 15 Jun 2013 12:23:00 +0900
parents
children 7f5d4dad9d6b
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ascii2bdf.pl	Sat Jun 15 12:23:00 2013 +0900
@@ -0,0 +1,70 @@
+#!/usr/bin/perl
+use strict;
+
+my ($name,$encoding,@bitmap);
+
+#while(<>) {
+#    last if (/^ENDPROP/);
+#}
+
+#my $dum = <>; # skip CHARS
+
+my ($lineno,$line);
+my $width;
+my $height;
+
+while(<>) {
+    if(/^STARTCHAR\s+(.*)/) { &init(); $name=$1; print;
+    } elsif (/^ENCODING\s+(\d+)/) {    $encoding=$1; print;
+    } elsif (/^SWIDTH (\d+) (\d+)/) { print;
+    } elsif (/^DWIDTH (\d+) (\d+)/) { $width = $1; print;
+    } elsif (/^BBX ([-+\d]+) ([-+\d]+) ([-+\d]+) ([-+\d]+)/) { print; $height = $2;
+    } elsif (/^BITMAP/) { print; $line = $lineno+2; # error line must start 1
+    } elsif (/^ENDCHAR/) {  &display(); print "ENDCHAR\n";
+    } elsif (/^[ *]+$/) {  chop; push(@bitmap,$_);
+    }
+    $lineno++;
+}
+
+sub display {
+    my $hwidth = int((($width+7)&(~7))/4);
+# print "hwdith $hwidth\n";
+    my $i = 0;
+    for my $hex (@bitmap) {
+        my $bin;
+        my $orig = $hex;
+        my $j = 0;
+        while($hex =~ s/..//) {
+            if ($& eq "  ") {
+                $bin .= "0";
+            } elsif ($& eq "**") {
+                $bin .= "1";
+            } else {
+                print $line+$i,": Error Bad Alignment ","| "x$width,"\n";
+                print $line+$i,": Error Bad Alignment ","$orig\n";
+                last;
+            }
+            if ($j++ > $width) {
+                print $line+$i,": Error Too long",substr($orig,$j),
+                        "|$hex too long \n" if ($hex =~ /[^ ]/);
+                last;
+            }
+        }
+# print "bitmap $bin -- $i\n";
+        my $h =  pack("B*",$bin . "0"x$width);
+        my $b = unpack("H*",$h);
+        $b = substr($b,0,$hwidth);
+        print "$b\n";
+        last if ($i++ > $height-2);
+    }
+    # print "hhhh $height-$i = ",$height-$i,"\n";
+    print (("0"x$hwidth."\n")x($height-$i)) if ($height-$i > 0);
+}
+
+sub init {
+    $name = '';
+    $encoding = 0;
+    @bitmap= ();
+}
+
+# end