aboutsummaryrefslogtreecommitdiff
path: root/unibmptxt.pl
diff options
context:
space:
mode:
Diffstat (limited to 'unibmptxt.pl')
-rwxr-xr-xunibmptxt.pl875
1 files changed, 875 insertions, 0 deletions
diff --git a/unibmptxt.pl b/unibmptxt.pl
new file mode 100755
index 0000000..e20de65
--- /dev/null
+++ b/unibmptxt.pl
@@ -0,0 +1,875 @@
+#!/usr/bin/perl
+
+use warnings;
+no warnings 'utf8';
+use utf8;
+
+@block4x4s = split "", " ▗▖▄▝▐▞▟▘▚▌▙▀▜▛█";
+
+for($i = 0; $i < 95; $i++) {
+ <DATA>; # skip comment
+ for($j = 0; $j < 6; $j++) {
+ my $row = <DATA>;
+ chomp($row);
+ $row =~ s/X/1/g;
+ $row =~ s/\./0/g;
+ #warn @s;
+ $font[$i + 32][$j] = $row;
+ }
+ <DATA>; # skip blank
+}
+
+if(!@ARGV) {
+ @ARGV = (
+ " !\"#\$%&'()*+,-./",
+ "0123456789:;<=>?",
+ "\@ABCDEFGHIJKLMNO",
+ "PQRSTUVWXYZ[\\]^_",
+ "\`abcdefghijklmno",
+ "pqrstuvwxyz{|}~");
+}
+
+for $input (@ARGV) {
+ my @lines = ();
+ for(split "", $input) {
+ my $o = ord($_);
+ next if $o < 32 || $o > 126;
+ for(0..5) {
+ $lines[$_] .= $font[$o][$_];
+ }
+ }
+
+# always want an even number of columns
+ if(length($lines[0]) % 1) {
+ $lines[$_] .= "0" for 0..5;
+ }
+
+#print "$_\n" for @lines;
+
+ my @output = ();
+ for($y = 0; $y < 6; $y += 2) {
+ my $out = "";
+ for($x = 0; $x < length($lines[0]); $x += 2) {
+ my $index = 0;
+ $index |= 8 if substr($lines[$y], $x, 1) eq '1';
+ $index |= 4 if substr($lines[$y], $x + 1, 1) eq '1';
+ $index |= 2 if substr($lines[$y + 1], $x, 1) eq '1';
+ $index |= 1 if substr($lines[$y + 1], $x + 1, 1) eq '1';
+ $out .= $block4x4s[$index];
+ }
+ push @output, $out;
+ }
+
+ print "$_\n" for @output;
+}
+
+=for reference
+# __DATA__ section originally made thus:
+open my $f, "</home/urchlay/5x7.bdf" or die $!;
+
+$in_bitmap = 0;
+@bitmap = ();
+while(<$f>) {
+ chomp;
+ if(/^ENCODING\s+(\d+)/) {
+ $encoding = $1;
+ next;
+ }
+
+ if($in_bitmap) {
+ if(/^ENDCHAR/) {
+ $in_bitmap = 0;
+ $bitmaps{$encoding} = [ @bitmap ];
+ } else {
+ push @bitmap, $_;
+ #warn "encoding $encoding, byte $_";
+ }
+ } else {
+ if(/^BITMAP/) {
+ $in_bitmap = 1;
+ @bitmap = ();
+ }
+ }
+}
+
+## for(sort { $a <=> $b } keys %bitmaps) {
+## print $_ . " => " . join(" ", @{$bitmaps{$_}}) . "\n";
+## }
+
+for($i = 32; $i < 127; $i++) {
+ print "# $i " . chr($i) . "\n";
+ for(@{$bitmaps{$i}}) {
+ my $byte = hex($_);
+ my $bin = sprintf("%08b", $byte);
+ $bin =~ s/000$//;
+ $bin =~ s/0/./g;
+ $bin =~ s/1/X/g;
+ print $bin . "\n";
+ }
+ print "\n";
+}
+=cut
+
+# This stuff was taken from 5x7.bdf, but hand-edited to make it 6 rows
+# high, proportional, and fix some of the uglier glyphs.
+__DATA__
+# 32
+...
+...
+...
+...
+...
+...
+
+# 33 !
+X.
+X.
+X.
+..
+X.
+..
+
+# 34 "
+X.X.
+X.X.
+....
+....
+....
+....
+
+# 35 #
+.X.X..
+XXXXX.
+.X.X..
+XXXXX.
+.X.X..
+......
+
+# 36 $
+.XXXX.
+X.X...
+.XXX..
+..X.X.
+XXXX..
+......
+
+# 37 %
+.....
+X..X.
+..X..
+.X...
+X..X.
+.....
+
+# 38 &
+.X...
+X.X..
+.X...
+X.X..
+.X.X.
+.....
+
+# 39 '
+X.
+X.
+..
+..
+..
+..
+
+# 40 (
+.X.
+X..
+X..
+X..
+.X.
+...
+
+# 41 )
+X..
+.X.
+.X.
+.X.
+X..
+...
+
+# 42 *
+......
+X.X.X.
+.XXX..
+X.X.X.
+......
+......
+
+# 43 +
+....
+.X..
+XXX.
+.X..
+....
+....
+
+# 44 ,
+...
+...
+...
+...
+.X.
+X..
+
+# 45 -
+....
+....
+XXX.
+....
+....
+....
+
+# 46 .
+..
+..
+..
+..
+X.
+..
+
+# 47 /
+.....
+...X.
+..X..
+.X...
+X....
+.....
+
+# 48 0
+.XX..
+X..X.
+X.XX.
+X..X.
+.XX..
+.....
+
+# 49 1
+.X..
+XX..
+.X..
+.X..
+XXX.
+....
+
+# 50 2
+.XX..
+X..X.
+..X..
+.X...
+XXXX.
+.....
+
+# 51 3
+.XX..
+X..X.
+. X..
+X..X.
+.XX..
+.....
+
+# 52 4
+..X..
+.XX..
+X.X..
+XXXX.
+..X..
+.....
+
+# 53 5
+XXXX.
+X....
+XXX..
+...X.
+XXX..
+.....
+
+# 54 6
+.XX..
+X....
+XXX..
+X..X.
+.XX..
+.....
+
+# 55 7
+XXXX.
+...X.
+..X..
+.X...
+.X...
+.....
+
+# 56 8
+.XX..
+X..X.
+.XX..
+X..X.
+.XX..
+.....
+
+# 57 9
+.XX..
+X..X.
+.XXX.
+...X.
+.XX..
+.....
+
+# 58 :
+..
+X.
+..
+X.
+..
+..
+
+# 59 ;
+...
+.X.
+...
+.X.
+X..
+...
+
+# 60 <
+..X.
+.X..
+X...
+.X..
+..X.
+....
+
+# 61 =
+....
+XXX.
+....
+XXX.
+....
+....
+
+# 62 >
+X...
+.X..
+..X.
+.X..
+X...
+....
+
+# 63 ?
+.XX..
+X..X.
+..X..
+.....
+..X..
+.....
+
+# 64 @
+.XX..
+X..X.
+X.XX.
+X....
+.XX..
+.....
+
+# 65 A
+.XX..
+X..X.
+XXXX.
+X..X.
+X..X.
+.....
+
+# 66 B
+XXX..
+X..X.
+XXX..
+X..X.
+XXX..
+.....
+
+# 67 C
+.XX..
+X..X.
+X....
+X..X.
+.XX..
+.....
+
+# 68 D
+XXX..
+X..X.
+X..X.
+X..X.
+XXX..
+.....
+
+# 69 E
+XXXX.
+X....
+XXX..
+X....
+XXXX.
+.....
+
+# 70 F
+XXXX.
+X....
+XXX..
+X....
+X....
+.....
+
+# 71 G
+.XXX.
+X....
+X.XX.
+X..X.
+.XXX.
+.....
+
+# 72 H
+X..X.
+X..X.
+XXXX.
+X..X.
+X..X.
+.....
+
+# 73 I
+XXX.
+.X..
+.X..
+.X..
+XXX.
+....
+
+# 74 J
+...X.
+...X.
+...X.
+X..X.
+.XX..
+.....
+
+# 75 K
+X..X.
+X.X..
+XX...
+X.X..
+X..X.
+.....
+
+# 76 L
+X....
+X....
+X....
+X....
+XXXX.
+.....
+
+# 77 M
+X...X.
+XX.XX.
+X.X.X.
+X.X.X.
+X...X.
+......
+
+# 78 N
+X..X.
+XX.X.
+X.XX.
+X.XX.
+X..X.
+.....
+
+# 79 O
+.XX..
+X..X.
+X..X.
+X..X.
+.XX..
+.....
+
+# 80 P
+XXX..
+X..X.
+XXX..
+X....
+X....
+.....
+
+# 81 Q
+.XX..
+X..X.
+X..X.
+X..X.
+.XX..
+..XX.
+
+# 82 R
+XXX..
+X..X.
+XXX..
+X.X..
+X..X.
+.....
+
+# 83 S
+.XXX.
+X....
+.XX..
+...X.
+XXX..
+.....
+
+# 84 T
+XXXXX.
+..X...
+..X...
+..X...
+..X...
+......
+
+# 85 U
+X..X.
+X..X.
+X..X.
+X..X.
+.XX..
+.....
+
+# 86 V
+X...X.
+X...X.
+X...X.
+.X.X..
+..X...
+......
+
+# 87 W
+X...X.
+X...X.
+X.X.X.
+XX.XX.
+X...X.
+......
+
+# 88 X
+X..X.
+X..X.
+.XX..
+X..X.
+X..X.
+.....
+
+# 89 Y
+X...X.
+X...X.
+.XXX..
+..X...
+..X...
+......
+
+# 90 Z
+XXXX.
+...X.
+.XX..
+X....
+XXXX.
+.....
+
+# 91 [
+XX.
+X..
+X..
+X..
+XX.
+...
+
+# 92 \
+.....
+X....
+.X...
+..X..
+...X.
+.....
+
+# 93 ]
+XX.
+.X.
+.X.
+.X.
+XX.
+....
+
+# 94 ^
+.X..
+X.X.
+....
+....
+....
+....
+
+# 95 _
+.....
+.....
+.....
+.....
+XXXX.
+.....
+
+# 96 `
+X..
+.X.
+...
+...
+...
+...
+
+# 97 a
+.....
+.....
+.XXX.
+X..X.
+.XXX.
+.....
+
+# 98 b
+X....
+X....
+XXX..
+X..X.
+XXX..
+.....
+
+# 99 c
+....
+....
+.XX.
+X...
+.XX.
+....
+
+# 100 d
+...X.
+...X.
+.XXX.
+X..X.
+.XXX.
+.....
+
+# 101 e
+.....
+.XX..
+X..X.
+X.X..
+.XXX.
+.....
+
+# 102 f
+..XX.
+.X...
+XXX..
+.X...
+.X...
+.....
+
+# 103 g
+.....
+.XXX.
+X..X.
+.XXX.
+...X.
+.XX..
+
+# 104 h
+X....
+X....
+XXX..
+X..X.
+X..X.
+.....
+
+# 105 i
+.X..
+....
+XX..
+.X..
+XXX.
+....
+
+# 106 j
+..X.
+....
+..X.
+..X.
+X.X.
+.X..
+
+# 107 k
+X...
+X...
+X.X.
+XX..
+X.X.
+....
+
+# 108 l
+XX..
+.X..
+.X..
+.X..
+XXX.
+....
+
+# 109 m
+......
+......
+X.XX..
+XXXXX.
+X.X.X.
+......
+
+# 110 n
+.....
+.....
+XXX..
+X..X.
+X..X.
+.....
+
+# 111 o
+.....
+.....
+.XX..
+X..X.
+.XX..
+.....
+
+# 112 p
+.....
+.....
+XXX..
+X..X.
+XXX..
+X....
+
+# 113 q
+.....
+.....
+.XXX.
+X..X.
+.XXX.
+...X.
+
+# 114 r
+.....
+.....
+XXX..
+X..X.
+X....
+.....
+
+# 115 s
+.....
+.XXX.
+XX...
+..XX.
+XXX..
+.....
+
+# 116 t
+.X...
+.X...
+XXX..
+.X...
+..XX.
+.....
+
+# 117 u
+.....
+.....
+X..X.
+X..X.
+.XXX.
+.....
+
+# 118 v
+....
+....
+X.X.
+X.X.
+.X..
+....
+
+# 119 w
+......
+......
+X...X.
+X.X.X.
+XX.XX.
+......
+
+# 120 x
+.....
+.....
+X..X.
+.XX..
+X..X.
+.....
+
+# 121 y
+.....
+.....
+X..X.
+.X.X.
+..X..
+.X...
+
+# 122 z
+.....
+XXXX.
+..X..
+.X...
+XXXX.
+.....
+
+# 123 {
+..X.
+.X..
+XX..
+.X..
+..X.
+....
+
+# 124 |
+X.
+X.
+X.
+X.
+X.
+..
+
+# 125 }
+X...
+.X..
+.XX.
+.X..
+X...
+....
+
+# 126 ~
+.X.X.
+X.X..
+.....
+.....
+.....
+.....
+