libcaca-font(3caca)

πŸ’– NAME πŸ’–

okay so bestie, this is the 3caca manual page for libcaca-font β€” literally the libcaca font format, version 1. It’s the blueprint for font files, and all types are big endian (yes, every single one, no cap πŸ¦‹). The whole struct is below, and every field, comment, bit note, and reserved extension slot is staying right where it belongs. πŸ’…

       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
       };

and that’s the vibe, bestie β€” version 1 font format, fully big endian, extensions reserved for future use, no details missing. πŸ’– This libcaca page is Version 0.99.beta20, dated Wed May 13 2026 09:45:08. 🫢✨

πŸ“¦ where this page comes from