From 64db2eff61299b7c1dcdd60a3ab32cc53573ae97 Mon Sep 17 00:00:00 2001 From: Simon Owen Date: Fri, 5 Sep 2008 10:51:32 +0000 Subject: [PATCH] - Added lower-case characters to terminal font - Added font image (PNG) for easy font editing, and script to convert to font.bin needed by emulator --- font.bin | Bin 512 -> 768 bytes font.pl | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ font.png | Bin 0 -> 699 bytes 3 files changed, 64 insertions(+) create mode 100644 font.pl create mode 100644 font.png diff --git a/font.bin b/font.bin index aead2f7bf99d1d1db3f13cecec7b11a2bce81fed..e632f9e073dde28d3ef24de6fe41cb7414bf6a06 100644 GIT binary patch literal 768 zcmYL{A(!JY41@&&0ty5U1R5+b3@9)#Ffa%x2ryVs5Ky>aVSs=9ePiEyr#e-}8fzpu zX470|ZZS?AW9Jvm^O^qKZr5k^@OoG{&(Myii7oRWa|w7WUUI9(`S{mvRdeyeq!zdedctNKm#-QETLSZlA>m1sx>N@d#oy8;$gyf^^q*|O#{O|$ z=TQwV)~)`uCSI+d_7Wc;p2Q#wthovwBVI=T3{fVX!5=OPH!R|#N>@CJH|By~9`};X z)cs<1ud-Wx&O4a@ea=Q8ExBf+JyPA^Oj((JGMGG6*umRZxHWfSCY~n0GRYlz?#niG zj-BBhzx1zN?VF7O;FVuBaGw4LW&-FbAC#G6D^6*ZG;-*dt3?d1VE- zVFC=L+t|F_RA1?*hqobH6XW?&){!$tYnOZ`ub>^OcPB5jWM3)sUWtCUOT{f?%CiHW zRjK>4!Dx?uH0qa#5rHd0i}BVP@1;XrQ@^n<^}&qthjf`_S)i(Y_MeCuU-$RE2FN7_ z;;(n{BF?^vPe(k7kuZJDRsK5jZN8sF6r?lx(-irgD6~bbD__K$bJ6_tTf72#eFAD0 L<~unHPU8kXjSZ*) diff --git a/font.pl b/font.pl new file mode 100644 index 0000000..8ab1a90 --- /dev/null +++ b/font.pl @@ -0,0 +1,64 @@ +#!/usr/bin/perl -w +# +# Convert PNG image to raw font binary for Apple 1 emulator +# +# Makes lots of assumptions about the input image! + +use Compress::Zlib; + +# Input image and output data file +my $input = 'font.png'; +my $output = 'font.bin'; + +# Our characters are 6 pixels wide +$chrw = 6; + + +# Slurp the entire PNG image +open INPUT, "<$input" and binmode INPUT or die "$input: $!\n"; +read INPUT, $data='', -s $input; +close INPUT; + +# Find and extract the image dimensions +$data =~ /IHDR(.{8})/s; +($w,$h) = unpack "N2", $1; + +# Extract and expand the compressed image data +($data) = $data =~ /IDAT(.*).{8}IEND/s; +$data = Compress::Zlib::uncompress($data); + +# Remove the type byte from the start of each line +$w_2 = $w/2; +$data =~ s/.(.{$w_2})/$1/sg; + +@data = (); + +# Unpack the pixel nibbles +foreach (unpack "C*", $data) { + push @data, $_>>4, $_&1; +} + + +open OUTPUT, ">$output" and binmode OUTPUT or die "$output: $!\n"; + +# Process all characters +foreach $chr (0..$w/$chrw-1) +{ + # Process the image line by line + foreach $y (0..$h-1) + { + # Locate the pixel data for the current character + my $x = $chr*$chrw + $w*$y; + my $b = 0; + + # Pack the 1bpp data into a single byte + foreach (@data[$x..$x+$chrw-1]) { + $b = ($b << 1) | $_; + } + + # Left-align within the byte and output it + print OUTPUT chr($b << (8-$chrw)); + } +} + +close OUTPUT; diff --git a/font.png b/font.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d54269800338ddbf0adf15feb6b8d1fa1e57a6 GIT binary patch literal 699 zcmeAS@N?(olHy`uVBq!ia0y~yU~&MmIarv1w`!(L+LhqcW&daK@7rvD zYtg6K3p<;C6^lC@S773n-ElL!MfxfKpGvQvoi1W4&G=6~UBV;N(Y=i2PfP0p(=(l! z++Xtwk~c9bUF(ebZ^L$<@3@OzgN|BPL(S#o%%NJ$^R751^+YiQ#%vX4>FQQXc3={j zp78BX0nZV&CmPmz4<#;&cpbCcIptuCy&!*LOOUvEuk<#pc!^y}HH=SqlAM$$XLxvJ zPg0WobX;ZAvdMnoGLvV%ler^u^6bnDCPyEIF!ZWi*m;wI^{o2G@-ORca<^+A)mWOO z7JR&5GxLNQA2=sOzq!@G_~M{KnupQaH+32LpK@Lu`yI73#W*8X;MbBPa||vq9bHf} z{gQpC$+UmTLQk1Ip0X~`Shk0$U}{IVx3ie!6 zDB<13vV--^hK~x#n;EN?Y*;?SPSV8liKf_hot36v+&Sm5eVvyS`0@3xl8sCrD$>E* zbkG0yt3Lnp=>JCv%YDiWC%#Pj8M?f?b9?`fTOw&wC*3`2*1U`@)4W%QX=mgwX5Y&` z7gq&Le6eiLt{amb@ALfgdBcC`zjVCSg%7pA>P+{p&s+PEQOrwPxGP!pA1D!dy85}S Ib4q9e0NFJhvH$=8 literal 0 HcmV?d00001