/src/video/png2font.pl
#!/usr/bin/perl
# Input must be 128x128 B/W PNG
use Image::Magick;
use warnings;
use strict;

sub array_split {
    my $by = shift;
    my @out;
    for (my $i = 0; $i < @_; $i += $by) {
        push @out, [@_[$i..($i + $by - 1)]];
    }
    return @out;
}

my $image = Image::Magick->new;
$image->Read($ARGV[0]);

print qq{pub static FONT: [[u8; 8]; 256] = [\n};
for my $y (0..15) {
    for my $x (0..15) {
        my @pixels = map {
            $_->[0];
        } array_split(4, $image->GetPixels(x => $x * 8, y => $y * 8, width => 8, height => 8));
        my @rows = array_split(8, @pixels);
        print qq{    [\n};
        for my $r (@rows) {
            my @pv = map { $_ > 0 ? '1' : '0' } @$r;
            print '        0b', @pv, ",\n";
        }
        print qq{\n    ],\n};
    }
}
print qq{];\n};