Space Quest V Font

From ModdingWiki
Jump to navigation Jump to search
Space Quest V Font
There is no image of a font in this format — upload one!
Format typeFont
Max glyph count256
Minimum glyph size (pixels)0×0
Maximum glyph size (pixels)255×255
Access modeIndexed
Metadata?None
Bitmap glyphs?Yes
Vector glyphs?No
Compressed glyphs?No
Hidden data?Yes
Games

While Space Quest V is a Sierra/Dynamix game, its font format does not resemble the older fonts in any way; there is no "FNT:" header and no header arrays for the font dimensions, and it does not support 8-bit graphics. For that reason, it is not classified as v7, but simply as "Space Quest V font".

The font is a 1-bpp font with a header that, besides some general formatting and identifying bytes, contains three UINT16LE values; one that is always 0 but which may be the start symbol, another that specifies the amount of symbols, and a third that more or less corresponds to the font's height.

It has an index referencing all the symbol data. Each block of symbol data is comprised of two bytes indicating the width and height, followed by the actual 1-bpp image data.

Header

Offset Data type Name Description
0x00 UINT8 FileId Identifying byte. Always 0x87.
0x01 UINT8 HeaderStart Start of the header data, relative to the pointer after reading the two previous bytes. Seems to always be set to 0x20, making the actual header start at 0x22.
0x02 UINT8[HeaderStart] Junk For some reason the header skips 20 bytes here. The data in this part appears to be a cut-off duplicate of the real data at offset 0x22. It has not been tested whether the game reads the three header values from this version or from the later one, but given the fact the symbols index is relative to the start of the header data at 0x22, and starts 0x06 bytes after that, this is probably just junk. Still, to be sure, you could duplicate the three values below at this position when writing the format.
0x02+HeaderStart UINT16LE StartSymbol? May be the start symbol, but it's 0x00 in all existing fonts. Needs testing.
0x02+HeaderStart+0x02 UINT16LE NrOfSymbols Number of symbols. Is 0x80 in all official fonts, but can probably be changed.
0x02+HeaderStart+0x04 UINT16LE Height? Unsure. This usually more or less corresponds to the maximum height found in the font, but in some cases there are symbols with a larger height. It does not appear to be a "base line" Y-offset; the value never matches the most common lowest pixel Y coordinate of the characters.
0x02+HeaderStart+0x06 UINT16LE[NrOfSymbols] SymbolsIndex Index of offsets for the actual symbol data. The offsets are relative to the start point of the header, meaning 0x02+HeaderStart needs to be added to each value.

As with any format that references its data through an index, duplicate symbols can be removed from the data to save space.

Symbol data

The symbol data, as referenced by the symbols index, contains blocks in the following format:

Offset Data type Name Description
0x00 UINT8 SymbolWidth Symbol width.
0x04 UINT8 SymbolHeight Symbol height.
0x08 BYTE[] SymbolData Symbol data. Each line should have a stride of stride = ((SymbolWidth + 7) / 8) bytes long, making the full size of a symbol data block stride * SymbolHeight.

Tools

The following tools are able to work with files in this format.

Name PlatformView images in this format? Convert/export to another file/format? Import from another file/format? Access hidden data? Edit metadata? Notes
Westwood Font Editor WindowsYesYesYesNoN/A