Coder Social home page Coder Social logo

hoard-of-bitfonts's Introduction

Bitmap fonts for humans

This repository contains bitmapped fonts from disused operating systems and graphical user interfaces.

As operating systems and GUIs have moved on to scalable vector fonts, the bitmap fonts that dominated the 1980s and 1990s languish away in non-obvious and often binary formats that are rapidly falling into obscurity.

The main purpose of this repository is to liberate these fonts from their binary shackles, preserving the ancient art of monochrome bitmap typography for human appreciation.

The fonts in this repository are stored in the human-friendly text-based YAFF format. As such, the easiest way to view them is to open the text files directly. Alternatively, you can use monobit to render them to images or convert them to font formats supported by current operating systems. You can also see the fonts as images here.

hoard-of-bitfonts's People

Contributors

codeman38 avatar grantmestrength avatar ksherlock avatar mecrisp avatar oitzujoey avatar robcfg avatar robhagemans avatar slashnetua avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hoard-of-bitfonts's Issues

Off-by-two (rows) error in msx_kr.draw

There seems to be an off-by-two (rows) error in msx_kr.draw. This is most obvious looking at entry 0d which appears to be a capital X, but the last two rows ended up in entry 0e. I am pretty sure this error applies to every single character in the font.

The TRS-80 Model 100 font appears to be missing

Am I correct that the TRS-80 Model 100 font is missing? Or is it filed under the name of one of the similar, but less popular, systems? ("Kyocera Kyotronic 85", "NEC 8201", "Olivetti M10", and possibly others.)

If it is missing, are you accepting submissions? And would you want the different variants that existed?

There were at least three variants for the US Model 100:

  1. original 5x7 (in 6x8 bounding box),
  2. new 5x7, and
  3. a 7x9 (in 8x10 box) font that was used only with the 80-column monitor adapter called, confusingly, the "VT-100").

Possibly other related machines would be filed together:

  1. I believe the Tandy 102 and 200 had the same font as the Model 100, but I do not know for certain.
  2. Other machines with essentially the same internals but different branding had similar fonts, but perhaps should be filed under their own names. For example, the Kyocera Kyotronic 85 had Japanese in the "high ASCII" region (high bit set).

Here is an image of the font from a Model 100 emulated in a web browser at http://bitchin100.com/CloudT/

Output from fori=32to255:?chr$(i);:next

I do not know if that image is pixel accurate, but it should be. The machines did not have a character generator, so the pixels had to be drawn by the ROM.

No Issue - How to donate a font?

Hi

(Unsure how to contact you directly coz Im too dumb to work the github gui. So apologies on this)

Just wanting to know how I can donate the font to Laser200 / Laser310 / VZ200 / VZ300 8-bit computer font?
Read your article on hack-a-day website on 5th Feb.

Cheers,
Dave

These are not Windows fonts.

Fonts like https://github.com/robhagemans/hoard-of-bitfonts/blob/174f3384cbdf72d77b621944bd69f6623d09ee79/windows/windows-3.1/Terminal_EGA80_cp850.yaff are not Windows fonts, yet they are categorized under 'Windows'.

They're at best DOS fonts, but actually they're stored in BIOS ROM, and optionally overridden by code page files in DOS. Windows, up to 3.11, was an 'application' that runs on DOS, and iirc, doesn't even show the DOS fonts graphically.

Fonts stored in the BIOS were most often (in the west at least) IBM fonts.

TRS-80 pointer to Kyotronic

Since few people know the name "Kyocera Kyotronic-85", but the "TRS-80 Model 100" is well known, it would be good if trs-80/README.md had a pointer to the kyotronic.yaff file. It could say something like,

Note that font used in the TRS-80 Model 100 is the same as the kyotronic-85 font. Likewise, see the kyotronic directory for the font used in the Tandy 200 and Tandy 102 and the TRS-80 Disk/Video Interface 40-column and 80-column font.

Additionally, it would be a nice touch if the files would appear to also be in the trs-80 directory. GitHub handles symlinks, so it should be as simple as:

