libcaca  0.99.beta19
About: libcaca is a graphics library that outputs text instead of pixels, so that it can work on older video cards or text terminals (something like an advanced AAlib library).
  Fossies Dox: libcaca-0.99.beta19.tar.gz  ("inofficial" and yet experimental doxygen-generated source code documentation)  

The libcaca font format (version 1)

All types are big endian.

struct
{
magic:
uint8_t caca_header[2]; // "\xCA\xCA"
uint8_t caca_file_type[2]; // "FT"
uint32_t control_size; // Control size (font_data - font_header)
uint32_t data_size; // Data size (EOF - font_data)
uint16_t version; // Font format version
// bit 0: set to 1 if font is compatible
// with version 1 of the format
// bits 1-15: unused yet, must be 0
uint16_t blocks; // Number of blocks in the font
uint32_t glyphs; // Total number of glyphs in the font
uint16_t bpp; // Bits per pixel for glyph data (valid
// Values are 1, 2, 4 and 8)
uint16_t width; // Standard glyph width
uint16_t height; // Standard glyph height
uint16_t maxwidth; // Maximum glyph width
uint16_t maxheight; // Maximum glyph height
uint16_t flags; // Feature flags
// bit 0: set to 1 if font is fixed width
// bits 1-15: unused yet, must be 0
struct
{
uint32_t start; // Unicode index of the first glyph
uint32_t stop; // Unicode index of the last glyph + 1
uint32_t index; // Glyph info index of the first glyph
}
block_list[blocks];
struct
{
uint16_t width; // Glyph width in pixels
uint16_t height; // Glyph height in pixels
uint32_t data_offset; // Offset (starting from data) to the data
// for the first character
}
glyph_list[glyphs];
control_extension_1:
control_extension_2:
...
control_extension_N:
... // reserved for future use
font_data:
uint8_t data[data_size]; // glyph data
data_extension_1:
data_extension_2:
...
data_extension_N:
... // reserved for future use
};
glyph::data_size
unsigned int data_size
Definition: makefont.c:76
setup.version
version
Definition: setup.py:21
font_header
Definition: font.c:37
glyph::data_offset
unsigned int data_offset
Definition: makefont.c:74
glyph_info
Definition: font.c:50
block_info
Definition: font.c:45