Browse Prior Art Database

Matrix Font Compression Algorithm

IP.com Disclosure Number: IPCOM000047976D
Original Publication Date: 1983-Dec-01
Included in the Prior Art Database: 2005-Feb-08
Document File: 2 page(s) / 14K

Publishing Venue

IBM

Related People

Sweet, MD: AUTHOR

Abstract

In dot printing devices as in wire matrix printers and more generally in an all-points-addressable character representing environment, the font compression algorithm is tailored to the decompressing microprocessor in such a way that no compressed data crosses the inherent data boundary of that microprocessor. Thus, the compressed data containing the permanent font representation is decompressed most efficiently on the fly at burst rate and the memory requirements for the matrix font storage are reduced. The algorithm supports a character cell up to 64 X 64 option points. The row and column position of each of the dots in the character cell are encoded, with the assumption that the row information is normally implied.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 52% of the total text.

Page 1 of 2

Matrix Font Compression Algorithm

In dot printing devices as in wire matrix printers and more generally in an all-points-addressable character representing environment, the font compression algorithm is tailored to the decompressing microprocessor in such a way that no compressed data crosses the inherent data boundary of that microprocessor. Thus, the compressed data containing the permanent font representation is decompressed most efficiently on the fly at burst rate and the memory requirements for the matrix font storage are reduced. The algorithm supports a character cell up to 64 X 64 option points. The row and column position of each of the dots in the character cell are encoded, with the assumption that the row information is normally implied. Then only six bits are required to define the dot location, and the other two bits in the byte can be used for control information. The compressed data defining a character is a string of four types of data bytes, the two most significant bits of each byte identifying the data type as shown in the following table: Type Bits: 7 6 5 4 3 2 1 0 0 0 0 - Column - Define dot in even row 1 0 1 - Column - Define dot in odd row 2 1 0 - Row - Redefine row pointer 3 1 1 - Coded - Control To compress a character, the bottommost dot is encoded first. If the row this dot is on is not the character base line, a type 2 data byte is used to set the row pointer. All the dots on these rows are encoded, one byte per dot, using type 0 or type 1 bytes depending on the row. After all dots on the bottommost row are encoded, the dots on the next row up are encoded, one byte per dot. Since this row is by definition the type opposite the last one, change between even and odd, the row pointer can be kept by decrementing it each time bit 6 of the dot placement bytes toggles. Characters containing gaps, e.g. small i, require another type 2 byte in the data stream to reposition the row pointer past the gap in the character. When all the dots in a character have been defined, a type 3 control byte is used to denote the end of character. At the beginning of the data set, a lookup table is located which contains the starting address of the data within a two-byte address for each character. At the address pointed to by the table, there is a control byte that carries information about that specific character.

It is used for extensions to the algorithm. The compressed data described above begins immediately after thi...