4. API Specification

/* Font handle */
typedef struct d3tui_font d3tui_font_t;

/* Load a font from file */
d3tui_font_t *d3tui_font_load(const char *path);

/* Load a font from memory */
d3tui_font_t *d3tui_font_load_mem(const uint8_t *data, size_t size);

/* Unload a font */
void d3tui_font_free(d3tui_font_t *font);

/* Get font metrics */
void d3tui_font_get_metrics(const d3tui_font_t *font,
                            uint16_t *cell_w, uint16_t *cell_h,
                            uint16_t *line_height);

/* Get glyph metrics */
bool d3tui_font_get_glyph(const d3tui_font_t *font, uint32_t codepoint,
                         int16_t *x, int16_t *y,
                         uint16_t *w, uint16_t *h,
                         int16_t *bearing_x, int16_t *bearing_y,
                         uint16_t *advance);

/* Get texture information */
pvr_ptr_t d3tui_font_get_texture(const d3tui_font_t *font);
void d3tui_font_get_tex_size(const d3tui_font_t *font,
                             uint16_t *w, uint16_t *h);

/* Get texture coordinates for a character */
bool d3tui_font_get_tex_coords(const d3tui_font_t *font, uint32_t codepoint,
                              float *u0, float *v0, float *u1, float *v1);