mirror of https://github.com/KLayout/klayout.git
79 lines
1.6 KiB
Perl
Executable File
79 lines
1.6 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
|
|
my $name;
|
|
while ($name = shift) {
|
|
|
|
my $num;
|
|
|
|
my $ch = 32;
|
|
my @EDG;
|
|
my @INFO;
|
|
|
|
open JHF, "<$name.jhf" or die "cannot open $name.jhf";
|
|
my $yymax = 0; my $yymin = 0;
|
|
|
|
LP: while (read (JHF,$num,5) > 0) {
|
|
my $n;
|
|
if (read (JHF,$n,3) < 3) {
|
|
last LP;
|
|
}
|
|
my $starti = @EDG;
|
|
my $c1;
|
|
my $c2;
|
|
read (JHF,$c1,1);
|
|
read (JHF,$c2,1);
|
|
my $x1 = ord ($c1);
|
|
my $x2 = ord ($c2);
|
|
my $w = $x2-$x1;
|
|
my $ymin = 0;
|
|
my $ymax = 0;
|
|
my $last = undef;
|
|
while ($n > 1) {
|
|
read(JHF,$c1,1);
|
|
while (ord ($c1) == 13 || ord ($c1) == 10) {
|
|
read(JHF,$c1,1);
|
|
}
|
|
read(JHF,$c2,1);
|
|
my $x = ord($c1)-$x1;
|
|
my $y = ord("Z")+1-ord($c2);
|
|
if ($y < $ymin) { $ymin = $y }
|
|
if ($y > $ymax) { $ymax = $y }
|
|
if ($c1 eq " ") {
|
|
$last = undef;
|
|
} else {
|
|
if (defined($last)) {
|
|
push @EDG, "$last, $x, $y";
|
|
}
|
|
$last = "$x, $y";
|
|
}
|
|
$n--;
|
|
}
|
|
my $endi = @EDG;
|
|
push @INFO, [ $starti, $endi, $w, $ymin, $ymax ];
|
|
read(JHF,$c1,1);
|
|
if (ord ($c1) == 13) {
|
|
read(JHF,$c1,1);
|
|
}
|
|
|
|
if ($ymin < $yymin) { $yymin = $ymin }
|
|
if ($ymax > $yymax) { $yymax = $ymax }
|
|
|
|
$ch++;
|
|
}
|
|
|
|
close JHF;
|
|
|
|
print "short ${name}_edges [][4] = {\n { ", join(" },\n { ", @EDG), " }\n};\n\n";
|
|
|
|
print "HersheyCharInfo ${name}_info [] = {\n HersheyCharInfo (";
|
|
my @INFOS = map { join (", ", @$_) } @INFO;
|
|
print join ("),\n HersheyCharInfo (", @INFOS);
|
|
print ")\n};\n";
|
|
|
|
print "\nstatic HersheyFont $name (${name}_edges, ${name}_info, 32, ",$ch,", ", $yymax, ", ", $yymin, ");\n\n";
|
|
|
|
}
|
|
|