#!/usr/bin/perl -w use bytes; open $in, "font.dat" or die $!; my $junk; read($in, $junk, 0x2000); # skip to the font read($in, $X2000, 256); # ASCII 32-63 read($in, $X2100, 256); # ASCII 64-95 read($in, $X2200, 256); # ASCII 0-31 read($in, $X2300, 256); # ASCII 96=127 # ASCII 0 is a blank glyph substr($X2200, 0, 8) = "\x00" x 8; $font = $X2200 . $X2000 . $X2100 . $X2300; while() { chomp; if(/^(\d+)$/) { $offset = $1 * 8; next; } elsif(/^[-#]+$/) { s/-/0/g; s/#/1/g; my $byte = eval "0b$_"; substr($font, $offset++, 1) = chr $byte; } } print $out $font; close $in; close $out; __DATA__ 96 -------- --##---- --##---- ---##--- -------- -------- -------- -------- 123 ----###- ---##--- ---##--- --##---- ---##--- ---##--- ----###- -------- 125 -###---- ---##--- ---##--- ----##-- ---##--- ---##--- -###---- -------- 126 -------- -###--## ##-##-## ##--###- -------- -------- -------- --------