/make_font.pl
#!/usr/bin/env perl
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";