Mercurial > hg > Applications > 14x14ja
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