diff options
Diffstat (limited to 'unibmptxt.pl')
-rwxr-xr-x | unibmptxt.pl | 875 |
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.. +..... +..... +..... +..... + |