| @@ -18,8 +18,8 @@ | |||
| */ | |||
| /* | |||
| * The libcaca font format | |||
| * ----------------------- | |||
| * The libcaca font format, version 1 | |||
| * ---------------------------------- | |||
| * | |||
| * All types are big endian. | |||
| * | |||
| @@ -28,33 +28,55 @@ | |||
| * uint8_t caca_header[4]; // "CACA" | |||
| * uint8_t caca_file_type[4]; // "FONT" | |||
| * | |||
| * header: | |||
| * uint32_t header_size; // size of the header (data - header) | |||
| * uint16_t version; // font format version (= 1) | |||
| * font_header: | |||
| * uint32_t header_size; // Header size (font_data - font_header) | |||
| * uint32_t data_size; // Data size (EOF - font_data) | |||
| * | |||
| * uint16_t glyphs; // total number of glyphs in the font | |||
| * uint16_t width; // glyph width | |||
| * uint16_t height; // glyph height | |||
| * uint16_t bytes; // bytes used to code each character, | |||
| * // rounded up to a multiple of 2. | |||
| * 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 | |||
| * 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; // Maximum glyph width | |||
| * uint16_t height; // 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 character | |||
| * uint32_t end; // Unicode index of the last character + 1 | |||
| * uint32_t offset; // Offset (starting from data) to the data | |||
| * // for the first character | |||
| * uint32_t start; // Unicode index of the first glyph | |||
| * uint32_t end; // Unicode index of the last glyph + 1 | |||
| * uint32_t info_offset; // Offset (starting from data) to the info | |||
| * // for the first glyph | |||
| * } | |||
| * block_list[blocks]; | |||
| * | |||
| * padding: | |||
| * 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]; | |||
| * | |||
| * extension_1: | |||
| * extension_2: | |||
| * ... | |||
| * extension_N: | |||
| * ... // reserved for future use | |||
| * | |||
| * data: | |||
| * uint4_t[glyphs * bytes]; // glyph data | |||
| * font_data: | |||
| * uint8_t data[data_size]; // glyph data | |||
| * }; | |||
| * | |||
| */ | |||