/make_font.pl
use strict;
use v5.10;
chdir 'assets/font';
my $font = shift;
die "PNG2BDF not defined" unless defined $ENV{'PNG2BDF'};
die "BDFCONV not defined" unless defined $ENV{'BDFCONV'};
die "$font not found" unless -d $font;
my $l = length("$font/char_");
my @glyphs = sort {
my $aa = substr($a, $l);
my $bb = substr($b, $l);
$aa <=> $bb
} <$font/char_*.png>;
my $last_glyph_no = -1;
my $range_first;
my (@arg, @ranges);
for my $g (@glyphs) {
my $glyph_no = int(substr($g, $l));
if (!$range_first) {
$range_first = $glyph_no;
}
if ($glyph_no != $last_glyph_no + 1) {
push @arg, '-e', $glyph_no;
if ($last_glyph_no != -1) {
if ($range_first == $last_glyph_no) {
push @ranges, "$range_first";
} else {
push @ranges, "$range_first-$last_glyph_no";
}
$range_first = $glyph_no;
}
}
push @arg, $g;
$last_glyph_no = $glyph_no;
}
push @ranges, "$range_first-$last_glyph_no";
my $ranges = join(',', @ranges);
say "$ENV{PNG2BDF} -o $font.bdf -f $font @arg";
system "$ENV{PNG2BDF} -o $font.bdf -f $font @arg";
say "$ENV{BDFCONV} -b 0 -f 1 -m $ranges -o $font.c -n $font $font.bdf";
system "$ENV{BDFCONV} -b 0 -f 1 -m $ranges -o $font.c -n $font $font.bdf";