cd trs-80
ln  -s  ../kyotronic/kyotronic-85.yaff  trs80-model100.yaff
ln  -s  ../kyotronic/tandy-200.yaff 
ln  -s  ../kyotronic/trs80-dvi-7x8.yaff 
ln  -s  ../kyotronic/trs80-dvi-8x8.yaff 
ln  -s  tandy-200.yaff  tandy-102.yaff
git add *
git commit -m "TRS-80 portables are variants of the Kyocera Kyotronic-85"

HP 4195A 8x13 font

This font is extracted from a ROM dump, Rev 2.00 (datecode 03/1989), of an HP 4195A network/spectrum analyzer.

Characters 0x20-0x7F are essentially ASCII. 00-0x1F are special characters; many are simply empty space.
The ROM uses a lookup table which maps all these unused characters to the same "space" bitmap.
In addition, they are drawn LSB-to-MSB which made it necessary to mirror the whole font.

hp4195_8x13_remapped

hp4195_8x13_remapped.yaff.txt

dec/type340.yaff - missing K

This font seems to have lost its K. Missing in both the yaff and png, so maybe a glitch in the source that it came from.

(no biggie for me, just browsing and probably won't use this font... just letting you know)

HP 1660, 16500 etc logic analyzer font

Hi,
if you're interested, attached are two bitmap fonts used on a very large familiy of HP logic analyzers of the 90's. They run X11 and use these fonts directly, which one would need to copy at the 'server' end when using a remote X session to control these machines.

HP_165.zip

Datapoint 8600 ROM font

I have a special addition to the collection, the ROM font of a Datapoint 8600 machine. I once took screenshots of it at the museum of computer history in Visselhövede, Germany, and after the machine finally broke down in 2022, I kindly asked the museum crew who disassembled the machine to look for possible repairs to read out the contents of its ROM chips. These contain an 8x12 bitmap font compatible with ASCII, but with the lowercase characters missing. If you think it is suitable for inclusion on your collection, I am happy to create a pull request.

08:	--------
	--------
	--------
	---##---
	--#-----
	-#######
	--#-----
	---##---
	--------
	--------
	--------
	--------

18:	--------
	--------
	--------
	----##--
	------#-
	-#######
	------#-
	----##--
	--------
	--------
	--------
	--------

20:	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------

21:	--------
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	--------
	----#---
	----#---
	--------
	--------

22:	--------
	---#--#-
	---#--#-
	---#--#-
	---#--#-
	--------
	--------
	--------
	--------
	--------
	--------
	--------

23:	--------
	--------
	---#--#-
	---#--#-
	--######
	---#--#-
	---#--#-
	--######
	---#--#-
	---#--#-
	--------
	--------

24:	--------
	----#---
	--#####-
	-#--#--#
	-#--#---
	--#####-
	----#--#
	-#--#--#
	--#####-
	----#---
	--------
	--------

25:	--------
	--#----#
	-#-#---#
	--#---#-
	-----#--
	----#---
	---#----
	--#---#-
	-#---#-#
	-#----#-
	--------
	--------

26:	--------
	---##---
	--#--#--
	--#--#--
	--#-#---
	---#----
	--#-#--#
	-#---##-
	-#---#--
	--###-##
	--------
	--------

27:	--------
	------#-
	-----##-
	----##--
	---##---
	---#----
	--------
	--------
	--------
	--------
	--------
	--------

28:	--------
	----###-
	---#----
	--#-----
	--#-----
	--#-----
	--#-----
	--#-----
	---#----
	----###-
	--------
	--------

29:	--------
	--###---
	-----#--
	------#-
	------#-
	------#-
	------#-
	------#-
	-----#--
	--###---
	--------
	--------

2A:	--------
	--------
	----#---
	--#-#-#-
	---###--
	-#######
	---###--
	--#-#-#-
	----#---
	--------
	--------
	--------

2B:	--------
	--------
	----#---
	----#---
	----#---
	-#######
	----#---
	----#---
	----#---
	--------
	--------
	--------

2C:	--------
	--------
	--------
	--------
	--------
	--------
	----##--
	----##--
	-----#--
	----#---
	--------
	--------

2D:	--------
	--------
	--------
	--------
	--------
	--------
	-#######
	--------
	--------
	--------
	--------
	--------

2E:	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	----##--
	----##--
	--------
	--------

2F:	--------
	-------#
	-------#
	------#-
	-----#--
	----#---
	---#----
	--#-----
	-#------
	-#------
	--------
	--------

30:	--------
	---####-
	--#----#
	--#---##
	--#--###
	--#-##-#
	--###--#
	--##---#
	--#----#
	---####-
	--------
	--------

31:	--------
	----#---
	---##---
	--#-#---
	----#---
	----#---
	----#---
	----#---
	----#---
	--#####-
	--------
	--------

32:	--------
	---####-
	--#----#
	--#----#
	-------#
	------#-
	-----#--
	----#---
	---#----
	--######
	--------
	--------

33:	--------
	---####-
	--#----#
	-------#
	-------#
	----###-
	-------#
	-------#
	--#----#
	---####-
	--------
	--------

34:	--------
	------#-
	-----##-
	----#-#-
	---#--#-
	--#---#-
	--######
	------#-
	------#-
	------#-
	--------
	--------

35:	--------
	--######
	--#-----
	--#-----
	--#-----
	---####-
	-------#
	-------#
	--#----#
	---####-
	--------
	--------

36:	--------
	---####-
	--#----#
	--#-----
	--#-----
	--#####-
	--#----#
	--#----#
	--#----#
	---####-
	--------
	--------

37:	--------
	--######
	--#----#
	-------#
	-------#
	------#-
	-----#--
	----#---
	----#---
	----#---
	--------
	--------

38:	--------
	---####-
	--#----#
	--#----#
	--#----#
	---####-
	--#----#
	--#----#
	--#----#
	---####-
	--------
	--------

39:	--------
	---####-
	--#----#
	--#----#
	--#----#
	---#####
	-------#
	-------#
	--#----#
	---####-
	--------
	--------

3A:	--------
	--------
	----##--
	----##--
	--------
	--------
	----##--
	----##--
	--------
	--------
	--------
	--------

3B:	--------
	--------
	----##--
	----##--
	--------
	--------
	----##--
	----##--
	-----#--
	----#---
	--------
	--------

3C:	--------
	------#-
	-----#--
	----#---
	---#----
	--#-----
	---#----
	----#---
	-----#--
	------#-
	--------
	--------

3D:	--------
	--------
	--------
	--------
	--######
	--------
	--------
	--######
	--------
	--------
	--------
	--------

3E:	--------
	--#-----
	---#----
	----#---
	-----#--
	------#-
	-----#--
	----#---
	---#----
	--#-----
	--------
	--------

3F:	--------
	---####-
	--#----#
	--#----#
	-------#
	-----##-
	----#---
	----#---
	--------
	----#---
	--------
	--------

40:	--------
	--#####-
	-#-----#
	-#---###
	-#--#--#
	-#--#--#
	-#---###
	-#------
	-#------
	--######
	--------
	--------

5B:	--------
	--#####-
	--#-----
	--#-----
	--#-----
	--#-----
	--#-----
	--#-----
	--#-----
	--#####-
	--------
	--------

5C:	--------
	-#------
	-#------
	--#-----
	---#----
	----#---
	-----#--
	------#-
	-------#
	-------#
	--------
	--------

5D:	--------
	--#####-
	------#-
	------#-
	------#-
	------#-
	------#-
	------#-
	------#-
	--#####-
	--------
	--------

5E:	--------
	--------
	--------
	--------
	--------
	--------
	----#---
	---#-#--
	--#---#-
	-#-----#
	--------
	--------

5F:	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	-#######
	--------
	--------

60:	--------
	---#----
	---##---
	----##--
	-----##-
	------#-
	--------
	--------
	--------
	--------
	--------
	--------

7B:	--------
	----###-
	---#----
	---#----
	---#----
	--#-----
	---#----
	---#----
	---#----
	----###-
	--------
	--------

7C:	--------
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	--------
	--------

7D:	--------
	--###---
	-----#--
	-----#--
	-----#--
	------#-
	-----#--
	-----#--
	-----#--
	--###---
	--------
	--------

7E:	--------
	--------
	--------
	--------
	--------
	--##----
	-#--#--#
	-----##-
	--------
	--------
	--------
	--------

7F:	--------
	----#---
	----#---
	----#---
	-#--#--#
	-##-#-##
	-#--#--#
	----#---
	----#---
	----#---
	--------
	--------

41:	--------
	--#####-
	-#-----#
	-#-----#
	-#-----#
	-#######
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--------
	--------

42:	--------
	-######-
	-#-----#
	-#-----#
	-#-----#
	-######-
	-#-----#
	-#-----#
	-#-----#
	-######-
	--------
	--------

43:	--------
	--#####-
	-#-----#
	-#------
	-#------
	-#------
	-#------
	-#------
	-#-----#
	--#####-
	--------
	--------

44:	--------
	-#####--
	-#----#-
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#----#-
	-#####--
	--------
	--------

45:	--------
	-#######
	-#------
	-#------
	-#------
	-######-
	-#------
	-#------
	-#------
	-#######
	--------
	--------

46:	--------
	-#######
	-#------
	-#------
	-#------
	-######-
	-#------
	-#------
	-#------
	-#------
	--------
	--------

47:	--------
	--#####-
	-#-----#
	-#------
	-#------
	-#---###
	-#-----#
	-#-----#
	-#-----#
	--#####-
	--------
	--------

48:	--------
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#######
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--------
	--------

49:	--------
	--#####-
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	--#####-
	--------
	--------

4A:	--------
	-----###
	------#-
	------#-
	------#-
	------#-
	------#-
	-#----#-
	-#----#-
	--####--
	--------
	--------

4B:	--------
	-#-----#
	-#----#-
	-#---#--
	-#--#---
	-#-#----
	-##-#---
	-#---#--
	-#----#-
	-#-----#
	--------
	--------

4C:	--------
	-#------
	-#------
	-#------
	-#------
	-#------
	-#------
	-#------
	-#------
	-#######
	--------
	--------

4D:	--------
	-#-----#
	-##---##
	-#-#-#-#
	-#--#--#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--------
	--------

4E:	--------
	-#-----#
	-##----#
	-##----#
	-#-#---#
	-#--#--#
	-#---#-#
	-#----##
	-#----##
	-#-----#
	--------
	--------

4F:	--------
	---###--
	--#---#-
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--#---#-
	---###--
	--------
	--------

50:	--------
	-######-
	-#-----#
	-#-----#
	-#-----#
	-######-
	-#------
	-#------
	-#------
	-#------
	--------
	--------

51:	--------
	--#####-
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#---#-#
	-#---#-#
	-#----#-
	--####-#
	--------
	--------

52:	--------
	-######-
	-#-----#
	-#-----#
	-#-----#
	-######-
	-#--#---
	-#---#--
	-#----#-
	-#-----#
	--------
	--------

53:	--------
	--#####-
	-#-----#
	-#------
	-#------
	--#####-
	-------#
	-------#
	-#-----#
	--#####-
	--------
	--------

54:	--------
	-#######
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	----#---
	--------
	--------

55:	--------
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--#####-
	--------
	--------

56:	--------
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	--#---#-
	---#-#--
	----#---
	--------
	--------

57:	--------
	-#-----#
	-#-----#
	-#-----#
	-#-----#
	-#--#--#
	-#--#--#
	-#-#-#-#
	-##---##
	-#-----#
	--------
	--------

58:	--------
	-#-----#
	-#-----#
	--#---#-
	---#-#--
	----#---
	---#-#--
	--#---#-
	-#-----#
	-#-----#
	--------
	--------

59:	--------
	-#-----#
	-#-----#
	--#---#-
	---#-#--
	----#---
	----#---
	----#---
	----#---
	----#---
	--------
	--------

5A:	--------
	-#######
	-------#
	------#-
	-----#--
	----#---
	---#----
	--#-----
	-#------
	-#######
	--------
	--------

01:	--------
	--------
	--------
	------#-
	-----##-
	----###-
	---####-
	--#####-
	-######-
	#######-
	--------
	--------

02:	--------
	--------
	--------
	--------
	--------
	--------
	--------
	--------
	----####
	--------
	--------
	--------

The format of the bitmap data in the ROM image is a special snowflake and can be extracted with this Pascal source code:

{ -----------------------------------------------------------------------------

  A small tool to extract 8x12 bitmap fonts from
  Datapoint 8600 CP/RIM card ROMs

  Compile with the Freepascal Compiler: fpc datapoint-8x12.pas

  Usage: datapoint-8x12 905-008-1.bin Datapoint-8600.draw

----------------------------------------------------------------------------- }

{

This tool designed to extract the font data from the ROM contents of
a Datapoint 8600 machine. Font data is not directly mapped as a character
generator but is read by the "bios" of the machine and stored into the actual
character RAM area. The font is a 8x12 font, but only uppercase characters
were available, with the lowercase characters later loaded by the operating
system (RMS 2.8.J).

The font data is organised as nine bytes for each charater, with the MSB
of these data bytes always 0 for inter-character spacing. Therefore, data exists
for 7x9 bitmaps. Three empty lines are added when loading this font, one line on
top and two lines at the bottom as seen when comparing with the cursor in
the screenshot of the date/time prompt which has all twelve lines set.

Bytes with MSB set denote the place in the character table (when masked with $7F).
Then nine bytes of graphics data follow.

When no place-in-the-character-table byte appears, continue with the next place.

Note that the shape of "," on the screenshot with lowercase letters differs
from the data in the ROM, so this might be a completely different font for which
unfortunately no further data exists.

}

uses sysutils;

function byte2hex(zahl : byte) : string;
const
    hexa : array [0..15] of char = '0123456789ABCDEF';
begin
  byte2hex := hexa[zahl shr 4] + hexa[zahl and 15];
end;

function byte2str(c : byte) : string;
var h : string = '';
var i : integer;
begin
  for i := 7 downto 0 do
  begin
    if (c shr i) and 1 = 1 then h := h + '#' else h := h + '-';
  end;
  byte2str := h;
end;

var binary : file of byte;
    fontfile : text;
    i, k : integer;
    character : array[1..9] of byte;
    asciioffset : integer = 0;

begin
  assign(binary, paramstr(1));
  reset(binary);

  assign(fontfile, paramstr(2));
  rewrite(fontfile);

  seek(binary, $10AF);

  for k := 0 to 73 do
  begin
    read(binary, character[1]);

    if (character[1] and $80) = $80 then
    begin
      asciioffset := character[1] and $7F;
      read(binary, character[1]);
    end;

    for i := 2 to 9 do read(binary, character[i]);

    write(fontfile, byte2hex(asciioffset), ':');

                       writeln(fontfile, #9, byte2str(0));
    for i := 1 to 9 do writeln(fontfile, #9, byte2str(character[i]));
                       writeln(fontfile, #9, byte2str(0));
                       writeln(fontfile, #9, byte2str(0));

    writeln(fontfile);
    inc(asciioffset);
  end;

  close(fontfile);
  close(binary);
end.

yaff format

Could you please write a few words about the yaff format in the README?

Ciarcia's "ZAP" computer font (CRT8002)

So, I was reading through Steve Ciarcia's "Build Your Own Z80 Computer" from 1981 and came across a datasheet in Appendix C9 which has a font that I do not believe is in the hoard, yet.

ZAP font (crt8002)

The 7x11 font used in the ZAP 80 computer was generated by a chip called the Standard Microsystems Corporation's CRT 8002 Video Display Attributes Controller / Video Generator.

When I looked up the CRT8002 online, I found that the chip was available in a few variants: 5x7, ASCII, thin, and Katakana as can be seen here: https://rocelec.widen.net/view/pdf/r6gtaq06b2/SMSCS01026-1.pdf.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.