72 lines
2.1 KiB
Plaintext
72 lines
2.1 KiB
Plaintext
/** \page libcaca-font The libcaca font format (version 1)
|
|
|
|
All types are big endian.
|
|
|
|
\code
|
|
struct
|
|
{
|
|
magic:
|
|
uint8_t caca_header[2]; // "\xCA\xCA"
|
|
uint8_t caca_file_type[2]; // "FT"
|
|
|
|
font_header:
|
|
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
|
|
|
|
block_info:
|
|
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];
|
|
|
|
glyph_info:
|
|
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
|
|
};
|
|
\endcode
|
|
|
|
*/
|